Речь пойдет об одном из способов перевода интерфейса на примере веб-приложения, для работы нам понадобятся утилита xgettext и какое-нибудь приложение для работы с файлами переводов gettext (*.po), так же консольная программа msgfmt. Все это можно без труда получить из сети или найти на диске с дистрибутивом linux, его и будем использовать.
Первое что необходимо сделать — получить все строковые значения, которые выводятся на экран и так или иначе используются в приложении. В этом нам поможет утилита xgettext. Она распознает простые строковые значения, которые встречаются в исходном тексте программы и скалывает их в файл перевода с расширением .po. Для того что бы это произошло нужно выполнить команду в консоли:
xgettext -n /путь/к/входному/файлу -o /путь/к/файлу/с/результатом
так же можно передать не отдельный файл, а директорию и указать язык программирования:
xgettext -L PHP -n -D /путь/к/директории/с/файлами -o /путь/к/файлу/с/результатом
В результате получаем файл с таким содержанием:
#: /home/user/main.php:8
msgid "Добро пожаловать"
msgstr ""
#: /home/user/main.php:16
msgid "Выход"
msgstr ""
Следующим шагом будет непосредственно перевод файла .po, это можно сделать и вручную просто заполнив строку msgstr, но при таком подходе легко можно что-то перепутать особенно если файл очень большой или их несколько. Существует несколько программ с хорошей документацией способных облегчить эту задачу одна из них это Kbabel.
Теперь осталось скомпилировать файл перевода, не все приложения этого требуют, некоторые используют их в таком человеко-понятном виде, но эти программы работают не так быстро, чем те которые используют файлы переводов в машинном формате, эти файлы имеют расширение *.mo. Заняться этим может утилита msgfmt все что нужно сделать — выполнить команду в консоли:
msgfmt /файл/перевода -o /файл/для/вывода/результата
здесь так же можно указать опцию -D для того что бы msgfmt скомпилировал все файлы в указанной директории.