Перевод расширений на разные локали
Добавлено: 06 май 2025, 19:24
Расширения Gnome-shell: переведите ваше расширение на разные локали
Чтобы переименовать имя и описание, открываем, например, /home/$USER/.local/share/gnome-shell/extensions/gjsosk@vishram1123.com/metadata.json и меняем name и description.
Создать новый перевод
Проверьте установлен ли:
Открываем корневой каталог с расширением, например /home/$USER/.local/share/gnome-shell/extensions/gjsosk@vishram1123.com/ и создаём папку po, в которой будут храниться файлы перевода (вы также можете хранить их в корневой папке расширения):
Или короткая версия, чтобы не перечислять все файлы с расширением .js:
Эта команда ссылается на все переводимые строки из файлов extension.js, file1.js и prefs.js в файле messages.pot.
Теперь создадим файл локали для первого перевода. Открываем папку po и выполняем:
Он спросит address, можно просто нажать на enter.
Он создаёт файл ru.po, содержащий ключи и значения переводимых строк. Теперь открываем ru.po и приступаем к переводу своего расширения. Также необходимо изменить кодировку в строке “Content-Type: text/plain; charset=ISO-8859-5\n” на “Content-Type: text/plain; charset=UTF-8\n”
Следующий шаг — убедиться, что ваше приложение использует ваши переводы. В корневом каталоге вашей папки с расширением выполните следующую команду, чтобы создать папку, в которой будет находиться файл, который наше расширение сможет интерпретировать на основе предыдущих переводов:
А теперь приступаем к созданию файла машинного перевода:
Обратите внимание: gjsosk@vishram1123.com это gettext-domain. Его можно найти в файле metadata.json.
Готово! Перезапустите Gnome-shell, и ваш перевод должен заработать.
Для конвертации файлов с расширениями .mo в .po в Linux можно использовать программы msgfmt и msgunfmt, которые входят в состав пакета gettext.
Чтобы сконвертировать файл с расширением .mo в текстовый файл с расширением .po, нужно выполнить команду в консоли:
Чтобы наоборот, сконвертировать текстовый файл с расширением .po в бинарный файл с расширением .mo, необходимо выполнить команду:
Если при выполнении команды xgettext -k_ -kN_ -o po/messages.pot *.js возникает следующая ошибка:
Если в файле ru.po нету нужной строки для перевода, то её можно создать самому дописав в конце.
Чтобы переименовать имя и описание, открываем, например, /home/$USER/.local/share/gnome-shell/extensions/gjsosk@vishram1123.com/metadata.json и меняем name и description.
Проверьте установлен ли:
Код: Выделить всё
sudo dnf install gettex
Код: Выделить всё
mkdir po
xgettext -k_ -kN_ -o po/messages.pot extension.js file1.js prefs.js
Код: Выделить всё
mkdir po
xgettext -k_ -kN_ -o po/messages.pot *.js
Теперь создадим файл локали для первого перевода. Открываем папку po и выполняем:
Код: Выделить всё
LANG=ru_RU msginit
Он создаёт файл ru.po, содержащий ключи и значения переводимых строк. Теперь открываем ru.po и приступаем к переводу своего расширения. Также необходимо изменить кодировку в строке “Content-Type: text/plain; charset=ISO-8859-5\n” на “Content-Type: text/plain; charset=UTF-8\n”
Код: Выделить всё
mkdir -p locale/ru/LC_MESSAGES
Код: Выделить всё
msgfmt po/ru.po -o locale/ru/LC_MESSAGES/gjsosk@vishram1123.com.mo
Готово! Перезапустите Gnome-shell, и ваш перевод должен заработать.
Для конвертации файлов с расширениями .mo в .po в Linux можно использовать программы msgfmt и msgunfmt, которые входят в состав пакета gettext.
Чтобы сконвертировать файл с расширением .mo в текстовый файл с расширением .po, нужно выполнить команду в консоли:
Код: Выделить всё
msgunfmt gjsosk@vishram1123.com.mo -o gjsosk@vishram1123.com.po
Код: Выделить всё
msgfmt gjsosk@vishram1123.com.po -o gjsosk@vishram1123.com.mo
То нужно писать:xgettext: Не ASCII-строка у prefs.js:862.
Укажите входную кодировку с помощью параметра --from-code
Код: Выделить всё
xgettext -k_ -kN_ -o po/messages.pot *.js --from-code UTF-8