Этот сайт создан как клуб русификаторщиков. Для нас существуют три основных правила.
1. Мы никому и ничего не должны!
2.Один пришедший на сайт толковый русификаторщик дороже всех пользователей.
3. Мы делаем русификаторы для своего сайта, но в оригинале ими могут пользоваться все в интернете.
Ради учебной практики занялся локализацией небольшого германского лаунчера с двойным, немецко-английским, интерфейсом PStart - https://www.pegtop.net/start/ (на своем-то компьютере использую другой, с готовым русским интерфейсом). БОльшая часть локализации выполняется довольно легко, но есть затруднения в выборе способа для многих исходных надписей ДВУЯЗЫЧНОГО назначения, которые в Radialix заданы почему-то странно совмещенными ТРОЙНЫМИ в одном пункте - К таким надписям относятся левая часть окна "Настройки" (HARDCODED), контекстное меню значка в трее. Когда пытаюсь заменить надпись в одном из трех предложенных вариантов в пункте, результаты негативные: или сообщение об ошибке - или исходная надпись вообще стирается - Непонятно.
исходных надписей ДВУЯЗЫЧНОГО назначения, которые в Radialix заданы почему-то странно совмещенными ТРОЙНЫМИ в одном пункте ... К таким надписям относятся левая часть окна "Настройки" (HARDCODED), контекстное меню значка в трее. Когда пытаюсь заменить надпись в одном из трех предложенных вариантов в пункте, результаты негативные: или сообщение об ошибке...
Попробовал наугад по подсказке этого сообщения для таких случаев использовать кодировку UTF-7. Сработало. Поэтому вопрос снимаю.
Сообщение отредактировал greg 10 июля 2025 - 17:25
Можно ли что-то сделать, чтобы в программе отображался русский
Язык берётся из файла ...\HeliosPaint\language\language.txt Чтобы переключить на другой, нужно переименовать файл, например language_de.txt в language.txt тогда язык будет немецким. Исходные переводы в ANSI 1252, а при переводе на русский в ANSI 1251. Программа любую локаль врубает на 1252 и в итоге все переведенное выглядит крокозябрами.
HeliosPaint и language.txt переведенный на русский язык https://www.upload.ee/files/18576867/HeliosPaint.zip.html
Можно ли что-то сделать, чтобы в программе отображался русский
Разработчик использует очень древнюю Java (Java JDK 1.5), в которой по умолчанию применяется кодировка CP1252 (Windows-1252) - West European Latin. Для кириллицы необходима кодировка Windows-1251. По этой причине строки из языкового файла с русским в программе отображаются некорректно.
Чтобы исправить эту ситуацию, необходимо модифицировать файл HeliosPaint.jar. Для этого ищем в этом файле класс, который выполняет загрузку строк из файлов локализации. В данном случае это будет файл и класс Lang.class. Декомпилируем его в код Java с помощью соответствующих инструментов и выполняем анализ кода. Выясняем, что загрузка языкового файла выполняется в методе "private static void a(File paramFile, Properties paramProperties)":
Обратите внимание на функцию FileInputStream - она выполняет загрузку данных из файлового потока. Здесь необходимо добавить функцию InputStreamReader, с помощью которой можно указать желаемую кодировку. Тогда метод чтения файла локализации у нас изменится следующим образом:
Поскольку у нас нет исходных файлов приложения, по которым мы могли бы его собрать (скомпилировать), тем более мы не знаем, какую конфигурация среды разработки использует разработчик, то нам остается только один путь - патч байткода, т.е. модификация класса Lang напрямую (ассемблер). Для этого рекомендую использовать современные средства: Recaf - редактор байткода Java.
Предварительно необходимо установить инструментарий разработчика Java - Java SE Development Kit. Сейчас актуальная версия - 24.0.2. После этого скачайте загрузчик Recaf - Recaf-Launcher. Запустите его и установите сам Recaf и JavaFX, нажав последовательно кнопки "Update". После запустите Recaf.
Предварительно сделайте резервную копию файла HeliosPaint.jar. Затем откройте его в Recaf. В проводнике слева найдите класс Lang и загрузите его двойным щелчком мыши. Справа в дереве методов найдите метод "а" загрузки свойств файла - "private static void a(File paramFile, Properties paramProperties)" и откройте его для редактирования в ассемблере.
Убеждаемся, что открыли именно метод с кодом загрузки потока - "fileInputStream = new FileInputStream(paramFile);". Здесь необходимо заменить блок B:
Затем необходимо изменить ВСЕ вызовы close() с FileInputStream на InputStreamReader, поскольку мы изменили инициализацию чтения потока. То есть далее в коде следует обращения вида:
invokevirtual java/io/FileInputStream.close ()V
изменить на:
invokevirtual java/io/InputStreamReader.close ()V
Это необходимо сделать в блоках C, H и M.
Если все сделано без ошибок и редактор не показывает ошибки, то сохраните модуль HeliosPaint под новым именем, например, HeliosPaint_fixed.jar (меню File -> Export Application).
Полученный файл скопируйте в папку с установленной программой и переименуйте в HeliosPaint.jar, подтвердив замену исходного. Запустите программу. Теперь строки на русском отображаются корректно.
Осталось откорректировать языковой файл, исправить опечатки и неточности.
Декомпилируем его в код Java с помощью соответствующих инструментов и выполняем анализ кода.
Спасибо Вам за подробную инструкцию! Пытался разобраться ища информацию в интернете по инструментам и их применению Но к сожалению для меня это не выполнимо по причине полного отсутствия опыта в программировании и соответствующих инструментов Судя по скриншоту у Вас получился итоговый файл HeliosPaint_fixed.jar позволяющий отображать интерфейс на русском языке Может быть вы сочтете возможным скинуть готовый файл HeliosPaint_fixed.jar Был бы очень Вам благодарен!