Created
August 20, 2019 13:57
-
-
Save AstraSerg/4e725e1058ad47c3e2ddc169ffa317dc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import gettext | |
gettext.install("locales") | |
apt install gettext | |
/home/aaastat/locales/*/LC_MESSAGES# msgfmt -o default.mo default.po | |
Сделал структуру каталогов: | |
<pre> | |
locales | |
locales/en_US | |
locales/en_US/LC_MESSAGES | |
locales/fr_FR | |
locales/fr_FR/LC_MESSAGES | |
locales/ru_RU | |
locales/ru_RU/LC_MESSAGES | |
</pre> | |
В обрабатываемом скрипте все переводимые фразы нужно обвернуть в _() | |
Далее запустить создание темплейта: pygettext -d default gettexttest.py | |
В итоге получится default.pot | |
Отредактировать в нём метаданные. | |
Скопировать в каталоги: | |
locales/en_US/LC_MESSAGES | |
locales/fr_FR/LC_MESSAGES | |
locales/ru_RU/LC_MESSAGES | |
Отредактировать в каждом каталоге на нужные перевод. | |
msgid на русском не получились, придётся перевести всё на англиские. | |
bad_login | |
try_again | |
msgid "bad_login" | |
msgstr "Не верный логин или пароль" | |
msgid "try_again" | |
msgstr "попробуйте снова" | |
xgettext *.py \ | |
--default-domain=default \ | |
--output=locales/ru_RU/LC_MESSAGES/default.po \ | |
--join-existing \ | |
--from-code=utf-8 \ | |
--add-location \ | |
--no-wrap \ | |
--omit-header | |
--directory=/home/aaastat/ \ | |
"PO-Revision-Date: 2019-03-13 17:01+0300\n" | |
try: | |
lang = flask.session.get('lang') | |
except: | |
# default language | |
app.logger.error("Can't get lang from session. Setting default.") | |
lang = 'ru' | |
default lang is RU | |
lang_ = gettext.translation('default', localedir='locales', languages=['ru']) | |
lang_.install(unicode=1) # set _ as translating function | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment