From 029ce38efaf3f2284ecec3676f280608e9fd0f0d Mon Sep 17 00:00:00 2001 From: luffypirat Date: Sun, 19 Apr 2026 13:55:05 +0300 Subject: [PATCH 1/2] Add Russian localization for Sable commands --- .../resources/assets/sable/lang/ru_ru.json | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 common/src/main/resources/assets/sable/lang/ru_ru.json diff --git a/common/src/main/resources/assets/sable/lang/ru_ru.json b/common/src/main/resources/assets/sable/lang/ru_ru.json new file mode 100644 index 0000000..9ca311c --- /dev/null +++ b/common/src/main/resources/assets/sable/lang/ru_ru.json @@ -0,0 +1,121 @@ +{ + "menu.savingSubLevels": "Сохранение подуровней", + "commands.sable.helper.missing_sub_level_container": "Не удалось найти контейнер подуровня для этого уровня!", + "commands.sable.helper.missing_physics_system": "Не удалось найти физическую систему подуровня для этого уровня!", + "commands.sable.sub_level": "подуровень", + "commands.sable.sub_levels": "%s подуровней", + "commands.sable.physics.global": "глобальный", + "commands.sable.physics.local": "локальный", + "commands.sable.spawn.success": "Создано: %s", + "commands.sable.spawn.clone.success": "Подуровень клонирован", + "commands.sable.physics.impulse.angular.success": "Применён угловой импульс %s к %s из %s", + "commands.sable.physics.impulse.linear.success": "Применён линейный импульс %s к %s из %s", + "commands.sable.physics.rotation.add.success": "Добавлено вращение %s к %s из %s", + "commands.sable.physics.rotation.set.success": "Установлено вращение %s для %s", + "commands.sable.physics.translation.add.success": "Добавлено смещение %s к %s из %s", + "commands.sable.physics.translation.set.success": "Установлено смещение %s для %s", + "commands.sable.joint.missing_sublevel_target": "Не удалось найти подуровень для соединения", + "commands.sable.joint.success": "Соединение успешно создано", + "commands.sable.sub_level.set_name.success_singular": "Имя подуровня установлено: %s", + "commands.sable.sub_level.set_name.success_multiple": "Имя %s подуровней установлено: %s", + "commands.sable.sub_level.get_name.success": "Имя подуровня: %s", + "commands.sable.sub_level.get_name.failure_unnamed": "Подуровень не имеет имени", + "commands.sable.sub_level.clear_name.success_singular": "Имя подуровня сброшено", + "commands.sable.sub_level.clear_name.success_multiple": "Имя %s подуровней сброшено", + "commands.sable.sub_level.teleport_with_orientation.success": "Телепортировано %s в %.2f, %.2f, %.2f с поворотом %.2f, %.2f", + "commands.sable.sub_level.teleport.success": "Телепортировано %s в %.2f, %.2f, %.2f", + "commands.sable.sub_level.remove.success": "Удалено: %s", + "commands.sable.sub_level.assemble.no_blocks": "Не удалось собрать подуровень — допустимые блоки не найдены", + "commands.sable.sub_level.assemble.connected.too_many_blocks": "Не удалось собрать подуровень — слишком много блоков (максимум %s)", + "commands.sable.sub_level.shatter.no_blocks": "Не удалось разбить на подуровни — допустимые блоки не найдены", + "commands.sable.sub_level.shatter.connected.too_many_blocks": "Не удалось разбить на подуровни — слишком много блоков (максимум %s)", + "commands.sable.sub_level.shatter.region.success": "Область из %s блоков разбита на новые подуровни", + "commands.sable.sub_level.shatter.connected.success": "%s связанных блоков разбито на новые подуровни", + "commands.sable.sub_level.shatter.range.success": "Диапазон из %s блоков разбит на новые подуровни", + "commands.sable.sub_level.shatter.radius.success": "Радиус из %s блоков разбит на новые подуровни", + "commands.sable.sub_level.shatter.sub_level.success": "%s разбито на %s новых подуровня", + "commands.sable.sub_level.shatter.sub_level.only_single_block": "Нельзя разбить подуровень из одного блока", + "commands.sable.sub_level.assemble.region.success": "Область из %s блоков собрана в новый подуровень", + "commands.sable.sub_level.assemble.connected.success": "%s связанных блоков собрано в новый подуровень", + "commands.sable.sub_level.assemble.radius.success": "Радиус из %s блоков собран в новый подуровень", + "commands.sable.sub_level.assemble.range.success": "Диапазон из %s блоков собран в новый подуровень", + "commands.sable.physics.paused.success": "Физика приостановлена: %s", + "commands.sable.physics.paused_toggled.success": "Физика переключена: %s", + "commands.sable.place_schematic.failure": "Схема не найдена!", + "commands.sable.place_schematic.success": "Схема размещена!", + "commands.sable.fail.not_inside_sub_level": "Позиция за пределами участка подуровня", + "commands.sable.fail.no_sub_levels": "Подуровни не найдены", + "commands.sable.fail.unmodified": "Ни один подуровень не был изменён", + "commands.sable.fail.no_axis_for_rotation": "Ось вращения не задана", + "commands.sable.info.count": "Найдено %s подуровней:", + "commands.sable.info.name": "%s:", + "commands.sable.info.name.tooltip": "Указатель сериализации: %s", + "commands.sable.info.position": " Позиция: %.2f %.2f %.2f", + "commands.sable.info.orientation": " Ориентация: %.2f %.2f %.2f %.2f", + "commands.sable.info.linear_velocity": " Линейная скорость: %.2f %.2f %.2f", + "commands.sable.info.angular_velocity": " Угловая скорость: %.2f %.2f %.2f", + "commands.sable.info.mass": " Масса: %.2f", + "commands.data.sub_level.get": "%s у подуровня %s с масштабным коэффициентом %s равно %s", + "commands.data.sub_level.modified": "Изменены вспомогательные данные подуровня %s", + "commands.data.sub_level.query": "%s содержит следующие вспомогательные данные подуровня: %s", + "argument.sable.body.selector.all": "Все подуровни", + "argument.sable.body.selector.nearest": "Ближайший подуровень", + "argument.sable.body.selector.random": "Случайный подуровень", + "argument.sable.body.selector.viewed": "Просматриваемый подуровень", + "argument.sable.body.selector.latest": "Последний подуровень", + "argument.sable.body.selector.tracking": "Отслеживаемый подуровень", + "argument.sable.body.selector.inside": "Подуровень изнутри", + "argument.sable.body.static_world": "Статический мир", + "argument.sable.sub_level.modifier.distance": "Расстояние до подуровня", + "argument.sable.sub_level.modifier.x": "Позиция x", + "argument.sable.sub_level.modifier.y": "Позиция y", + "argument.sable.sub_level.modifier.z": "Позиция z", + "argument.sable.sub_level.modifier.dx": "Подуровни между x и x + dx", + "argument.sable.sub_level.modifier.dy": "Подуровни между y и y + dy", + "argument.sable.sub_level.modifier.dz": "Подуровни между z и z + dz", + "argument.sable.sub_level.modifier.vx": "Скорость x", + "argument.sable.sub_level.modifier.vy": "Скорость y", + "argument.sable.sub_level.modifier.vz": "Скорость z", + "argument.sable.sub_level.modifier.speed": "Скорость подуровня", + "argument.sable.sub_level.modifier.mass": "Масса подуровня", + "argument.sable.sub_level.modifier.volume": "Объём ограничивающего куба подуровня", + "argument.sable.sub_level.modifier.width": "Размер ограничивающего куба по оси X", + "argument.sable.sub_level.modifier.height": "Размер ограничивающего куба по оси Y", + "argument.sable.sub_level.modifier.length": "Размер ограничивающего куба по оси Z", + "argument.sable.sub_level.modifier.limit": "Максимальное количество возвращаемых подуровней", + "argument.sable.sub_level.modifier.name": "Имя подуровня", + "argument.sable.sub_level.modifier.sort": "Сортировать подуровни по расстоянию", + "argument.sable.unexpected_end_of_input": "Неожиданный конец ввода", + "argument.sable.single_sub_level_required": "Допустим только один подуровень, но указанный селектор допускает несколько", + "argument.sable.sub_level.invalid": "Недопустимый селектор подуровня", + "argument.sable.sub_level.expected_end_of_modifier": "Ожидался конец модификатора", + "argument.sable.sub_level.expected_positive_integer": "Ожидалось положительное целое число", + "argument.sable.sub_level.expected_positive_decimal": "Ожидалось положительное десятичное число", + "argument.sable.sub_level.expected_positive_range": "Ожидался положительный диапазон", + "argument.sable.sub_level.expected_sorting": "Ожидался тип сортировки: nearest или furthest", + "inspector.sable.sub_level_container.title": "Контейнер подуровней", + "attribute.name.player.sub_level_punch_strength": "Сила толчка", + "attribute.name.player.sub_level_punch_cooldown": "Перезарядка толчка", + "options.sable_menu": "Настройки подуровней... ", + "options.physics_steps": "Шаги физики", + "options.physics_steps_template": "%s шагов / секунда", + "options.physics_steps.tooltip": "Сколько раз физическая симуляция просчитывается в секунду. Более высокие значения значительно нагружают производительность, но обеспечивают большую точность.", + "sub_level.toast.checkLog": "Подробности см. в журнале", + "sub_level.toast.loadFailure": "Не удалось загрузить подуровень по адресу %s", + "sub_level.toast.saveFailure": "Не удалось сохранить подуровень по адресу %s", + "sub_level.toast.physicsFailure": "Сбой физики для подуровня по адресу %s", + "sub_level.toast.attemptingRecovery": "Попытка восстановления", + "camera_type.sub_level_view": "Камера подуровня активирована", + "camera_type.sub_level_view_unlocked": "Свободная камера подуровня активирована", + "force_group.sable.gravity": "Гравитация", + "force_group.sable.drag": "Лобовое сопротивление", + "force_group.sable.levitation": "Левитация", + "force_group.sable.balloon_lift": "Подъёмная сила оболочки", + "force_group.sable.propulsion": "Тяга", + "force_group.sable.lift": "Подъёмная сила", + "force_group.sable.magnetic_force": "Магнитная сила", + "schematic.sable.mirror_not_supported": "Нельзя зеркалировать схемы, содержащие подуровни!", + "death.attack.fall.from_sublevel": "%1$s упал с %2$s", + "sable.create.mechanical_arm.points_removed_sublevel_and_range": "%1$s выбранных точек взаимодействия удалено из-за ограничений дальности или отсутствия привязки.", + "sable.create.remove.points_removed_sublevel": "%1$s выбранных точек взаимодействия удалено из-за отсутствия привязки" +} From c07194570635ce9cc45c617155446a52aa1fb03b Mon Sep 17 00:00:00 2001 From: luffypirat Date: Tue, 21 Apr 2026 17:03:12 +0300 Subject: [PATCH 2/2] Update common/src/main/resources/assets/sable/lang/ru_ru.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- common/src/main/resources/assets/sable/lang/ru_ru.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/main/resources/assets/sable/lang/ru_ru.json b/common/src/main/resources/assets/sable/lang/ru_ru.json index 9ca311c..9382be9 100644 --- a/common/src/main/resources/assets/sable/lang/ru_ru.json +++ b/common/src/main/resources/assets/sable/lang/ru_ru.json @@ -11,9 +11,9 @@ "commands.sable.physics.impulse.angular.success": "Применён угловой импульс %s к %s из %s", "commands.sable.physics.impulse.linear.success": "Применён линейный импульс %s к %s из %s", "commands.sable.physics.rotation.add.success": "Добавлено вращение %s к %s из %s", - "commands.sable.physics.rotation.set.success": "Установлено вращение %s для %s", + "commands.sable.physics.rotation.set.success": "Для %s установлено вращение %s", "commands.sable.physics.translation.add.success": "Добавлено смещение %s к %s из %s", - "commands.sable.physics.translation.set.success": "Установлено смещение %s для %s", + "commands.sable.physics.translation.set.success": "Для %s установлено смещение %s", "commands.sable.joint.missing_sublevel_target": "Не удалось найти подуровень для соединения", "commands.sable.joint.success": "Соединение успешно создано", "commands.sable.sub_level.set_name.success_singular": "Имя подуровня установлено: %s",