Вступление
Представьте, что ваш личный или рабочий проект ориентируется не только на аудиторию одной страны, в которой вы живете и работаете, а на многие страны. Первое что приходит в голову, это сделать все на английском. Вы будете правы, но только отчасти. Согласитесь, при виде интерфейса, запускаемой программы, на своем родном языке вы будете ей пользоваться с большим удовольствием. Будет чувствоваться, что разработчик сделал не для всех, а для жителей вашей страны.
Великий и ужасный GETTEXT
Gettext библиотека, которая сможет адаптировать язык вашего приложения для любой страны.
Данную библиотеку поддерживают многие популярные языки программирования такие как C++, Java, php, js и другие.
В этой статье будет рассмотрен пример работы gettext с кодом написанном на Python.
Начнем уже писать код
Перед началом работы загрузим библиотеку с помощью менеджера пакетов pip
pip install gettex
И импортируем ее и необходимые библиотеки в наш проект
import os
import gettext
Следующим шагом является создание дерева каталогов определенного типа:
my_dir/target_lang/LC_MESSAGES
Пример для английского и русского языка:
lang/en/LC_MESSAGES/
lang/ru/LC_MESSAGES/
Теперь мы должны научить программу работать с данными директориями:
_ = gettext.translation('name_domain', os.path.join(os.getcwd(), "my_dir/"), languages=[os.environ['LANGUAGE']])
my_dir - директория которую вы создали в той же папки, что и ваш проект
name_domain - может быть любым, запомним его, он нам понадобиться позже.
Теперь все строки вида:
_('Мой текст')
или
_('Вы живете в городе {}').format(state)
Будут автоматически индексироваться библиотекой.
Когда ваш проект закончен, можно переходить к следующему этапу.
Перевод вашего контента
Для этого нам понадобится бесплатная версия программы poedit.
После скачивания и установки вы увидите простой и лаконичный интерфейс:
Для начала работы с новыми переводом Файл->Создать. Программа нам предложит выбрать язык на который будет переводить.
На следующем шаге нужно загрузить наш проиндексированный текс из исходного текста программы, выбрав нужный файл на диске.
Открывшееся окно покажет вам все строки, которые вы пометили ранее:
Алгоритм работы с poedit очень прост:
- Выбираем строку
- Пишем ей соответствие на нужном языке
После того как вы перевели всё необходимое настало время скомпилировать все в код
На этом шаге именем файла нужно указать имя домене (name_domain), который указан в нашей программе и сохранить в нужную папку.
Для английского языка и домена 'test' получается :
lang/en/LC_MESSAGES/ test.mo
Что получилось в итоге
На скриншотах выше запускалась одна и таже программа, но в разных регионах (компьютер так думал) без изменения программного кода
Итоги
Представленная библиотека отлично выполняет свои функции и позволяет переводить свои проекты на другие языки не изменяя исходный код.
Плюсы:
Может хранить переводы, которыми вы когда либо пользовались
Минусы:
Нужно знать язык или пользоваться переводчиком
p.s.
Данная статья вышла благодаря моей работе в ИЦ "Баррикады", где я тружусь и по сей день
Огромное спасибо, что дочитал(-a) мою статью до конца. Надеюсь увидимся еще не раз на моем канале в Яндекс Дзен.