Python 脚本编程及国际化 (3)

之后我们就可以开始翻译了,在 ./bffacilities/locale/zh_CN/LC_MESSAGES/ 目录下找到 monitor.po 文件,用编辑器打开,或者用 Poedit 打开,在 msgid 对应的 msgstr 下面填入文本即可。注意有些语句的 msgid 可能会跨多行,不用管它直接翻译就行。

翻译完成后对其进行打包:

# pybabel compile -d ./locale/ -D {} pybabel compile -d ./bffacilities/locale/ -D monitor 查看翻译效果

制作完翻译文件后,来看看脚本帮助信息是不是输出中文了,先检查一下 locale 的输出:

Python 脚本编程及国际化

查看 bf_monitor 的帮助信息:

Python 脚本编程及国际化

修改 locale,LANG=en_US.UTF-8 && LANGUAGE=en_US,locale 输出变为:

Python 脚本编程及国际化

再看看 bf_monitor 的帮助信息:

Python 脚本编程及国际化

修改 setup.py

最后我们要将写好的程序打包,为了防止在打包过程中丢失翻译文件,我们要将 setup 参数中的 zip_safe 改为 false: zip_safe=False,
然后在 setup.py 的同级目录下添加 MANIFEST.in 文件,内容如下:

recursive-include bffacilities/locale * global-exclude *.pyc

最后上传到 pypi 上面即可通过 pip 下载安装。

P4 小结

之前使用 Nodejs 时,我用 Node 编写过一个文件变动检测的脚本,但是现在我找不到之前的那篇博客了,文件变动检测的 Python 脚本和 Node.JS 脚本原理都是一样的,都是通过监听文件事件,然后执行回调函数。

另外通过这次的翻译过程我掌握了如何国际化 Python 程序,之前我做 Qt 程序时对 Qt 的翻译流程比较清楚,转用 Python 程序后发现其实国际化的流程都很类似,在文件中查找调用翻译函数,提取之后用软件或编辑器进行翻译。最后转换成程序可以直接读取的格式(可能这样做能够提高程序的效率吧)。

这段程序的代码可以在 github 上找到,你也可以看到整个项目的源代码。如果你觉得这篇文章对你有所帮助或者你认为这篇文章还不错,就给我点个赞吧,感谢你的支持。

参考

python的国际化gettext模块
Flask-Babel 简介
The Invent with Python Blog

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxsjp.html