第十五章:国际化和本地化-gettext:消息编目-转换工作流概述

第15章:国际化和本地化

15.1 gettext:消息编目
gettext模块提供了一个纯Python实现,与GNU gettext库兼容,用于完成消息转换和编目管理。利用Python源代码发布版提供的工具,可以从一组源文件中抽取消息,构建一个包含转换的消息编目,并使用这个消息编目在运行时为用户显示一个适当的消息。消息编目可以用来为程序提供国际化接口,使用适合用户的语言来显示消息。还可以英语其他消息定制,包括为不同包装器或合作伙伴的界面"换肤"。
说明:尽管标准库文档声称Python已经包含所有必要的工具,但是即使提供了适当的命令行选项,pygettext.py也无法抽取包装在ngettext调用中的消息。这些例子使用了GNU gettext工具集的xgettext,而不是pygettext.py

15.1.1 转换工作流概述
建立和使用转换的过程包括5个步骤。
1.标识并标记源代码中包含待转换消息的字面量串。
首先在程序源代码中标识需要转换的消息,并标记字面量串,以便抽取程序发现这些字面量串。
2.抽取消息
标识源代码中可以转换的串之后,使用xgettext抽取出这些串,并创建一个.pot文件,或转换模板(translation template)。这个模板是一个文本文件,包含所有已标识串的副本及对应其转换的占位符。
3.转换消息。
将.pot文件的一个副本提供给转换器,将扩展名改为.po。这个.po文件是一个可编辑的源文件,被用作下一步编译的输入。转换器要更新这个文件中的首部文本,提供所有串的转换。
4.由转换“编译”消息编目。
转换器发回完整的.po文件时,使用,msgfmt将这个文本文件编译为二进制编目格式。运行时编目的查找代码将使用这个二进制格式。
5.运行时加载并启动适当的消息编目。
最后一步是向应用增加几行代码,配置和加载消息编目,并安装转换函数。对此有几种方法,各有优缺点。

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/94749742