python 国际化一词多义翻译

先举个栗子吧

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

发现喜欢贴官网说明 上图:
这里写图片描述
将多义词以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 <module>
    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 "<unknown>", line 1
    msgctxt "test"
SyntaxError: invalid syntax

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

1. 在ubuntu中先安装gettext

sudo apt-get install gettext

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

apt-cache search gettext

这里写图片描述

2. 编译

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

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

再贴个动态图吧
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值