python 国际化一词多义翻译

先举个栗子吧

如:申请
1.作为一个名词,翻译为英文是apply
2.作为一个动词,翻译为因为是application
所以,国际化时候这类多义词就要做特殊处理

发现喜欢贴官网说明 上图:
python 国际化一词多义翻译_第1张图片
将多义词以msgctxt在做个标记

msgctxt "apply none"
msgid "申请"
msgstr "apply"
msgctxt "apply verb"
msgid "申请"
msgstr "application"

在python页面上 用法:

{% trans "申请" context "apply none" %}
{% trans "申请" context "apply verb" %}

关于po文件编译时候报错,在这描述下

G:\install\work\python35\Tools\i18n>python msgfmt.py G:\workspace_python\testsit
e1\test1\locale\en_US\LC_MESSAGES\django_en_US_testsite.po
Traceback (most recent call last):
  File "msgfmt.py", line 236, in 
    main()
  File "msgfmt.py", line 232, in main
    make(filename, outfile)
  File "msgfmt.py", line 184, in make
    l = ast.literal_eval(l)
  File "G:\install\work\python35\lib\ast.py", line 46, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "G:\install\work\python35\lib\ast.py", line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "", line 1
    msgctxt "test"
SyntaxError: invalid syntax

gettext翻译模块的问题,后来我到ubuntu中编译

1. 在ubuntu中先安装gettext

sudo apt-get install gettext

安装完成后会新增加相关的一些命令:
这里写图片描述
另外,在ubuntu想安装gettext,但不知到安装的名称是啥,分享一个不知道安装名称时候用的命令:

apt-cache search gettext

python 国际化一词多义翻译_第2张图片

2. 编译

(python-django)vagrant@precise64:/vagrant$ msgcat django_en_US_testsite.po |msgfmt -o testc2.mo -

注意:命令最后面是有‘-’的

再贴个动态图吧
python 国际化一词多义翻译_第3张图片

你可能感兴趣的:(Python)