Интернационализация и локализация

Лекции прошлых лет:

Термины

Объекты ПО

Другие объекты продукта

Локализация: инструменты

GNU Gettext

Документация

Создание перевода

  1. I18n:
    • Обмажем функцией gettext() все строки, нуждающиеся в переводе

      • Есть ещё ngettext(), см. ниже

  2. (xgettext) Создадим на основе i18n-ванного исходного кода шаблон перевода, файл domain.pot (domain — это довольно произвольное название того, что мы переводим)

    • Не удаляйте сгенерированные комментарии из файла, это не комментарии ☺!
  3. (msginit) Создадим прототип перевода (для русского — ru.po)

  4. (текстовый редактор или специализированный инструмент редактирования .po) Переведём все строки в ru.po

  5. (msgfmt) Скомпилируем перевод в файл ru.mo

Обновление перевода

Вышла новая версия программы (или сами поправили). Там «поехали» строки с сообщениями (появились новые, пропали/изменились/переместились старые).

  1. (xgettext) Сгенерируем новый шаблон

  2. (msgmerge) Обновим содержимое ru.po на основании шаблона и старого ru.po. У msgmerge много искусственного мозга:

    • Не теряет старые переводы (только комментирует)
    • Размечает новые сообщения возможными переводами из старых/законмментированных

  3. Допереводим ru.po

  4. (msgfmt) Компилируем новый перевод

LecturesCMC/PythonDevelopment2020/08_L10n/Gettext.svg.png

Ход работы

gettext и autotools

Есть поддержка, она в первую очередь имеет смысл для больших проектов

Пример

В этом примере autotools использовались для всего, кроме переводов.

Под конец пример переключается на autotools

После каждого коммита я делал

Д/З

LecturesCMC/LinuxApplicationDevelopment2021/10_I18n (последним исправлял пользователь FrBrGeorge 2021-12-10 12:00:25)