Код работает для меня, когда я использую правильную кодировку вместо слова CHARSET
в en.po
- ie. UTF-8
"Content-Type: text/plain; charset=UTF-8\n".
![enter image description here](https://i.stack.imgur.com/QjpFS.png)
BTW:
Когда я использую в консоли / терминал
msgfmt -c en.po -o myapp.mo
, тогда он даже показывает предупреждение
en.po: warning: Charset "CHARSET" is not a portable encoding name.
Message conversion to user's charset might not work.
и подтверждает, что CHARSET
необходимо изменить.
Он также показывает предупреждения для другие значения - PACKAGE VERSION
, YEAR-MO-DA HO:MI+ZONE
, FULL NAME <EMAIL@ADDRESS>
, LANGUAGE
- но они не так важны.
po/en.po:7: warning: header field 'Project-Id-Version' still has the initial default value
po/en.po:7: warning: header field 'PO-Revision-Date' still has the initial default value
po/en.po:7: warning: header field 'Last-Translator' still has the initial default value
po/en.po:7: warning: header field 'Language-Team' still has the initial default value
po/en.po:7: warning: header field 'Language' still has the initial default value
EDIT:
кажется кодовыми наборами LC_ALL
- locale.setlocale(locale.LC_ALL, ...)
, но в моей системе (Linux Mint 19.2 на основе Ubuntu 18.04) у меня также есть LANG=pl_PL.UTF-8
, LANGUAGE=pl_PL:pl
и, возможно, это имеет значение. Но я не могу установить его в коде locale.setlocale(locale.LANG, ...)
EDIT:
Вы подтвердили, что проблема была в переменной LANGUAGE
.
Если LANGUAGE
равно hu:en
или hu
, то .mo
файл должен находиться в папке hu
вместо hu_HU
BTW:
Я проверил, что у меня также есть папка hu
в /usr/share/locale/
, но когда я запускаю
locale -a | grep hu
, он показывает мне
hu_HU
hu_HU.UTF-8
И locale.setlocale(locale.LC_ALL, 'hu')
дает мне ошибку, но locale.setlocale(locale.LC_ALL, 'hu_HU')
работает без ошибок.
Я создал две папки с разными словами mo/hu_HU/...
и mo/pl_PL/...
, и даже если я использую locale.setlocale(locale.LC_ALL, 'hu_HU')
, я вижу слова из pl_PL
. Но когда я удаляю locale.setlocale()
, я вижу английские sh слов.
Чтобы увидеть слова из hu_HU
, мне нужно запустить его в консоли как
LANGUAGE=hu_HU python test.py