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

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

    Leserg

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

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

    Сообщений: 945

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

    Рейтинг: 8

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

    Баллы: 1676

    Был: 2024-07-28 22:59

    Лайков: 166

    Цитата: MortenO410
    Перевод делаю на основе немецкого. Английский интерфейс хочу оставить

    MortenO410, переводить можно с английского языкового файла, он никуда не денется. В проекте Radialix укажите создавать новый файл с именем SeoSpider_ru.properties и все. После перевода полученный файл нужно просто поместить в папку к остальным языковым файлам.

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

    В настройках программы язык интерфейса выбрать по языку системы (System).
    На системах с русской локалью интерфейс программы автоматом будет на русском языке.



    Все языки, в том числе и английский, останутся доступными в любой момент, по желанию пользователя.

    Конечно же, если у пользователя установлена ось отличная от русского, то интерфейса на русском у него не будет. В этом случае можно вручную в файлах конфигурации программы ScreamingFrogSEOSpider.l4j.ini и ScreamingFrogSEOSpiderCli.l4j.ini, которые находятся в папке приложения по месту его установки, убрать признак комментария у параметра -Duser.language и указать для него значение ru, т.е. получится вот так -Duser.language=ru. Об этом, кстати, написано в самих файлах конфигурации.



    Да, еще момент!
    В программе есть ещё одно место с языковыми файлами, в которых находятся строки интерфейса (диалоги настроек, отладка и прочее), отсутствующие в основном языковом файле. Это файл utils-1.0-SNAPSHOT.jar из папки "lib" в каталоге с установленной программой.



    Таким образом необходимо сделать ещё языковой файл Utils_ru.properties.

    Подводя итог вышесказанному.
    Чтобы интерфейс программы стал на русском достаточно сделать и добавить языковые файлы:
    1) SeoSpider_ru.properties для файла ScreamingFrogSEOSpider.jar (подпапка "translations");
    2) Utils_ru.properties для файла utils-1.0-SNAPSHOT.jar (подпапка "translations");
    3) В ScreamingFrogSEOSpider.l4j.ini и ScreamingFrogSEOSpiderCli.l4j.ini указать параметр -Duser.language=ru.

    На этом все. wink_mini

    Желаю удачи!
    NNK_RTR, Смотрящий, MortenO410 нравится это сообщение.
    Сообщение отредактировал Leserg 27 июля 2024 - 00:34

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

    27 июля 2024 - 00:18 / #1951
  2. Оффлайн

    Смотрящий

    Звание: Старожил

    ИНКВИЗИТОР

    Сообщений: 778

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

    Рейтинг: 7

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

    Баллы: 4000

    Был: 2024-09-07 23:27

    Лайков: 288

    Цитата: Leserg
    На этом все.

    Желаю удачи!

    Как всегда ответ на высшем уровне!

    "В одно окно смотрели двое. Один увидел дождь и грязь.
    Другой — листвы зеленой вязь. Весну и небо голубое.
    В одно окно смотрели двое... "



    У нас свободный форум! Но в рамках приличий ! Конструктивная критика по существу с обратной связью !

    27 июля 2024 - 19:03 / #1952
  3. Оффлайн

    MortenO410

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

    Стажер

    Сообщений: 15

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

    Рейтинг: 1

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

    Баллы: 175

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

    Был: 2024-08-01 08:49

    Цитата: Leserg
    В настройках программы язык интерфейса выбрать по языку системы (System).
    На системах с русской локалью интерфейс программы автоматом будет на русском языке.


    А можно добавить в соответствующее меню Russian чтобы выбиралось не через (System)?
    28 июля 2024 - 01:23 / #1953
  4. Оффлайн

    MortenO410

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

    Стажер

    Сообщений: 15

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

    Рейтинг: 1

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

    Баллы: 175

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

    Был: 2024-08-01 08:49

    Цитата: Leserg
    Чтобы интерфейс программы стал на русском достаточно сделать и добавить языковые файлы:
    1) SeoSpider_ru.properties для файла ScreamingFrogSEOSpider.jar (подпапка "translations");
    2) Utils_ru.properties для файла utils-1.0-SNAPSHOT.jar (подпапка "translations");
    3) В ScreamingFrogSEOSpider.l4j.ini и ScreamingFrogSEOSpiderCli.l4j.ini указать параметр -Duser.language=ru.


    Еще есть и третий ресурс в котором находятся строки для перевода, это файл:
    controls_de.properties

    который находится в javafx-controls-17.0.9-ea+c36-win.jar
    28 июля 2024 - 01:30 / #1954
  5. Оффлайн

    Leserg

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

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

    Сообщений: 945

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

    Рейтинг: 8

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

    Баллы: 1676

    Был: 2024-07-28 22:59

    Лайков: 166

    Цитата: MortenO410
    А можно добавить в соответствующее меню Russian чтобы выбиралось не через (System)?

    Да, можно.
    Для этого нужно отредактировать SupportedLanguage.class в файле utils-1.0-SNAPSHOT.jar по пути "uk\co\screamingfrog\utils\languagemanager\".

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

    Этот файл можно найти по одному из имён языков, которые отображаются в списке выбора.
    К примеру я использовал для поиска имя "English (UK)" - строка нашлась только в файле SupportedLanguage.class.

    Самый простой вариант создания возможности выбора Русского языка интерфейса - это замена одного из языков (кроме Английского) в списке на Русский.

    ВАЖНО! Перед началом каких-либо модификаций с любыми файлами приложения обязательно сделайте их резервную копию.

    Вариант I

    Используем инструмент InJarTranslator. Он работает с файлами JAR напрямую, поэтому извлекать их них ничего не нужно. Запускаем инструмент, открываем файл utils-1.0-SNAPSHOT.jar, идём по пути "uk\co\screamingfrog\utils\languagemanager\SupportedLanguage", пролистывая список (или используем инструмент поиска), и изменяем значения выбранного языка, например, Итальянского, на Русский. Замену нужно сделать для идентификатора языка, его названия и аббревиатуры.

    ITALIAN -> RUSSIAN
    Italiano (Italia) -> Russian (Russia)
    it -> ru



    После редактирования получится вот так:



    Нажимаем кнопку "Сохранить JAR". Инструмент сообщит об успешном выполнении операции.
    После этого Русский будет в списке доступных языков вместо Итальянского.



    Вместо инструмента InJarTranslator можно использовать древний инструмент InClassTranslator.
    На удивление он без проблем справился с файлом SupportedLanguage.class:



    Но в отличие от InJarTranslator, придётся извлечь файл SupportedLanguage.class из utils-1.0-SNAPSHOT.jar, а после редактирования вставить обратно, заменив исходный.

    Вот и все. Работы на полминуты.

    Теперь вы знаете, как можно сделать возможность выбора Русского языка в настройках программы, хотя для этого пришлось пожертвовать другим языком.

    Если же хочется сделать все по "фэн-шую", а именно добавить, то необходимо потратить немного больше времени.

    gy
    Смотрящий нравится это сообщение.

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

    28 июля 2024 - 21:55 / #1955
  6. Оффлайн

    Leserg

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

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

    Сообщений: 945

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

    Рейтинг: 8

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

    Баллы: 1676

    Был: 2024-07-28 22:59

    Лайков: 166

    Вариант II

    Теперь собственно добавление Русского языка в существующий список выбора.
    Для этого необходимо декомпилировать файл SupportedLanguage.class в исходник SupportedLanguage.java, отредактировать его, добавив запись о русском языке, и скомпилировать обратно в файл формата .class.

    Итак, извлекаем файл SupportedLanguage.class из utils-1.0-SNAPSHOT.jar. Для декомпиляции в исходный код можно воспользоваться как специализированными инструментами, например, Bytecode Viewer, или используя специализированные онлайн службы, например, Java Decompiler Online (коротко - JDec).

    Для примера возьмем онлайн сервис - JDec. На главной странице загружаем файл SupportedLanguage.class и получаем исходник.

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

    Справа вверху щелкаем по строке SupportedLanguage.java и загружаем полученный исходник к себе на ПК.

    Открываем его текстовом редакторе, например, Notepad++. Будем редактировать. Исходная кодировка файла UTF-8, а формат конца строк - Unix. Не трогаем и не изменяем их! Вам потребуются минимальные знания по программированию Java. Нужно просто добавить языковой идентификатор, имя и название языка, действуя так, как это сделано для уже имеющихся языков.

    В начале кода сценария идет объявление массива с данными поддерживаемых языков:



    По аналогии с этим списком, после строки ITALIAN("Italiano (Italia)", "it") и перед знаком точки с запятой, ставим запятую и с новой строки вводим строку RUSSIAN("Русский (Россия)", "ru"):



    На этом редактирование завершено, сохраняем сделанные изменения.

    Теперь самое интересное. Компилировать обратно в class-файл нужно в той же версии Java, которую использовали для сборки исходной версии SupportedLanguage.class. Для этого изучаем спецификацию формата .class.



    Первые четыре байта (u4 - magic) - это магическое число, которые определяют формат файла .class. Оно никогда не изменяется и равно CAFEBABE.
    Следующие 2 байта (u2 - minor_version) - младшая версия.
    Еще следующие 2 байта (u2 - major_version) - старшая версия.

    Остальные данные нам не нужны, главное - версия. Открываем исходный файл SupportedLanguage.class в шестнадцатеричном редакторе и смотрим версию class-файла:



    Младшая версия - 0. Старшая версия - 3D, в десятичном формате 61. Теперь ищем в инете, какой выпуск компилятора Java соответствует версии 61 class-файла. Например здесь можно узнать, что это Java 17.

    Идем на страницу загрузок Java и загружаем пакет JDK 17 для разработчиков на платформе Windows. Если у вас другая платформа, то выбираете соответствующую.



    Устанавливаем, перегружаем ПК. Я делал все это на виртуальном ПК.

    Перед компиляцией необходимо воссоздать исходные условия, при которых была выполнена сборка оригинальных файлов программы, и подготовить зависимости.

    Под исходными условиями имеется в виду структура каталогов, где находится файл, который необходимо собрать. В данном случае мы знаем, что файл SupportedLanguage.class находится в файле utils-1.0-SNAPSHOT.jar по пути "uk\co\screamingfrog\utils\languagemanager\".

    Зависимости - это другие файлы (или библиотеки), без которых сборка исходного файла будет невозможной. В любых исходниках эти зависимости указываются в самом начале кода. В данном случае в файле SupportedLanguage.java указаны следующие зависимости (смотрите в директивах import):

    uk.co.screamingfrog.utils.i18n.UtilsKeys - это файл UtilsKeys.class по пути "uk\co\screamingfrog\utils\i18n";
    uk.co.screamingfrog.utils.utils.Translatable - это файл Translatable.class по пути "uk\co\screamingfrog\utils\utils".

    На системную библиотеку java.util.Optional не обращаем внимание - она уже имеется после установки Java.

    В свою очередь у этих файлов могут быть свои зависимости и т.д. Таким образом, чтобы не морочить себе голову выискиванием всех зависимостей, проще при компиляции нашего файла использовать все содержимое подкаталога "uk" из файла utils-1.0-SNAPSHOT.jar.

    Итак, поехали.

    1) Создайте на диске С: папку с коротким именем, например, "LANG",
    C:\LANG - этот каталог будет корневым для компиляции файла.

    2) Распакуйте в папку "LANG" папку "uk" из файла utils-1.0-SNAPSHOT.jar со всем содержимым (C:\LANG\uk).

    3) Скопируйте в папку "languagemanager" наш модифицированный файл SupportedLanguage.java. Полный путь к нему будет выглядеть так:

    C:\LANG\uk\co\screamingfrog\utils\languagemanager\SupportedLanguage.java

    4) В папке "LANG" (C:\LANG) создайте каталог с именем файл JAR, из которого мы извлекали файл SupportedLanguage.class, т.е. с именем "utils-1.0-SNAPSHOT" без расширения jar. В эту папку компилятор выведет собранный исходный файл.

    По итогу у вас должно получиться так:





    Компиляцию нужно выполнять из начального каталога (см. пункт 1), т.е. C:\LANG.
    Открываем в этом каталоге окно командной строки (с правами администратора) и вводим следующую строку:

    javac -encoding UTF-8 -d utils-1.0-SNAPSHOT uk\co\screamingfrog\utils\languagemanager\SupportedLanguage.java



    здесь javac - компилятор командной строки java;
    -encoding UTF-8 - параметр кодировки файла - UTF-8;
    -d utils-1.0-SNAPSHOT - параметр вывода скомпилированного файла - папка "utils-1.0-SNAPSHOT";
    uk\co\screamingfrog\utils\languagemanager\SupportedLanguage.java - относительный путь и имя исходного файла для компиляции.

    ... и нажимаем клавишу "Ввод". Будет выполнена компиляция.



    Компилятор выдал 1 предупреждение о небезопасной операции. Чтобы узнать в каком месте кода это произошло, необходимо выполнить перекомпиляцию файла с параметром -Xlint:unchecked. Но если вы не программист на языке Java, то этот вам ни о чём не скажет. Поэтому в данном случае игнорируем это предупреждение. Главное, чтобы не было ошибок.

    Идём в папку "utils-1.0-SNAPSHOT" и берём там новый файл SupportedLanguage.class (не пугайтесь - компилятор воссоздал структуру каталогов для этого файла, т.е. так, как это действительно в оригинальном файле utils-1.0-SNAPSHOT.jar).

    Теперь копируем этот файл в utils-1.0-SNAPSHOT.jar по месту установки программы, подтверждая его замену.



    Теперь запускаем программу и идем в настройки языка. Русский язык появился в списке выбора наряду с другими языками.



    Таким образом мы успешно добавили Русский в список доступных языков и предоставили пользователю возможность его выбора.

    Вот и всё. Работы на пять минут joker
    Смотрящий нравится это сообщение.
    Сообщение отредактировал Leserg 28 июля 2024 - 22:41

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

    28 июля 2024 - 22:29 / #1956
  7. Оффлайн

    Leserg

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

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

    Сообщений: 945

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

    Рейтинг: 8

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

    Баллы: 1676

    Был: 2024-07-28 22:59

    Лайков: 166

    Цитата: MortenO410
    Еще есть и третий ресурс в котором находятся строки для перевода, это файл:
    controls_de.properties, который находится в javafx-controls-17.0.9-ea+c36-win.jar

    Это компонент JavaFX, который использовался при создании программы. Не уверен, что из него читаются строки. Хотя все возможно. Если добавите языковой файл русского (controls_ru.properties), то лишним он, думаю, не будет.

    Пробуйте, вам все карты в руки.

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

    28 июля 2024 - 22:52 / #1957
  8. Оффлайн

    MortenO410

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

    Стажер

    Сообщений: 15

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

    Рейтинг: 1

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

    Баллы: 175

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

    Был: 2024-08-01 08:49

    Цитата: Leserg
    Используем инструмент InJarTranslator.

    Этим инструментов никогда не пользовался. Очень понравился в использовании пр редактировании файлов *.class. Спасибо
    29 июля 2024 - 23:35 / #1958
  9. Оффлайн

    MortenO410

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

    Стажер

    Сообщений: 15

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

    Рейтинг: 1

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

    Баллы: 175

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

    Был: 2024-08-01 08:49

    Цитата: Leserg
    Вместо инструмента InJarTranslator можно использовать древний инструмент InClassTranslator


    При редактировании данным инструментом файла *.class как преобразовать обратно полученный файл с расширением в *.class?

    Потому что я при использовании MobiTrans после редактирования файла *.class получив 3 файла на выходе (GA4ColumnHeaderType.class.rus, GA4ColumnHeaderType.class.txt, GA4ColumnHeaderType.class.loc) и просто в файле GA4ColumnHeaderType.class.rus корректирую расширение на GA4ColumnHeaderType.class. В результате получается файл с переводом
    29 июля 2024 - 23:44 / #1959

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

---
Создано тем
1185
Всего сообщений
15658
Пользователей
17940
Новый участник
Ives2005