Skip to content

Instantly share code, notes, and snippets.

@AstraSerg
Created August 20, 2019 13:57
Show Gist options
  • Save AstraSerg/4e725e1058ad47c3e2ddc169ffa317dc to your computer and use it in GitHub Desktop.
Save AstraSerg/4e725e1058ad47c3e2ddc169ffa317dc to your computer and use it in GitHub Desktop.
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