Задавайте вопросы по русификации и мы по возможности ответим

Для желающих получить ответы на свои вопросы:1. Будьте добры давать ссылку на программу, в архиве
  1. Оффлайн

    MCP

    Звание: Новичок

    Стажер

    Сообщений: 55

    Создано тем: 0

    Рейтинг: 2

    Репа: (1|1|0)

    Баллы: 390

    Был: 2025-07-06 11:39

    Лайков: 3

    Цитата: MCP
    радиоликс не может открыть, зависает.

    Разобрался - переименовал в .dll и почему то радиоликс не мог сам определить кодировку. Поставил вручную cp:1251 и стал открывать моментально.
    mikl88 нравится это сообщение.
    17 июня 2025 - 23:16 / #2061
  2. Оффлайн

    mikl88

    Звание: Сталкер

    Проверенные

    Сообщений: 88

    Создано тем: 0

    Рейтинг: 3

    Репа: (1|1|0)

    Баллы: 466

    Был: 2025-09-05 19:00

    Лайков: 1

    Цитата: nobody24
    чем вы там переводите

    Очень читабельно
    19 июня 2025 - 10:39 / #2062
  3. Оффлайн

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 135

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 461

    Был: 2025-07-12 18:37

    Лайков: 11

    Ради учебной практики занялся локализацией небольшого германского лаунчера с двойным, немецко-английским, интерфейсом PStart - https://www.pegtop.net/start/ (на своем-то компьютере использую другой, с готовым русским интерфейсом).
    БОльшая часть локализации выполняется довольно легко, но есть затруднения в выборе способа для многих исходных надписей ДВУЯЗЫЧНОГО назначения, которые в Radialix заданы почему-то странно совмещенными ТРОЙНЫМИ в одном пункте -

    К таким надписям относятся левая часть окна "Настройки" (HARDCODED), контекстное меню значка в трее.
    Когда пытаюсь заменить надпись в одном из трех предложенных вариантов в пункте, результаты негативные:
    или сообщение об ошибке -

    или исходная надпись вообще стирается -

    Непонятно.
    Сообщение отредактировал greg 9 июля 2025 - 15:08
    5 июля 2025 - 18:59 / #2063
  4. Оффлайн

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 135

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 461

    Был: 2025-07-12 18:37

    Лайков: 11



    Сообщение отредактировал greg 9 июля 2025 - 14:05
    5 июля 2025 - 19:02 / #2064
  5. Оффлайн

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 135

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 461

    Был: 2025-07-12 18:37

    Лайков: 11

    Цитата: greg
    исходных надписей ДВУЯЗЫЧНОГО назначения, которые в Radialix заданы почему-то странно совмещенными ТРОЙНЫМИ в одном пункте
    ...
    К таким надписям относятся левая часть окна "Настройки" (HARDCODED), контекстное меню значка в трее.
    Когда пытаюсь заменить надпись в одном из трех предложенных вариантов в пункте, результаты негативные:
    или сообщение об ошибке...

    Попробовал наугад по подсказке этого сообщения для таких случаев использовать кодировку UTF-7. Сработало.
    Поэтому вопрос снимаю.
    Сообщение отредактировал greg 10 июля 2025 - 17:25
    10 июля 2025 - 17:14 / #2065
  6. Оффлайн

    TORFER

    Звание: Прибывший

    Участники

    Сообщений: 5

    Создано тем: 0

    Рейтинг: 1

    Репа: 0

    Баллы: 71

    Страна: не указана!

    Был: 2025-09-13 16:36

    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.html
    9 сентября 2025 - 13:53 / #2066
  7. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 1003

    Создано тем: 79

    Рейтинг: 8

    Репа: (133|133|0)

    Баллы: 1971

    Был: 2025-09-11 22:24

    Лайков: 215

    Цитата: 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, подтвердив замену исходного. Запустите программу. Теперь строки на русском отображаются корректно.



    Осталось откорректировать языковой файл, исправить опечатки и неточности.
    NNK_RTR, Смотрящий нравится это сообщение.
    Сообщение отредактировал Leserg 10 сентября 2025 - 16:23

    Кто ищет, тот всегда найдет!

    10 сентября 2025 - 16:22 / #2067
  8. Оффлайн

    TORFER

    Звание: Прибывший

    Участники

    Сообщений: 5

    Создано тем: 0

    Рейтинг: 1

    Репа: 0

    Баллы: 71

    Страна: не указана!

    Был: 2025-09-13 16:36

    Цитата: Leserg
    необходимо модифицировать файл HeliosPaint.jar

    Цитата: Leserg
    Декомпилируем его в код Java с помощью соответствующих инструментов и выполняем анализ кода.


    Спасибо Вам за подробную инструкцию!
    Пытался разобраться ища информацию в интернете по инструментам и их применению
    Но к сожалению для меня это не выполнимо по причине полного отсутствия опыта в программировании и соответствующих инструментов
    Судя по скриншоту у Вас получился итоговый файл HeliosPaint_fixed.jar позволяющий отображать интерфейс на русском языке
    Может быть вы сочтете возможным скинуть готовый файл HeliosPaint_fixed.jar
    Был бы очень Вам благодарен!
    11 сентября 2025 - 19:44 / #2068
  9. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 1003

    Создано тем: 79

    Рейтинг: 8

    Репа: (133|133|0)

    Баллы: 1971

    Был: 2025-09-11 22:24

    Лайков: 215

    Цитата: TORFER
    Может быть вы сочтете возможным скинуть готовый файл HeliosPaint_fixed.jar

    Внимание! У вас нет прав для просмотра скрытого текста.

    В архиве по ссылке поправленный файл HeliosPaint_fixed.jar.
    • Распакуйте содержимое архива в удобное место на вашем ПК.
    • Создайте резервную копию оригинального файла HeliosPaint.jar.
    • Переименуйте файл HeliosPaint_fixed.jar в HeliosPaint.jar.
    • Скопируйте его в корневой каталог по месту установки программы и подтвердите замену.
    • Проверьте работу приложения.


    Всего наилучшего!

    P.S. Учтите, что при выходе новой версии программы процедуру исправления нужно будет повторить.
    Смотрящий, NNK_RTR нравится это сообщение.
    Сообщение отредактировал Leserg 11 сентября 2025 - 22:24

    Кто ищет, тот всегда найдет!

    11 сентября 2025 - 22:21 / #2069
  10. Оффлайн

    TORFER

    Звание: Прибывший

    Участники

    Сообщений: 5

    Создано тем: 0

    Рейтинг: 1

    Репа: 0

    Баллы: 71

    Страна: не указана!

    Был: 2025-09-13 16:36

    Цитата: Leserg
    Да, конечно

    Огромное Вам спасибо!
    Работает прекрасно
    12 сентября 2025 - 13:26 / #2070

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1221
Всего сообщений
16429
Пользователей
18241
Новый участник
takashi