diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf
index 281ec548..15a297e2 100644
--- a/translations/messages.ru.xlf
+++ b/translations/messages.ru.xlf
@@ -11139,6 +11139,162 @@
Необходимо пополнить
+
+
+ part.withdraw.access_denied
+ Вы не авторизованы для выполнения желаемого действия! Пожалуйста, проверьте свои полномочия и владельца инвентаря компонентов.
+
+
+
+
+ part.info.amount.less_than_desired
+ Меньше, чем хотелось бы
+
+
+
+
+ log.cli_user
+ Пользователь CLI
+
+
+
+
+ log.element_edited.changed_fields.part_owner_must_match
+ Владелец компонента должен совпадать с владельцем хранилища!
+
+
+
+
+ part.filter.lessThanDesired
+ Доступно меньше, чем хотелось бы (общее количество < мин. количества)
+
+
+
+
+ part.filter.lotOwner
+ Владелец инвентаря
+
+
+
+
+ user.show_email_on_profile.label
+ Показывать e-mail на странице публичного профиля
+
+
+
+
+ log.details.title
+ Подробности журнала
+
+
+
+
+ log.user_login.login_from_ip
+ Вход с IP адреса
+
+
+
+
+ log.user_login.ip_anonymize_hint
+ Если последние цифры IP-адреса отсутствуют, то активируется режим GDPR, в котором IP-адреса анонимизируются.
+
+
+
+
+ log.user_not_allowed.unauthorized_access_attempt_to
+ Попытка неавторизованного доступа к странице
+
+
+
+
+ log.user_not_allowed.hint
+ Запрос был заблокирован. Никаких дальнейших действий не требуется.
+
+
+
+
+ log.no_comment
+ Без комментариев
+
+
+
+
+ log.element_changed.field
+ Поле
+
+
+
+
+ log.element_changed.data_before
+ Данные до изменения
+
+
+
+
+ error_table.error
+ Во время запроса произошла ошибка.
+
+
+
+
+ part.table.invalid_regex
+ Неверное регулярное выражение (regex)
+
+
+
+
+ log.element_changed.data_after
+ Данные после изменения
+
+
+
+
+ log.element_changed.diff
+ Разница
+
+
+
+
+ log.undo.undo.short
+ Отмена
+
+
+
+
+ log.undo.revert.short
+ Вернуться к версии
+
+
+
+
+ log.view_version
+ Посмотреть версию
+
+
+
+
+ log.undo.undelete.short
+ Восстановить
+
+
+
+
+ log.element_edited.changed_fields.id
+ ID
+
+
+
+
+ log.element_edited.changed_fields.id_owner
+ Владелец
+
+
+
+
+ log.element_edited.changed_fields.parent_id
+ Родительский элемент
+
+ log.details.delete_entry
@@ -11151,5 +11307,895 @@
Вы уверены, что хотите удалить эту запись из журнала ?
+
+
+ log.delete.message
+ Если это запись истории для элемента, то ее удаление приведет к потере данных истории! Это может привести к неожиданным результатам при использовании функции путешествия во времени.
+
+
+
+
+ log.collection_deleted.on_collection
+ в коллекции
+
+
+
+
+ log.element_edited.changed_fields.attachments
+ Вложения
+
+
+
+
+ tfa_u2f.add_key.registration_error
+ Произошла ошибка во время регистрации ключа безопасности. Попробуйте еще раз или используйте другой ключ!
+
+
+
+
+ log.target_type.none
+ Нет
+
+
+
+
+ ui.darkmode.light
+ Светлый
+
+
+
+
+ ui.darkmode.dark
+ Тёмный
+
+
+
+
+ ui.darkmode.auto
+ Авто (в зависимости от настроек системы)
+
+
+
+
+ label_generator.no_lines_given
+ Текстовое содержание не указано! Созданные ярлыки будут пустыми.
+
+
+
+
+ user.password_strength.very_weak
+ Очень слабый
+
+
+
+
+ user.password_strength.weak
+ Слабый
+
+
+
+
+ user.password_strength.medium
+ Средний
+
+
+
+
+ user.password_strength.strong
+ Сильный
+
+
+
+
+ user.password_strength.very_strong
+ Очень сильный
+
+
+
+
+ perm.users.impersonate
+ Выдать себя за другого пользователя
+
+
+
+
+ user.impersonated_by.label
+ Выдано пользователем
+
+
+
+
+ user.stop_impersonation
+ Прекратить «Выдавать себя за пользователя»
+
+
+
+
+ user.impersonate.btn
+ Выдавать себя за пользователя
+
+
+
+
+ user.impersonate.confirm.title
+ Вы уверены, что хотите выдать себя за этого пользователя?
+
+
+
+
+ user.impersonate.confirm.message
+ Это будет отражено в журнале. Должна быть веская причина для данного действия.
+
+Обратите внимание, что вы не можете выдавать себя за деактивированного пользователя. Если вы попробуете это сделать, вы получите сообщение «Доступ запрещен».
+
+
+
+
+ log.type.security.user_impersonated
+ Пользователь выдал себя за другое лицо
+
+
+
+
+ info_providers.providers_list.title
+ Источники информации
+
+
+
+
+ info_providers.providers_list.active
+ Активный
+
+
+
+
+ info_providers.providers_list.disabled
+ Отключенный
+
+
+
+
+ info_providers.capabilities.basic
+ Основные
+
+
+
+
+ info_providers.capabilities.footprint
+ Посадочное место
+
+
+
+
+ info_providers.capabilities.picture
+ Картинка
+
+
+
+
+ info_providers.capabilities.datasheet
+ Технические данные
+
+
+
+
+ info_providers.capabilities.price
+ Цены
+
+
+
+
+ part.info_provider_reference.badge
+ Источник информации, использованный для создания этого компонента.
+
+
+
+
+ part.info_provider_reference
+ Создано на основе источника информации
+
+
+
+
+ oauth_client.connect.btn
+ Подключить OAuth
+
+
+
+
+ info_providers.table.provider.label
+ Источник
+
+
+
+
+ info_providers.search.keyword
+ Ключевое слово
+
+
+
+
+ info_providers.search.submit
+ Найти
+
+
+
+
+ info_providers.search.providers.help
+ Выберите источники информации для поиска.
+
+
+
+
+ info_providers.search.providers
+ Источники
+
+
+
+
+ info_providers.search.info_providers_list
+ Посмотреть все доступные источники информации
+
+
+
+
+ info_providers.search.title
+ Создать компонент из источника информации
+
+
+
+
+ oauth_client.flash.connection_successful
+ Соединение с приложением OAuth успешно установлено!
+
+
+
+
+ perm.part.info_providers
+ Источники информации
+
+
+
+
+ perm.part.info_providers.create_parts
+ Создание компонентов
+
+
+
+
+ entity.edit.alternative_names.label
+ Альтернативные названия
+
+
+
+
+ entity.edit.alternative_names.help
+ Представленные здесь альтернативные имена используются для автоматического выбора этого элемента на основе данных, полученных из источников информации.
+
+
+
+
+ info_providers.form.help_prefix
+ Источник
+
+
+
+
+ update_manager.new_version_available.title
+ Доступна новая версия
+
+
+
+
+ update_manager.new_version_available.text
+ Доступна новая версия Part-DB. Здесь вы найдете больше информации
+
+
+
+
+ update_manager.new_version_available.only_administrators_can_see
+ Это сообщение могут видеть только администраторы.
+
+
+
+
+ perm.system.show_available_updates
+ Показать доступные обновления Part-DB
+
+
+
+
+ user.settings.api_tokens
+ Токены API
+
+
+
+
+ user.settings.api_tokens.description
+ Используя токен API, другие приложения могут получить доступ к Part-DB под вашими правами для выполнения различных действий с помощью REST API Part-DB. Если вы удалите токен API, приложение, использующее этот токен, больше не сможет получить доступ к Part-DB от его имени.
+
+
+
+
+ api_tokens.name
+ Имя
+
+
+
+
+ api_tokens.access_level
+ Уровень доступа
+
+
+
+
+ api_tokens.expiration_date
+ Дата истечения срока действия
+
+
+
+
+ api_tokens.added_date
+ Добавлен
+
+
+
+
+ api_tokens.last_time_used
+ Последний раз использован
+
+
+
+
+ datetime.never
+ Никогда
+
+
+
+
+ api_token.valid
+ Действительный
+
+
+
+
+ api_token.expired
+ Истекший
+
+
+
+
+ user.settings.show_api_documentation
+ Посмотреть документацию по API
+
+
+
+
+ api_token.create_new
+ Создать новый токен API
+
+
+
+
+ api_token.level.read_only
+ Только чтение
+
+
+
+
+ api_token.level.edit
+ Редактировать
+
+
+
+
+ api_token.level.admin
+ Админ
+
+
+
+
+ api_token.level.full
+ Полный
+
+
+
+
+ api_tokens.access_level.help
+ Вы можете ограничить доступ к токену API. Доступ всегда ограничен правами вашего пользователя.
+
+
+
+
+ api_tokens.expiration_date.help
+ После этой даты токен больше нельзя будет использовать. Если это поле оставить пустым, срок действия токена никогда не истечет.
+
+
+
+
+ api_tokens.your_token_is
+ Ваш токен API
+
+
+
+
+ api_tokens.please_save_it
+ Пожалуйста, сохраните эту информацию - вы больше не сможете её увидеть!
+
+
+
+
+ api_tokens.create_new.back_to_user_settings
+ Вернуться к настройкам пользователя
+
+
+
+
+ project.build.dont_check_quantity
+ Не проверять количество
+
+
+
+
+ project.build.dont_check_quantity.help
+ Если выбрана эта опция, выбранные количества будут удалены из запасов, без проверки фактически необходимого количества компонентов требуемых для сборки проекта.
+
+
+
+
+ part_list.action.invert_selection
+ Наоборот
+
+
+
+
+ perm.api
+ API
+
+
+
+
+ perm.api.access_api
+ Доступ через API
+
+
+
+
+ perm.api.manage_tokens
+ Управление токенами API
+
+
+
+
+ user.settings.api_tokens.delete.title
+ Вы уверены, что хотите удалить этот токен API?
+
+
+
+
+ user.settings.api_tokens.delete
+ Удалить
+
+
+
+
+ user.settings.api_tokens.delete.message
+ Приложение, использующее этот токен, больше не будет иметь доступа к Part-DB. Это не может быть отменено!
+
+
+
+
+ api_tokens.deleted
+ Токен API успешно удален!
+
+
+
+
+ user.settings.api_tokens.no_api_tokens_yet
+ Токены API еще не созданы.
+
+
+
+
+ api_token.ends_with
+ Заканчивается на
+
+
+
+
+ entity.select.creating_new_entities_not_allowed
+ Вы не имеете права создавать новые элементы этого типа! Пожалуйста, выберите один из существующих.
+
+
+
+
+ scan_dialog.mode
+ Тип штрих-кода
+
+
+
+
+ scan_dialog.mode.auto
+ Автоматическое распознавание
+
+
+
+
+ scan_dialog.mode.ipn
+ IPN штрих-код
+
+
+
+
+ scan_dialog.mode.internal
+ Штрих-код Part-DB
+
+
+
+
+ part_association.label
+ Связывание компонентов
+
+
+
+
+ part.edit.tab.associations
+ Связанные компоненты
+
+
+
+
+ part_association.edit.other_part
+ Связанный компонент
+
+
+
+
+ part_association.edit.type
+ Тип отношений
+
+
+
+
+ part_association.edit.comment
+ Примечания
+
+
+
+
+ part_association.edit.type.help
+ Здесь вы можете указать, как выбранный компонент связан с текущим компонентом.
+
+
+
+
+ part_association.table.from_this_part
+ Ссылки из этого компонента на другие
+
+
+
+
+ part_association.table.from
+ От
+
+
+
+
+ part_association.table.type
+ Отношение
+
+
+
+
+ part_association.table.to
+ К
+
+
+
+
+ part_association.type.compatible
+ Совместим с
+
+
+
+
+ part_association.table.to_this_part
+ Ссылки на этот компонент от других
+
+
+
+
+ part_association.type.other
+ Другое (своя цена)
+
+
+
+
+ part_association.type.supersedes
+ Заменены
+
+
+
+
+ part_association.edit.other_type
+ Самостоятельно выбранные отношения
+
+
+
+
+ part_association.edit.delete.confirm
+ Вы действительно хотите удалить это отношение? Это не может быть отменено.
+
+
+
+
+ part_lot.edit.advanced
+ Показать дополнительные параметры
+
+
+
+
+ part_lot.edit.vendor_barcode
+ Штрих-код поставщика
+
+
+
+
+ part_lot.edit.vendor_barcode.help
+ Если этот инвентарь уже имеет штрих-код (например, нанесенный поставщиком), вы можете ввести здесь содержимое штрих-кода, чтобы найти этот инвентарь путем сканирования штрих-кода.
+
+
+
+
+ scan_dialog.mode.vendor
+ Штрих-код поставщика (настраивается в перечне компонентов)
+
+
+
+
+ project.bom.instockAmount
+ Наличие на складе
+
+
+
+
+ collection_type.new_element.tooltip
+ Этот элемент был создан недавно и еще не сохранен в базе данных.
+
+
+
+
+ part.merge.title
+ Объединить компонент
+
+
+
+
+ part.merge.title.into
+ в
+
+
+
+
+ part.merge.confirm.title
+ Вы действительно хотите объединить <b>%other%</b> в <b>%target%</b>?
+
+
+
+
+ part.merge.confirm.message
+ <b>%other%</b> будет удален, а текущий компонент сохранён с отображаемыми данными.
+
+
+
+
+ part.info.merge_modal.title
+ Объединение компонентов
+
+
+
+
+ part.info.merge_modal.other_part
+ Другой компонент
+
+
+
+
+ part.info.merge_modal.other_into_this
+ Объединить другой компонент с этим (удалить другой компонент, оставить этот)
+
+
+
+
+ part.info.merge_modal.this_into_other
+ Объединить этот компонент с другим (удалить этот компонент, оставить другой)
+
+
+
+
+ part.info.merge_btn
+ Объединить компонент
+
+
+
+
+ part.update_part_from_info_provider.btn
+ Обновить компонент из источника информации
+
+
+
+
+ info_providers.update_part.title
+ Обновление компонента из источника информации
+
+
+
+
+ part.merge.flash.please_review
+ Данные еще не сохранены. Пожалуйста, просмотрите изменения и нажмите «Сохранить», чтобы сохранить данные.
+
+
+
+
+ user.edit.flash.permissions_fixed
+ Разрешения, необходимые для других разрешений, отсутствовали. Это исправлено. Пожалуйста, проверьте, соответствуют ли разрешения вашим ожиданиям.
+
+
+
+
+ permission.legend.dependency_note
+ Обратите внимание, что некоторые операции авторизации зависят друг от друга. Если вы получили предупреждение о том, что отсутствующие разрешения были исправлены и для разрешения снова установлено значение «разрешено», вам также необходимо установить для зависимой операции значение «запрещено». Зависимости обычно располагаются справа от операции.
+
+
+
+
+ log.part_stock_changed.timestamp
+ Время
+
+
+
+
+ part.info.withdraw_modal.timestamp
+ Время действия
+
+
+
+
+ part.info.withdraw_modal.timestamp.hint
+ Это поле позволяет указать действительную дату фактического выполнения складской операции, а не только дату ее регистрации. Это значение сохраняется в дополнительном поле записи журнала.
+
+
+
+
+ part.info.withdraw_modal.delete_lot_if_empty
+ Удалить этот инвентарь, когда он станет пустым
+
+
+
+
+ info_providers.search.error.client_exception
+ Произошла ошибка при общении с поставщиком информации. Просмотрите конфигурацию этого поставщика и, если возможно, обновите токены OAuth.
+
+
+
+
+ eda_info.reference_prefix.placeholder
+ напр. R
+
+
+
+
+ eda_info.reference_prefix
+ Ссылочный префикс
+
+
+
+
+ eda_info.kicad_section.title
+ Специальные настройки KiCad
+
+
+
+
+ eda_info.value
+ Стоимость
+
+
+
+
+ eda_info.value.placeholder
+ напр. 100n
+
+
+
+
+ eda_info.exclude_from_bom
+ Исключить компонент из спецификации
+
+
+
+
+ eda_info.exclude_from_board
+ Исключить деталь из печатной платы
+
+
+
+
+ eda_info.exclude_from_sim
+ Исключить компонент из моделирования
+
+
+
+
+ eda_info.kicad_symbol
+ Символ схемы KiCad
+
+
+
+
+ eda_info.kicad_symbol.placeholder
+ напр. Transistor_BJT:BC547
+
+
+
+
+ eda_info.kicad_footprint
+ посадочное место KiCad
+
+
+
+
+ eda_info.kicad_footprint.placeholder
+ напр. Package_TO_SOT_THT:TO-92
+
+
+
+
+ part.edit.tab.eda
+ Информация EDA
+
+
+
+
+ api.api_endpoints.title
+ Конечные точки API
+
+
+
+
+ api.api_endpoints.partdb
+ Part-DB API
+
+
+
+
+ api.api_endpoints.kicad_root_url
+ корневой URL KiCad API
+
+
+
+
+ eda_info.visibility
+ Принудительная видимость
+
+
+
+
+ eda_info.visibility.help
+ По умолчанию видимость определяется автоматически в программном обеспечении EDA. Используя этот флажок, вы можете сделать компонент видимым или невидимым.
+
+
+
+
+ part.withdraw.zero_amount
+ Вы пытались удалить/добавить нулевое количество! Никаких действий предпринято не было.
+
+
+
+
+ login.flash.access_denied_please_login
+ В доступе отказано! Пожалуйста, войдите, чтобы продолжить.
+
+
diff --git a/translations/security.ru.xlf b/translations/security.ru.xlf
index ef7687b0..214e45ff 100644
--- a/translations/security.ru.xlf
+++ b/translations/security.ru.xlf
@@ -7,5 +7,11 @@
Ваша учетная запись отключена! Свяжитесь с администратором, если вы считаете, что это неправильно.
+
+
+ saml.error.cannot_login_local_user_per_saml
+ Вы не можете войти в систему как локальный пользователь через SSO! Используйте локального пользователя и его пароль.
+
+
diff --git a/translations/validators.ru.xlf b/translations/validators.ru.xlf
index ce055f1a..51e0a679 100644
--- a/translations/validators.ru.xlf
+++ b/translations/validators.ru.xlf
@@ -185,12 +185,24 @@
Родитель не может быть дочерним по отношению к себе
+
+
+ validator.select_valid_category
+ Пожалуйста, выберите действительную категорию!
+
+ validator.part_lot.only_existingВы не можете добавлять новые компоненты в хранилище которое помечено как "только существующие".
+
+
+ validator.part_lot.location_full.no_increase
+ Место хранения заполнено. Запас не может быть увеличен (новое значение должно быть меньше {{old_amount}}).
+
+ validator.part_lot.location_full
@@ -203,5 +215,131 @@
Вы не можете добавлять новые компоненты в хранилище которое отмечено как "единственный компонент".
+
+
+ validator.attachment.must_not_be_null
+ Вы должны выбрать тип файла!
+
+
+
+
+ validator.orderdetail.supplier_must_not_be_null
+ Вы должны выбрать поставщика!
+
+
+
+
+ validator.measurement_unit.use_si_prefix_needs_unit
+ Чтобы включить префиксы СИ, необходимо установить символ единицы!
+
+
+
+
+ part.ipn.must_be_unique
+ Внутренний номер детали (IPN) должен быть уникальным. Значение {{value}} уже используется!
+
+
+
+
+ validator.project.bom_entry.name_or_part_needed
+ Вам необходимо выбрать компонент или задать имя для BOM, не относящейся к компоненту!
+
+
+
+
+ project.bom_entry.name_already_in_bom
+ Запись BOM с таким именем уже существует!
+
+
+
+
+ project.bom_entry.part_already_in_bom
+ Этот компонент уже существует в BOM!
+
+
+
+
+ project.bom_entry.mountnames_quantity_mismatch
+ Количество наименований сборок должно соответствовать количеству собираемых компонентов!
+
+
+
+
+ project.bom_entry.can_not_add_own_builds_part
+ BOM проекта не может содержать собственную производственную составляющую!
+
+
+
+
+ project.bom_has_to_include_all_subelement_parts
+ BOM проекта должна содержать все производственные компоненты подпроектов. Компонент %part_name% проекта %project_name% отсутствует!
+
+
+
+
+ project.bom_entry.price_not_allowed_on_parts
+ Невозможно определить цену для BOM записей компонента. Вместо этого определите цену на сам компонент.
+
+
+
+
+ validator.project_build.lot_bigger_than_needed
+ Вы выбрали для удаления больше, чем необходимо. Уберите лишнее количество.
+
+
+
+
+ validator.project_build.lot_smaller_than_needed
+ Они выбрали меньшее количество, чем необходимо для сборки! Добавьте больше.
+
+
+
+
+ part.name.must_match_category_regex
+ Имя компонента не соответствует регулярному выражению, указанному в категории: %regex%
+
+
+
+
+ validator.attachment.name_not_blank
+ Выберите значение или загрузите файл, чтобы автоматически использовать его имя в качестве имени для этого вложения.
+
+
+
+
+ validator.part_lot.owner_must_match_storage_location_owner
+ Владелец этого инвентаря и выбранное место хранения должны совпадать (%owner_name%)!
+
+
+
+
+ validator.part_lot.owner_must_not_be_anonymous
+ Владелец не может быть анонимным пользователем!
+
+
+
+
+ validator.part_association.must_set_an_value_if_type_is_other
+ Если тип ссылки установлен на «Другое», необходимо установить описательное значение!
+
+
+
+
+ validator.part_association.part_cannot_be_associated_with_itself
+ Компонент не может быть связан сам с собой!
+
+
+
+
+ validator.part_association.already_exists
+ Ссылка на этот компонент уже существует!
+
+
+
+
+ validator.part_lot.vendor_barcode_must_be_unique
+ Штрих-код этого поставщика уже используется в другом инвентаре. Штрих-код должен быть уникальным!
+
+