Задавайте вопросы по русификации и мы по возможности ответим
Для желающих получить ответы на свои вопросы:1. Будьте добры давать ссылку на программу, в архиве
-
Цитата: MCPрадиоликс не может открыть, зависает.
Разобрался - переименовал в .dll и почему то радиоликс не мог сам определить кодировку. Поставил вручную cp:1251 и стал открывать моментально.mikl88 нравится это сообщение.17 июня 2025 - 23:16 / #2061 -
Цитата: nobody24чем вы там переводите
Очень читабельно19 июня 2025 - 10:39 / #2062 -
Ради учебной практики занялся локализацией небольшого германского лаунчера с двойным, немецко-английским, интерфейсом PStart - https://www.pegtop.net/start/ (на своем-то компьютере использую другой, с готовым русским интерфейсом).
БОльшая часть локализации выполняется довольно легко, но есть затруднения в выборе способа для многих исходных надписей ДВУЯЗЫЧНОГО назначения, которые в Radialix заданы почему-то странно совмещенными ТРОЙНЫМИ в одном пункте -
К таким надписям относятся левая часть окна "Настройки" (HARDCODED), контекстное меню значка в трее.
Когда пытаюсь заменить надпись в одном из трех предложенных вариантов в пункте, результаты негативные:
или сообщение об ошибке -
или исходная надпись вообще стирается -
Непонятно.Сообщение отредактировал greg 9 июля 2025 - 15:085 июля 2025 - 18:59 / #2063 -
5 июля 2025 - 19:02 / #2064
-
Цитата: gregисходных надписей ДВУЯЗЫЧНОГО назначения, которые в Radialix заданы почему-то странно совмещенными ТРОЙНЫМИ в одном пункте
...
К таким надписям относятся левая часть окна "Настройки" (HARDCODED), контекстное меню значка в трее.
Когда пытаюсь заменить надпись в одном из трех предложенных вариантов в пункте, результаты негативные:
или сообщение об ошибке...
Попробовал наугад по подсказке этого сообщения для таких случаев использовать кодировку UTF-7. Сработало.
Поэтому вопрос снимаю.Сообщение отредактировал greg 10 июля 2025 - 17:2510 июля 2025 - 17:14 / #2065 -
HeliosPaint
Можно ли что-то сделать, чтобы в программе отображался русский
Язык берётся из файла ...\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.html9 сентября 2025 - 13:53 / #2066 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 1003
Создано тем: 79
Рейтинг: 8
Репа:
(133|133|0)
Баллы: 1971
Был: 2025-09-11 22:24
Лайков: 216
Цитата: TORFERМожно ли что-то сделать, чтобы в программе отображался русский
Разработчик использует очень древнюю 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)":private static void a(File paramFile, Properties paramProperties) { if (PFileManager.a(paramFile)) { FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream(paramFile); paramProperties.load(fileInputStream); } catch (Exception exception) { JOptionPane.showMessageDialog(null, "Error reading language file '" + paramFile.getAbsolutePath() + "': " + exception.getLocalizedMessage(), "HeliosPaint", 0); } finally { if (fileInputStream != null) try { fileInputStream.close(); } catch (Exception exception) {} } } }
Обратите внимание на функцию FileInputStream - она выполняет загрузку данных из файлового потока. Здесь необходимо добавить функцию InputStreamReader, с помощью которой можно указать желаемую кодировку. Тогда метод чтения файла локализации у нас изменится следующим образом:private static void a(File paramFile, Properties paramProperties) { if (PFileManager.a(paramFile)) { InputStreamReader reader = null; try { // Явно указываем кодировку Windows-1251 для кириллицы reader = new InputStreamReader(new FileInputStream(paramFile), "windows-1251"); paramProperties.load(reader); } catch (Exception exception) { JOptionPane.showMessageDialog(null, "Error reading language file '" + paramFile.getAbsolutePath() + "': " + exception.getLocalizedMessage(), "HeliosPaint", 0); } finally { if (reader != null) try { reader.close(); } catch (Exception exception) {} } } }
Поскольку у нас нет исходных файлов приложения, по которым мы могли бы его собрать (скомпилировать), тем более мы не знаем, какую конфигурация среды разработки использует разработчик, то нам остается только один путь - патч байткода, т.е. модификация класса 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:
на следующий:B: new java/io/InputStreamReader dup new java/io/FileInputStream dup aload v0 invokespecial java/io/FileInputStream.<init> (Ljava/io/File;)V ldc "windows-1251" invokespecial java/io/InputStreamReader.<init> (Ljava/io/InputStream;Ljava/lang/String;)V astore v2 aload v1 aload v2 invokevirtual java/util/Properties.load (Ljava/io/Reader;)V
Затем необходимо изменить ВСЕ вызовы 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, подтвердив замену исходного. Запустите программу. Теперь строки на русском отображаются корректно.
Осталось откорректировать языковой файл, исправить опечатки и неточности.Сообщение отредактировал Leserg 10 сентября 2025 - 16:23Кто ищет, тот всегда найдет!
10 сентября 2025 - 16:22 / #2067 -
Цитата: Lesergнеобходимо модифицировать файл HeliosPaint.jarЦитата: LesergДекомпилируем его в код Java с помощью соответствующих инструментов и выполняем анализ кода.
Спасибо Вам за подробную инструкцию!
Пытался разобраться ища информацию в интернете по инструментам и их применению
Но к сожалению для меня это не выполнимо по причине полного отсутствия опыта в программировании и соответствующих инструментов
Судя по скриншоту у Вас получился итоговый файл HeliosPaint_fixed.jar позволяющий отображать интерфейс на русском языке
Может быть вы сочтете возможным скинуть готовый файл HeliosPaint_fixed.jar
Был бы очень Вам благодарен!11 сентября 2025 - 19:44 / #2068 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 1003
Создано тем: 79
Рейтинг: 8
Репа:
(133|133|0)
Баллы: 1971
Был: 2025-09-11 22:24
Лайков: 216
Цитата: TORFERМожет быть вы сочтете возможным скинуть готовый файл HeliosPaint_fixed.jarВнимание! У вас нет прав для просмотра скрытого текста.
В архиве по ссылке поправленный файл HeliosPaint_fixed.jar.- Распакуйте содержимое архива в удобное место на вашем ПК.
- Создайте резервную копию оригинального файла HeliosPaint.jar.
- Переименуйте файл HeliosPaint_fixed.jar в HeliosPaint.jar.
- Скопируйте его в корневой каталог по месту установки программы и подтвердите замену.
- Проверьте работу приложения.
Всего наилучшего!
P.S. Учтите, что при выходе новой версии программы процедуру исправления нужно будет повторить.Сообщение отредактировал Leserg 11 сентября 2025 - 22:24Кто ищет, тот всегда найдет!
11 сентября 2025 - 22:21 / #2069 - Распакуйте содержимое архива в удобное место на вашем ПК.
-
Цитата: LesergДа, конечно
Огромное Вам спасибо!
Работает прекрасно12 сентября 2025 - 13:26 / #2070
Статистика форума, пользователей онлайн: 1 (за последние 20 минут)
- Создано тем
- 1223
- Всего сообщений
- 16492
- Пользователей
- 18276
- Новый участник
- emadwizard
Powered by Bullet Energy Forum




