diff --git a/docs/development/localization.md b/docs/development/localization.md index 2ff7af42b..1f082f3a5 100644 --- a/docs/development/localization.md +++ b/docs/development/localization.md @@ -43,6 +43,7 @@ About the interface: - basedpyright is maintained by developers who only speak English, so it would be helpful if you could get someone who also speaks your language to review your changes as well. - new rules that are specific to basedpyright currently do not have any translations at all (see [this issue](https://github.com/DetachHead/basedpyright/issues/81)). Providing translations for those would be greatly appreciated. - The initial translations from Pyright seem to be pretty low quality and low consistency. If you want to start a "renovation" for a particular language, it's a good idea to come up with a glossary of common terms so that the final translations will be consistent. Check if the https://docs.python.org has a translation for your language, and if it does, use that as a baseline. +- Some messages in the English localization file contain a `"comment"` field with formal specifiers like `Locked` and `StrContains`. Use your judgement as to whether they should be followed. It's usually better to apply common sense and the language-specific glossary to decide to which parts of the string should be translated. ## Specific languages @@ -63,6 +64,7 @@ About the interface: | Type annotation | Аннотация типа | | Comprehension | Включение | | set (встроенный тип) | Множество | +| tuple | Кортеж | | Type variable | Переменная типа | | Final | `Final` (как есть) | | @final / final class | `@final` (как есть) | @@ -77,6 +79,9 @@ About the interface: | awaitable | awaitable (нет перевода) или: поддерживающий await | | positional-only | только позиционный | | keyword-only | только именованный | +| generic | обобщенный | +| type alias | псевдоним типа | +| generic type alias | обобщенный псевдоним типа | ### Chinese diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index f1366eed4..5ad11c1a0 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -1,7 +1,7 @@ { "CodeAction": { - "createTypeStub": "Создать Stub типа", - "createTypeStubFor": "Создать Stub типа для \"{moduleName}\"", + "createTypeStub": "Создать stub", + "createTypeStubFor": "Создать stub для \"{moduleName}\"", "executingCommand": "Производится выполнение команды", "filesToAnalyzeCount": "{count} файлов для анализа", "filesToAnalyzeOne": "1 файл для анализа", @@ -61,7 +61,7 @@ "bindTypeMismatch": "Невозможно привязать метод \"{methodName}\", \"{type}\" не может быть присвоен параметру \"{paramName}\"", "breakInExceptionGroup": "Запрещено наличие \"break\" в блоке \"except*\"", "breakOutsideLoop": "\"break\" можно использовать только внутри цикла", - "bytesUnsupportedEscape": "Неподдерживаемая escape-последовательность в литерале bytes", + "bytesUnsupportedEscape": "Неподдерживаемая последовательность экранирования в литерале bytes", "callableExtraArgs": "В \"Callable\" ожидается только два аргумента типа", "callableFirstArg": "Ожидается список типов параметров или \"...\"", "callableNotInstantiable": "Невозможно создать экземпляр типа \"{type}\"", @@ -75,7 +75,7 @@ "classNotRuntimeSubscriptable": "Индексация класса \"{name}\" вызовет исключение; заключите аннотацию типа в кавычки", "classPatternBuiltInArgPositional": "Шаблон класса принимает только позиционный вложенный шаблон", "classPatternPositionalArgCount": "Слишком много позиционных шаблонов для класса \"{type}\"; ожидается {expected}, но получено {received}", - "classPatternTypeAlias": "\"{type}\" нельзя использовать в шаблоне класса, поскольку это псевдоним специализированного типа", + "classPatternTypeAlias": "\"{type}\" нельзя использовать в шаблоне класса, поскольку это специализированный псевдоним типа", "classPropertyDeprecated": "Свойства класса не рекомендуются начиная с Python 3.11 и не будут поддерживаться в Python 3.13", "classTypeParametersIllegal": "Синтаксис параметра типа класса может использоваться в Python версии не ниже 3.12.", "classVarFirstArgMissing": "Ожидается аргумент типа после \"ClassVar\"", @@ -113,7 +113,7 @@ "dataClassPostInitType": "Тип параметра метода __post_init__ в классе данных не соответствует типу поля \"{fieldName}\"", "dataClassSlotsOverwrite": "__slots__ уже определен в классе", "dataClassTransformExpectedBoolLiteral": "Ожидается выражение, статически вычисляемое как True или False", - "dataClassTransformFieldSpecifier": "Ожидается tuple классов или функций, но получен тип \"{type}\"", + "dataClassTransformFieldSpecifier": "Ожидается кортеж классов или функций, но получен тип \"{type}\"", "dataClassTransformPositionalParam": "Все аргументы \"dataclass_transform\" должны быть именованные", "dataClassTransformUnknownArgument": "Аргумент \"{name}\" не поддерживается в dataclass_transform", "dataProtocolInSubclassCheck": "Протоколы с атрибутами (отличными от методов) запрещены в вызовах issubclass. Во время выполнения программы нельзя определить, какие атрибуты будет содержать экземпляр класса", @@ -151,15 +151,15 @@ "duplicatePositionOnly": "Разрешен только один параметр \"/\"", "duplicateStarPattern": "В последовательности шаблонов допускается только один шаблон \"*\"", "duplicateStarStarPattern": "Допускается только одна запись \"**\"", - "duplicateUnpack": "В list разрешена только одна операция распаковки", - "ellipsisAfterUnpacked": "\"...\" не может использоваться с распакованным элементом TypeVarTuple или tuple", + "duplicateUnpack": "В списке разрешена только одна операция распаковки", + "ellipsisAfterUnpacked": "\"...\" не может использоваться с распакованным TypeVarTuple или кортежем", "ellipsisContext": "\"...\" не допускается в данном контексте", "ellipsisSecondArg": "\"...\" разрешается только в качестве второго из двух аргументов", "enumClassOverride": "Перечисление \"{name}\" не может иметь производных классов", "enumMemberDelete": "Нельзя удалить элемент перечисления \"{name}\"", "enumMemberSet": "Нельзя изменить элемент перечисления \"{name}\"", "enumMemberTypeAnnotation": "Аннотации типов не разрешены для элементов перечисления", - "exceptGroupMismatch": "Оператор Try не может одновременно включать \"except\" и \"except*\"", + "exceptGroupMismatch": "Блок `try` не может одновременно включать \"except\" и \"except*\"", "exceptGroupRequiresType": "Для синтаксиса группы исключений (\"except*\") требуется тип исключения", "exceptionGroupIncompatible": "Синтаксис группы исключений (\"except*\") можно использовать в Python версии не ранее 3.11", "exceptionGroupTypeIncorrect": "Тип исключения в except* не может быть производным от BaseGroupException", @@ -238,7 +238,7 @@ "functionInConditionalExpression": "В качестве условия используется функция, поэтому оно всегда удовлетворяется", "functionTypeParametersIllegal": "Для синтаксиса параметра типа функции требуется версия Python 3.12 или более новая", "futureImportLocationNotAllowed": "Импорты из __future__ должны находиться в начале файла", - "generatorAsyncReturnType": "Тип возвращаемого значения функции генератора async должен быть совместим с \"AsyncGenerator[{yieldType}, Any]\"", + "generatorAsyncReturnType": "Возвращаемый тип асинхронной генераторной функции должен быть совместим с \"AsyncGenerator[{yieldType}, Any]\"", "generatorNotParenthesized": "Выражения генератора следует взять в скобки, если аргументов больше одного", "generatorSyncReturnType": "Возвращаемый тип функции генератора должен быть совместим с \"Generator[{yieldType}, Any, Any]\"", "genericBaseClassNotAllowed": "Базовый класс \"Generic\" нельзя использовать с синтаксисом параметра типа", @@ -246,12 +246,12 @@ "genericClassDeleted": "del нельзя использовать с универсальным классом", "genericInstanceVariableAccess": "Доступ к универсальной переменной экземпляра через класс неоднозначный", "genericNotAllowed": "\"Generic\" недопустимо в этом контексте", - "genericTypeAliasBoundTypeVar": "Псевдоним универсального типа в классе не может использовать привязанные переменные типа {names}", + "genericTypeAliasBoundTypeVar": "Универсальный псевдоним типа в классе не может использовать привязанные переменные типа {names}", "genericTypeArgMissing": "Для \"Generic\" требуется по крайней мере один аргумент типа", "genericTypeArgTypeVar": "Аргумент типа для \"Generic\" должен быть переменной типа", "genericTypeArgUnique": "Аргументы типа для \"Generic\" должны быть уникальными", - "globalReassignment": "Присвоение \"{name}\" происходит раньше global объявления", - "globalRedefinition": "Имя \"{name}\" уже объявлено ранее как global", + "globalReassignment": "Присвоение \"{name}\" происходит раньше объявления \"global\"", + "globalRedefinition": "Имя \"{name}\" уже объявлено глобальным ранее", "implicitStringConcat": "Неявное объединение строк не разрешено", "importCycleDetected": "Обнаружен цикл в цепочке импорта", "importDepthExceeded": "Глубина цепочки импорта превысила {depth}", @@ -274,13 +274,13 @@ "internalParseError": "При разборе файла \"{file}\" произошла внутренняя ошибка: {message}", "internalTypeCheckingError": "При проверке файла \"{file}\" произошла внутренняя ошибка: {message}", "invalidIdentifierChar": "Недопустимый символ в идентификаторе", - "invalidStubStatement": "Инструкция не имеет смысла в файле stub типа", + "invalidStubStatement": "Инструкция не имеет смысла в stub-файле", "invalidTokenChars": "Недопустимый символ \"{text}\" в маркере", "isInstanceInvalidType": "Второй аргумент \"isinstance\" должен быть классом или кортежем классов", "isSubclassInvalidType": "Второй аргумент в \"issubclass\" должен быть классом или кортежем классов", "keyValueInSet": "Пары ключ-значение не допускаются в множестве", "keywordArgInTypeArgument": "Именованные аргументы нельзя использовать в списках аргументов типа", - "keywordArgShortcutIllegal": "Ярлык аргумента ключевого слова требует Python 3.14 или более поздней версии", + "keywordArgShortcutIllegal": "Укороченная передача именованных аргументов требует Python 3.14 или позже", "keywordOnlyAfterArgs": "Разделитель аргументов типа \"только именованные\" не разрешен после параметра \"*\"", "keywordParameterMissing": "За параметром \"*\" должен следовать один или несколько именованных параметров", "keywordSubscriptIllegal": "Именованные аргументы не поддерживаются при индексации", @@ -308,7 +308,7 @@ "methodOverridden": "\"{name}\" переопределяет метод с тем же именем в классе \"{className}\" с несовместимым типом \"{type}\"", "methodReturnsNonObject": "Метод \"{name}\" не возвращает объект", "missingSuperCall": "Метод \"{methodName}\" не вызывает метод с тем же именем в родительском классе", - "mixingBytesAndStr": "Невозможно объединить bytes и str значения", + "mixingBytesAndStr": "В данном контексте нельзя совмещать \"bytes\" и \"str\"", "moduleAsType": "Модуль не может использоваться в качестве типа", "moduleNotCallable": "Модуль не является вызываемым", "moduleUnknownMember": "\"{memberName}\" не является известным атрибутом модуля \"{moduleName}\"", @@ -322,7 +322,7 @@ "namedTupleNameType": "Ожидается кортеж с двумя элементами: именем и типом поля", "namedTupleNameUnique": "Имена внутри именованного кортежа должны быть уникальными", "namedTupleNoTypes": "\"namedtuple\" не предоставляет типов для записей кортежа; используйте вместо него \"NamedTuple\"", - "namedTupleSecondArg": "В качестве второго аргумента ожидается именованный list записей tuple", + "namedTupleSecondArg": "В качестве второго аргумента \"NamedTuple\" ожидается список", "newClsParam": "Переопределение метода __new__ должно принимать параметр \"cls\"", "newTypeAnyOrUnknown": "Второй аргумент для NewType не может быть \"Any\" или \"Unknown\"", "newTypeBadName": "Первый аргумент NewType должен быть строковым литералом", @@ -332,7 +332,7 @@ "newTypeParamCount": "Для NewType требуются два позиционных аргумента", "newTypeProtocolClass": "NewType нельзя использовать со структурным типом (класс Protocol или TypedDict)", "noOverload": "Не существует перегрузок для \"{name}\", соответствующих указанным аргументам", - "noReturnContainsReturn": "Функция с объявленным типом return значения \"NoReturn\" не может содержать инструкцию return", + "noReturnContainsReturn": "Функция с объявленным типом возвращаемого значения \"NoReturn\" не может содержать инструкцию return", "noReturnContainsYield": "Функция с объявленным типом возвращаемого значения \"NoReturn\" не может содержать инструкцию yield", "noReturnReturnsNone": "Функция с объявленным типом возвращаемого значения \"NoReturn\" не может возвращать \"None\"", "nonDefaultAfterDefault": "Аргументы со значением по умолчанию должны идти последними", @@ -343,8 +343,7 @@ "noneNotCallable": "Объект типа \"None\" не может быть вызван", "noneNotIterable": "Объект типа \"None\" не может использоваться в качестве итерируемого значения", "noneNotSubscriptable": "Объект типа \"None\" нельзя индексировать", - "noneNotUsableWith": "Object of type \"None\" cannot be used with \"with\"", - "noneNotUsableWithAsync": "Object of type \"None\" cannot be used with \"async with\"", + "noneNotUsableWith": "Объект \"None\" нельзя использовать в блоке \"with\"", "noneOperator": "Оператор \"{operator}\" не поддерживается для \"None\"", "noneUnknownMember": "У объекта \"None\" нет атрибута \"{name}\"", "notRequiredArgCount": "После \"NotRequired\" ожидается один аргумент типа", @@ -362,9 +361,11 @@ "orPatternMissingName": "Все вложенные шаблоны в шаблоне \"or\" должны быть привязаны к одним и тем же именам", "overlappingKeywordArgs": "Типизированный словарь перекрывается с именованным параметром: {names}", "overlappingOverload": "Перегрузка {obscured} для \"{name}\" никогда не будет использоваться, она перкрывается перегрузкой {obscuredBy}", - "overloadAbstractImplMismatch": "Перегрузки должны соответствовать абстрактному статусу реализации", - "overloadAbstractMismatch": "Все перегрузки должны быть абстрактными или не абстрактными", + "overloadAbstractImplMismatch": "Перегрузки должны быть абстрактными, если метод абстрактный, и наоборот.", + "overloadAbstractMismatch": "Все перегрузки должны быть абстрактными или конкретными", "overloadClassMethodInconsistent": "Перегрузки для \"{name}\" используют @classmethod несогласованно", + "overloadFinalInconsistencyImpl": "Перегрузка для \"{name}\" помечена как `@final`, но реализация — нет", + "overloadFinalInconsistencyNoImpl": "Перегрузка {index} для \"{name}\" помечена как `@final`, но перегрузка 1 — нет", "overloadImplementationMismatch": "Перегруженная реализация не согласована с сигнатурой перегрузки {index}", "overloadReturnTypeMismatch": "Перегрузка {prevIndex} для \"{name}\" перекрывает перегрузку {newIndex} и возвращает несовместимый тип", "overloadStaticMethodInconsistent": "Перегрузки для \"{name}\" используют @staticmethod несогласованно", @@ -376,13 +377,13 @@ "paramAnnotationMissing": "Отсутствует аннотация типа для параметра \"{name}\"", "paramAssignmentMismatch": "Выражение типа \"{sourceType}\" не может быть присвоено параметру типа \"{paramType}\"", "paramNameMissing": "Параметра с именем \"{name}\" не существует", - "paramSpecArgsKwargsDuplicate": "Аргументы для \"{type}\" ParamSpec уже предоставлены", + "paramSpecArgsKwargsDuplicate": "Аргументы для ParamSpec \"{type}\" уже предоставлены", "paramSpecArgsKwargsUsage": "Атрибуты \"args\" и \"kwargs\" ParamSpec должны одновременно присутствовать в сигнатуре функции", "paramSpecArgsMissing": "Отсутствуют аргументы для \"{type}\" ParamSpec", "paramSpecArgsUsage": "Атрибут \"args\" ParamSpec допустим только при использовании с параметром *args", "paramSpecAssignedName": "ParamSpec необходимо присвоить переменной с именем \"{name}\"", "paramSpecContext": "ParamSpec не допускается в этом контексте", - "paramSpecDefaultNotTuple": "Для значения ParamSpec по умолчанию ожидается многоточие, выражение tuple или ParamSpec", + "paramSpecDefaultNotTuple": "Для значения ParamSpec по умолчанию ожидается многоточие, кортеж или ParamSpec", "paramSpecFirstArg": "Ожидается имя ParamSpec в качестве первого аргумента", "paramSpecKwargsUsage": "Атрибут \"kwargs\" ParamSpec допустим только при использовании с параметром **kwargs", "paramSpecNotUsedByOuterScope": "ParamSpec \"{name}\" не имеет смысла в этом контексте", @@ -392,10 +393,9 @@ "paramTypeCovariant": "Ковариантную переменную типа нельзя использовать в типе параметра", "paramTypePartiallyUnknown": "Тип параметра \"{paramName}\" частично неизвестен", "paramTypeUnknown": "Тип параметра \"{paramName}\" неизвестен", - "parenthesizedContextManagerIllegal": "Parentheses within \"with\" statement requires Python 3.9 or newer", + "parenthesizedContextManagerIllegal": "Скобки в блоке \"with\" требуют версию Python 3.9 или позже", "patternNeverMatches": "Шаблон никогда не будет совпадать для типа субъекта \"{type}\"", "positionArgAfterNamedArg": "Позиционный аргумент не может стоять после именованных аргументов", - "positionArgAfterUnpackedDictArg": "Positional argument cannot appear after keyword argument unpacking", "positionOnlyAfterArgs": "Разделитель только позиционных параметров после параметра \"*\" не разрешен", "positionOnlyAfterKeywordOnly": "Параметр \"/\" должен располагаться перед параметром \"*\"", "positionOnlyAfterNon": "Только позиционный параметр не разрешен после параметра, который можно указывать по имени", @@ -405,17 +405,17 @@ "privateUsedOutsideOfClass": "Элемент \"{name}\" приватный, но используется вне класса, в котором объявлен", "privateUsedOutsideOfModule": "Элемент \"{name}\" приватный, но используется вне модуля, в котором объявлен", "propertyOverridden": "\"{name}\" неправильно переопределяет property с таким же именем в классе \"{className}\"", - "propertyStaticMethod": "Статические методы не разрешены в методах getter, setter и deleter property", + "propertyStaticMethod": "Статические методы не разрешены в методах getter, setter и deleter у property", "protectedUsedOutsideOfClass": "\"{name}\" защищено и используется вне класса, в котором оно объявлено", - "protocolBaseClass": "Класс Protocol \"{classType}\" не может быть производным от класса \"{baseType}\", отличного от Protocol", + "protocolBaseClass": "Класс-протокол \"{classType}\" не может быть производным от класса \"{baseType}\" — не протокола", "protocolBaseClassWithTypeArgs": "Аргументы типа не допускаются с классом Protocol при использовании синтаксиса параметра типа", "protocolIllegal": "\"Protocol\" можно использовать в Python версии не ниже 3.7", "protocolNotAllowed": "Невозможно использовать \"Protocol\" в этом контексте", "protocolTypeArgMustBeTypeParam": "Аргумент типа для параметра \"Protocol\" должен быть параметром типа", "protocolUnsafeOverlap": "Класс небезопасно перекрывает \"{name}\" и может вызвать совпадение во время выполнения", - "protocolVarianceContravariant": "Переменная типа \"{variable}\", используемая в универсальном Protocol \"{class}\", должна быть контравариантной.", - "protocolVarianceCovariant": "Переменная типа \"{variable}\", используемая в универсальном Protocol \"{class}\", должна быть ковариантной", - "protocolVarianceInvariant": "Переменная типа \"{variable}\", используемая в универсальном Protocol \"{class}\", должна быть инвариантной", + "protocolVarianceContravariant": "Переменная типа \"{variable}\", используемая в обобщенном протоколе \"{class}\", должна быть контравариантной.", + "protocolVarianceCovariant": "Переменная типа \"{variable}\", используемая в обобщенном протоколе \"{class}\", должна быть ковариантной", + "protocolVarianceInvariant": "Переменная типа \"{variable}\", используемая в обобщенном протоколе \"{class}\", должна быть инвариантной", "pyrightCommentInvalidDiagnosticBoolValue": "За директивой комментария Pyright должно следовать \"=\" и значение true или false", "pyrightCommentInvalidDiagnosticSeverityValue": "За директивой комментария Pyright должно следовать \"=\" и одно из следующих значений: true, false, error, warning, information или none", "pyrightCommentMissingDirective": "После комментария Pyright должна следовать директива (basic или strict) или правило диагностики", @@ -429,16 +429,16 @@ "relativeImportNotAllowed": "Операции импорта с относительным путем нельзя использовать с формой \"import .a\"; используйте вместо этого \"from . import a\"", "requiredArgCount": "Ожидается один аргумент типа после \"Required\"", "requiredNotInTypedDict": "Использование \"Required\" в этом контексте не допускается", - "returnInAsyncGenerator": "Оператор return со значением не допускается в генераторе async", + "returnInAsyncGenerator": "Оператор return со значением не допускается в асинхронном генераторе", "returnInExceptionGroup": "Запрещено наличие \"return\" в блоке \"except*\"", "returnMissing": "Функция с объявленным типом возвращаемого значения \"{returnType}\" должна возвращать значение во всех путях кода", "returnOutsideFunction": "\"return\" можно использовать только внутри функции", "returnTypeContravariant": "Переменная контравариантного типа не может использоваться в возвращаемом типе", - "returnTypeMismatch": "Тип \"{exprType}\" не может быть присвоен для возврата типа \"{returnType}\"", + "returnTypeMismatch": "Выражение типа \"{exprType}\" несовместимо с возвращаемым типом \"{returnType}\"", "returnTypePartiallyUnknown": "Тип возвращаемого значения \"{returnType}\" частично неизвестен", "returnTypeUnknown": "Тип возвращаемого значения неизвестен", "revealLocalsArgs": "Не ожидаются аргументы для вызова \"reveal_locals\"", - "revealLocalsNone": "В этой области нет locals", + "revealLocalsNone": "В этой области нет локальных переменных", "revealTypeArgs": "Для вызова \"reveal_type\" ожидается один позиционный аргумент", "revealTypeExpectedTextArg": "Аргумент \"expected_text\" для функции \"reveal_type\" должен быть строковым литералом", "revealTypeExpectedTextMismatch": "Несоответствие текста в типе; ожидалось \"{expected}\", но получено \"{received}\"", @@ -488,16 +488,16 @@ "typeAliasTypeMustBeAssigned": "TypeAliasType должен быть присвоен переменной с тем же именем, что и псевдоним типа", "typeAliasTypeNameArg": "Первый аргумент TypeAliasType должен быть строковым литералом, представляющим имя псевдонима типа", "typeAliasTypeNameMismatch": "Имя псевдонима типа должно соответствовать имени переменной, которой он присвоен", - "typeAliasTypeParamInvalid": "Список параметров типа должен быть tuple, содержащим только TypeVar, TypeVarTuple или ParamSpec", + "typeAliasTypeParamInvalid": "Список параметров типа должен быть кортежем, содержащим только TypeVar, TypeVarTuple или ParamSpec", "typeAnnotationCall": "Выражение вызова не разрешено в выражении типа", "typeAnnotationVariable": "Переменная не разрешена в выражении типа", "typeAnnotationWithCallable": "Аргумент типа для \"type\" должен быть классом. Вызываемые объекты не поддерживаются", - "typeArgListExpected": "Ожидается ParamSpec, многоточие или list типов", - "typeArgListNotAllowed": "Выражение list не разрешено для аргумента этого типа", + "typeArgListExpected": "Ожидается ParamSpec, многоточие или список типов", + "typeArgListNotAllowed": "Список не разрешен для аргумента этого типа", "typeArgsExpectingNone": "Для класса \"{name}\" не ожидается аргументов типа", "typeArgsMismatchOne": "Ожидается один аргумент типа, но получено {received}", - "typeArgsMissingForAlias": "Для псевдонима универсального типа \"{name}\" ожидаются аргументы типа", - "typeArgsMissingForClass": "Ожидаются аргументы типа для универсального класса \"{name}\"", + "typeArgsMissingForAlias": "Для обобщенного псевдонима типа \"{name}\" ожидаются аргументы типа", + "typeArgsMissingForClass": "Ожидаются аргументы типа для обобщенного класса \"{name}\"", "typeArgsTooFew": "Указано слишком мало аргументов типа для \"{name}\"; ожидалось {expected}, но получено {received}", "typeArgsTooMany": "Для \"{name}\" предоставлено слишком много аргументов типа. Ожидается {expected}, но получено {received}", "typeAssignmentMismatch": "Выражение типа \"{sourceType}\" несовместимо с объявленным типом \"{destType}\"", @@ -519,8 +519,7 @@ "typeNotSupportBinaryOperatorBidirectional": "Оператор \"{operator}\" не поддерживается для типов \"{leftType}\" и \"{rightType}\", если ожидаемый тип является \"{expectedType}\"", "typeNotSupportUnaryOperator": "Оператор \"{operator}\" не поддерживается для типа \"{type}\"", "typeNotSupportUnaryOperatorBidirectional": "Оператор \"{operator}\" не поддерживается для типа \"{type}\", если ожидается тип \"{expectedType}\"", - "typeNotUsableWith": "Object of type \"{type}\" cannot be used with \"with\" because it does not correctly implement {method}", - "typeNotUsableWithAsync": "Object of type \"{type}\" cannot be used with \"async with\" because it does not correctly implement {method}", + "typeNotUsableWith": "Объект типа \"{type}\" нельзя использовать с ключевым словом \"with\", так как он не реализует метод {method}", "typeParameterBoundNotAllowed": "Привязку или ограничение нельзя использовать с параметром типа variadic или ParamSpec", "typeParameterConstraintTuple": "Ограничение параметра типа должно быть кортежем двух или более типов", "typeParameterExistingTypeParameter": "Параметр типа \"{name}\" уже используется", @@ -531,14 +530,14 @@ "typeVarAssignedName": "TypeVar необходимо присвоить переменной с именем \"{name}\"", "typeVarAssignmentMismatch": "Тип \"{type}\" не может быть присвоен переменной типа \"{name}\"", "typeVarBoundAndConstrained": "TypeVar не может быть одновременно привязанным и ограниченным", - "typeVarBoundGeneric": "Тип привязки TypeVar не может быть универсальным", - "typeVarConstraintGeneric": "Тип ограничения TypeVar не может быть универсальным", + "typeVarBoundGeneric": "Тип привязки TypeVar не может быть обобщенным", + "typeVarConstraintGeneric": "Тип ограничения TypeVar не может быть обобщенным", "typeVarDefaultBoundMismatch": "Тип по умолчанию TypeVar должен быть подтипом привязанного типа", "typeVarDefaultConstraintMismatch": "Тип по умолчанию TypeVar должен быть одним из ограниченных типов", "typeVarDefaultIllegal": "Для типов переменных по умолчанию требуется версия Python 3.13 или более новая", "typeVarDefaultInvalidTypeVar": "Параметр типа \"{name}\" имеет тип по умолчанию, который ссылается на одну или несколько переменных типа, находящихся вне области", "typeVarFirstArg": "В качестве первого аргумента ожидалось имя TypeVar", - "typeVarInvalidForMemberVariable": "Тип атрибута не может использовать переменную \"{name}\" в локальном методе", + "typeVarInvalidForMemberVariable": "Тип атрибута не может использовать переменную \"{name}\" из локального метода", "typeVarNoMember": "У TypeVar \"{type}\" нет атрибута \"{name}\"", "typeVarNotSubscriptable": "\"{type}\" не поддерживает индексацию, потому что это переменная типа", "typeVarNotUsedByOuterScope": "Переменная типа \"{name}\" не имеет смысла в этом контексте", @@ -546,12 +545,12 @@ "typeVarSingleConstraint": "TypeVar должен иметь не менее двух ограниченных типов", "typeVarTupleConstraints": "TypeVarTuple не может использовать ограничения значений", "typeVarTupleContext": "TypeVarTuple не допускается в этом контексте", - "typeVarTupleDefaultNotUnpacked": "Тип по умолчанию TypeVarTuple должен быть распакованным tuple или TypeVarTuple", + "typeVarTupleDefaultNotUnpacked": "Значение по умолчанию для TypeVarTuple должно быть распакованным кортежем или другим TypeVarTuple", "typeVarTupleMustBeUnpacked": "Для значения TypeVarTuple требуется оператор распаковки", "typeVarTupleUnknownParam": "TypeVarTuple не поддерживает параметр \"{name}\"", "typeVarUnknownParam": "TypeVar не поддерживает параметр \"{name}\"", "typeVarUsedByOuterScope": "TypeVar \"{name}\" уже используется внешней областью", - "typeVarUsedOnlyOnce": "TypeVar \"{name}\" появляется в сигнатуре универсальной функции только один раз", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" появляется в сигнатуре обобщенной функции только один раз", "typeVarVariance": "TypeVar не может быть одновременно ковариантным и контравариантным", "typeVarWithDefaultFollowsVariadic": "TypeVar \"{typeVarName}\" имеет значение по умолчанию и не может следовать за TypeVarTuple \"{variadicName}\"", "typeVarWithoutDefault": "\"{name}\" не может идти после \"{other}\" в списке параметров типа, так как у него нет типа по умолчанию", @@ -576,13 +575,13 @@ "typedDictInClassPattern": "Класс TypedDict не разрешен в шаблоне класса", "typedDictInitsubclassParameter": "TypedDict не поддерживает параметр __init_subclass__ \"{name}\"", "typedDictNotAllowed": "Невозможно использовать \"TypedDict\" в этом контексте", - "typedDictSecondArgDict": "В качестве второго параметра ожидается dict или ключевое слово", + "typedDictSecondArgDict": "После первого аргумента TypedDict ожидается либо словарь, либо именованные аргументы", "typedDictSecondArgDictEntry": "Ожидается простая запись словаря", "typedDictSet": "Нельзя назначить элемент в TypedDict", "unaccessedClass": "Нет доступа к классу \"{name}\"", "unaccessedFunction": "Доступ к функции \"{name}\" не производится", "unaccessedImport": "Доступ к импорту \"{name}\" не производится", - "unaccessedSymbol": "Доступ к \"{name}\" не осуществляется", + "unaccessedSymbol": "\"{name}\" нигде не используется", "unaccessedVariable": "Доступ к переменной \"{name}\" не производится", "unannotatedFunctionSkipped": "Анализ функции \"{name}\" пропущен, так как она не аннотирована.", "unaryOperationNotAllowed": "Унарный оператор нельзя использовать в аннотации типа", @@ -594,10 +593,10 @@ "unhashableSetEntry": "Элементы множества должны быть хэшируемыми", "uninitializedAbstractVariables": "Переменные, определенные в абстрактном базовом классе, не инициализированы в окончательном классе \"{classType}\"", "uninitializedInstanceVariable": "Переменная экземпляра \"{name}\" не инициализирована ни в тексте класса, ни в методе __init__", - "unionForwardReferenceNotAllowed": "Синтаксис Union не может использоваться со строковым операндом; заключите все выражение в кавычки", + "unionForwardReferenceNotAllowed": "Синтаксис объединения не может использоваться со строковым операндом; заключите все выражение в кавычки", "unionSyntaxIllegal": "Альтернативный синтаксис объединений можно использовать в версии Python не ниже 3.10", "unionTypeArgCount": "Для Union требуется два или более аргумента типа", - "unionUnpackedTuple": "Union не может включать распакованный tuple", + "unionUnpackedTuple": "Union не может включать распакованный кортеж", "unionUnpackedTypeVarTuple": "Union не может включать распакованный TypeVarTuple", "unnecessaryCast": "Ненужный вызов \"cast\"; тип уже является \"{type}\"", "unnecessaryIsInstanceAlways": "Ненужный вызов isinstance; \"{testType}\" всегда является экземпляром \"{classType}\"", @@ -625,7 +624,7 @@ "unpackedTypeVarTupleExpected": "Ожидается распакованный TypeVarTuple; используйте Unpack[{name1}] или *{name2}", "unpackedTypedDictArgument": "Распакованный TypedDict не соответсвтует параметрам функции", "unreachableCode": "Код никогда не будет выполнен", - "unreachableCodeType": "Анализ типа показывает, что код недоступен", + "unreachableCodeType": "Код никогда не будет выполнен", "unreachableExcept": "Блок except никогда не выполнится, так как исключение уже обработано", "unsupportedDunderAllOperation": "Операция на \"__all__\" не поддерживается, поэтому список экспортируемых символов может быть неправильным", "unusedCallResult": "Результат выражения вызова принадлежит к типу \"{type}\" и не используется. Присвойте его переменной \"_\", если это сделано намеренно", @@ -635,7 +634,7 @@ "variableFinalOverride": "Переменная \"{name}\" помечена как `Final` и переопределяет не-`Final` переменную с тем же именем в классе \"{className}\"", "variadicTypeArgsTooMany": "Список аргументов типа может содержать не более одного распакованного элемента TypeVarTuple или кортежа", "variadicTypeParamTooManyAlias": "Псевдоним типа может иметь не более одного параметра типа TypeVarTuple, но получил несколько ({names})", - "variadicTypeParamTooManyClass": "Универсальный класс может иметь не более одного параметра типа TypeVarTuple, но получил несколько ({names})", + "variadicTypeParamTooManyClass": "Обобщенный класс может иметь не более одного параметра типа TypeVarTuple, но получил несколько ({names})", "walrusIllegal": "Оператор \":=\" может использоваться в Python версии не ниже 3.8", "walrusNotAllowed": "Оператор \":=\" не допускается в этом контексте без окружающих круглых скобок", "wildcardInFunction": "Импорт со звездочкой в классе или функции запрещен", @@ -647,7 +646,28 @@ "yieldOutsideFunction": "\"yield\" не допускается за пределами функции или лямбда-выражении", "yieldWithinComprehension": "\"yield\" не допускается внутри включения", "zeroCaseStatementsFound": "Оператор match должен включать по крайней мере один оператор case", - "zeroLengthTupleNotAllowed": "tuple нулевой длины не допускается в этом контексте" + "zeroLengthTupleNotAllowed": "Пустой кортеж не допускается в этом контексте", + "argTypeAny": "Тип аргумента — Any", + "baseClassAny": "Тип класса неизвестен, потому что базовый класс имеет тип Any", + "classDecoratorTypeAny": "Тип класса неизвестен, потому что декоратор имеет тип Any", + "classImplicitlyAbstract": "Класс \"{type}\" неявно абстрактный, потому что наследован от абстрактного класса, но не заполнил все абстрактные символы. Если это сделано намеренно, добавьте `ABC` к его родительским классам или используйте `metaclass=ABCMeta`.", + "classImplicitlyProtocol": "Класс \"{type}\" неявно класс-протокол, потом что наследован от класса-протокола, но не заполнил все абстрактные символы. Если это сделано намеренно, добавьте `Protocol` или `ABC` к его родительским классам или используйте `metaclass=ABCMeta`.", + "functionDecoratorTypeAny": "Тип функции неизвестен, потому что декоратор имеет тип Any", + "lambdaReturnTypeAny": "Лямбда-функция возвращает Any", + "noneNotUsableWithAsync": "\"None\" нельзя использовать в блоке \"async with\"", + "paramTypeAny": "Тип параметра \"{paramName}\" — Any", + "positionArgAfterUnpackedDictArg": "Позиционный аргумент не может следовать за распаковкой именованных аргуметов", + "returnTypeAny": "Возвращаемый тип — Any", + "typeNotUsableWithAsync": "Объект типа \"{type}\" нельзя использовать в блоке \"async with\", потому что он не имеет корректного метода {method}", + "typeAny": "Тип \"{name}\" — Any", + "wildcardPatternTypeAny": "Произвольный шаблон захватывает значение типа Any", + "pyrightIgnoreCommentWithoutRule": "Комментарий `pyright: ignore` обязан указывать правило (например `# pyright: ignore[baseClassFinal]`)", + "typeIgnoreCommentWithoutRule": "Комментарий `type: ignore` обязан указывать правило (например `# type: ignore[baseClassFinal]`)", + "implicitRelativeImport": "Импорт из `{importName}` неявно относительный и не будет работать, если этот файл импортирован как модуль", + "invalidCast": "Преобразование из `{fromType}` в `{toType}` может быть ошибочно, ни один тип не покрывает другой достаточно. Если это намеренно, сначала преобразуйте объект в `object`.", + "multipleInheritance": "Множественное наследование не разрешено, потому что следующие классы содержат `__init__` или `__new__`, которые потенциально не будут вызываны: {classes}", + "unannotatedClassAttribute": "Для атрибута `{name}` требуется аннотация, так как класс не помечен как `@final`", + "explicitAny": "Тип `Any` запрещен" }, "DiagnosticAddendum": { "annotatedNotAllowed": "Специальную форму \"Annotated\" нельзя использовать для проверки в isinstance и issubclass", @@ -657,7 +677,7 @@ "argsPositionOnly": "Несоответствие только позиционных параметров. Ожидается {expected}, но получено {received}", "argumentType": "Аргумент принадлежит к типу \"{type}\"", "argumentTypes": "Типы аргументов: ({types})", - "assignToNone": "Для типа не может быть назначено значение \"None\"", + "assignToNone": "Тип не совместим с \"None\"", "asyncHelp": "Вы имели в виду \"async with\"?", "baseClassIncompatible": "Базовый класс \"{baseClass}\" несовместим с типом \"{type}\"", "baseClassIncompatibleSubclass": "Базовый класс \"{baseClass}\" является производным от \"{subclass}\", который несовместим с типом \"{type}\"", @@ -677,7 +697,7 @@ "functionReturnTypeMismatch": "Тип возвращаемого значения функции \"{sourceType}\" несовместим с типом \"{destType}\"", "functionTooFewParams": "Функция принимает слишком мало позиционных параметров; ожидалось {expected}, но получено {received}", "functionTooManyParams": "Функция принимает слишком много позиционных параметров; ожидалось {expected}, но получено {received}", - "genericClassNotAllowed": "Универсальный тип с аргументами типа запрещен для проверок экземпляров или классов", + "genericClassNotAllowed": "Обобщенный тип тип с аргументами типа запрещен для проверок экземпляров или классов", "incompatibleDeleter": "Несовместимый удалятор", "incompatibleGetter": "Несовместимый геттер", "incompatibleSetter": "Несовместимый сеттер", @@ -694,27 +714,27 @@ "keyUndefined": "\"{name}\" не является определенным ключом в \"{type}\"", "kwargsParamMissing": "У параметра \"**{paramName}\" нет соответствующего параметра", "listAssignmentMismatch": "Тип \"{type}\" несовместим с целевым списком", - "literalAssignmentMismatch": "\"{sourceType}\" невозможно назначить тип \"{destType}\"", + "literalAssignmentMismatch": "\"{sourceType}\" невозможно присвоить значению типа \"{destType}\"", "matchIsNotExhaustiveHint": "Если не предполагается исчерпывающая обработка, добавьте \"case _: pass\"", "matchIsNotExhaustiveType": "Тип \"{type}\" не обрабатывается", "memberAssignment": "Выражение типа \"{type}\" не может быть присвоено атрибуту \"{name}\" класса \"{classType}\"", "memberIsAbstract": "Отсутствует реализация \"{type}.{name}\".", "memberIsAbstractMore": "и еще {{count}}...", "memberIsClassVarInProtocol": "\"{name}\" определено как класс ClassVar в протоколе", - "memberIsInitVar": "\"{name}\" является полем только для init-only", + "memberIsInitVar": "\"{name}\" — поле только для инициализации", "memberIsInvariant": "Элемент \"{name}\" инвариантен, поскольку помечен изменяемым", "memberIsNotClassVarInClass": "Необходимо определить \"{name}\" как ClassVar для совместимости с протоколом.", "memberIsNotClassVarInProtocol": "\"{name}\" не определено как класс ClassVar в протоколе", - "memberIsNotReadOnlyInProtocol": "\"{name}\" не является элементом только для чтения в протоколе", + "memberIsNotReadOnlyInProtocol": "\"{name}\" в протоколе позволяет не только чтение, но и запись", "memberIsReadOnlyInProtocol": "\"{name}\" в протоколе только для чтения", "memberIsWritableInProtocol": "\"{name}\" доступно для записи в протоколе", "memberSetClassVar": "Атрибут \"{name}\" не может быть присвоен через экземпляр класса, так как это ClassVar", "memberTypeMismatch": "Тип \"{name}\" несовместим", "memberUnknown": "Атрибут \"{name}\" неизвестен", "metaclassConflict": "Метакласс \"{metaclass1}\" конфликтует с \"{metaclass2}\"", - "missingDeleter": "Отсутствует метод deleter property", - "missingGetter": "Отсутствует метод getter property", - "missingSetter": "Отсутствует метод setter property", + "missingDeleter": "Отсутствует метод deleter у property", + "missingGetter": "Отсутствует метод getter у property", + "missingSetter": "Отсутствует метод setter у property", "namedParamMissingInDest": "Дополнительный параметр \"{name}\"", "namedParamMissingInSource": "Отсутствует именованный параметр \"{name}\".", "namedParamTypeMismatch": "Именованный параметр \"{name}\" типа \"{sourceType}\" несовместим с типом \"{destType}\"", @@ -723,7 +743,7 @@ "newMethodSignature": "Сигнатура метода __new__ требует \"{type}\"", "newTypeClassNotAllowed": "Класс, созданный с NewType, нельзя использовать с проверками экземпляров и классов", "noOverloadAssignable": "Нет перегруженной функции, соответствующей типу \"{type}\"", - "noneNotAllowed": "None невозможно использовать для проверок экземпляров или классов", + "noneNotAllowed": "None невозможно использовать в \"isinstance\" или \"issubclass\".", "orPatternMissingName": "Отсутствуют имена: {name}", "overloadIndex": "Наилучшее совпадение: {index} перегрузки", "overloadNotAssignable": "Одна или несколько перегрузок \"{name}\" не подлежат присвоению", @@ -772,14 +792,14 @@ "seeParameterDeclaration": "См. объявление параметра", "seeTypeAliasDeclaration": "См. объявление псевдонима типа", "seeVariableDeclaration": "См. объявление переменной", - "tupleAssignmentMismatch": "Тип \"{type}\" несовместим с целевым tuple", - "tupleEntryTypeMismatch": "Запись tuple {entry} имеет неверный тип", - "tupleSizeIndeterminateSrc": "Несоответствие размеров tuple: ожидается \"{expected}\", но получено неопределенное значение", - "tupleSizeIndeterminateSrcDest": "Несоответствие размеров tuple: ожидается {expected} или больше, но получено неопределенное значение", - "tupleSizeMismatch": "Несоответствие размеров tuple: ожидается \"{expected}\", но получено \"{received}\"", - "tupleSizeMismatchIndeterminateDest": "Несоответствие размеров tuple: ожидается {expected} или больше, но получено {received}", + "tupleAssignmentMismatch": "Тип \"{type}\" несовместим с целевым кортежем", + "tupleEntryTypeMismatch": "Запись кортежа {entry} имеет неверный тип", + "tupleSizeIndeterminateSrc": "Несоответствие размеров кортежа. Ожидается \"{expected}\", но получено неопределенное значение", + "tupleSizeIndeterminateSrcDest": "Несоответствие размеров кортежей. Ожидается {expected} или больше, но получено неопределенное значение", + "tupleSizeMismatch": "Несоответствие размеров кортежей. Ожидается \"{expected}\", но получено \"{received}\"", + "tupleSizeMismatchIndeterminateDest": "Несоответствие размеров кортежей. Ожидается {expected} или больше, но получено {received}", "typeAliasInstanceCheck": "Псевдоним типа, создаваемый оператором \"type\", не может использоваться с проверками экземпляра и класса.", - "typeAssignmentMismatch": "\"{sourceType}\" типа невозможно назначить тип \"{destType}\"", + "typeAssignmentMismatch": "Тип \"{sourceType}\" нельзя присвоить типу \"{destType}\"", "typeBound": "Тип \"{sourceType}\" не может быть назначен верхней границе \"{destType}\" для переменной типа \"{name}\"", "typeConstrainedTypeVar": "Тип \"{type}\" не может быть назначен переменной ограниченного типа \"{name}\"", "typeIncompatible": "\"{sourceType}\" невозможно назначить \"{destType}\"", @@ -793,7 +813,7 @@ "typeVarIsCovariant": "Параметр типа \"{name}\" ковариантный, но \"{sourceType}\" не является подтипом \"{destType}\"", "typeVarIsInvariant": "Параметр типа \"{name}\" инвариантный, но \"{sourceType}\" не совпадает с \"{destType}\"", "typeVarNotAllowed": "TypeVar не допускается для проверок экземпляров или классов", - "typeVarTupleRequiresKnownLength": "TypeVarTuple не может граничить с tuple неизвестной длины", + "typeVarTupleRequiresKnownLength": "Ограничение для TypeVarTuple должно быть известной длины", "typeVarUnnecessarySuggestion": "Вместо этого используйте {type}", "typeVarUnsolvableRemedy": "Укажите перегрузку, которая указывает тип возвращаемого значения, если аргумент не передается", "typeVarsMissing": "Отсутствуют переменные типа: {names}", @@ -821,7 +841,9 @@ "useTupleInstead": "Используйте tuple[T1, ..., Tn], чтобы указать тип кортежа, или \"T1 | T2\" для указания объединения двух типов", "useTypeInstead": "Используйте вместо этого type[T]", "varianceMismatchForClass": "Вариантность аргумента типа \"{typeVarName}\" несовместим с базовым классом \"{className}\"", - "varianceMismatchForTypeAlias": "Вариантность аргумента типа \"{typeVarName}\" несовместимо с \"{typeAliasParam}\"" + "varianceMismatchForTypeAlias": "Вариантность аргумента типа \"{typeVarName}\" несовместимо с \"{typeAliasParam}\"", + "explicitRelativeImportSuggestion": "Используйте относительный импорт: `.{importName}`", + "fullPathImportSuggestion": "или укажите полный путь: `{importName}`" }, "Service": { "longOperation": "Перечисление исходных файлов рабочей области занимает много времени. Вместо этого рассмотрите возможность открыть вложенную папку. [Подробнее](https://aka.ms/workspace-too-many-files)"