nik*_*k90 6 python translation application-development
我正在创建一个 python GTK3 程序。我想添加翻译支持。我知道如何创建 .pot 和 .po 文件。但是,为了使应用程序以多种语言可用,我需要生成 .mo 文件。我在这里读到生成 .mo 文件的方法是使用msgfmt.make命令。
我的问题是我(开发人员)是否应该在我的计算机中手动生成 .mo 文件,然后指示 .deb 安装程序在安装时将文件移动到 usr/share/locale/en_GB/ 文件夹中?或者 .deb 安装程序应该在用户在他的系统上安装我的程序时生成这些 .mo 文件吗?
在某种程度上,这可以概括为“ .mo 文件是否依赖于机器? ”
我的文件夹结构如下
nstrain-0.1
/debian
/data
/help
/nstrain_lib
nstrain.desktop
nstrain.py
Run Code Online (Sandbox Code Playgroud)
其中 nstrain.py 是 .desktop 文件在用户单击我的程序时运行的主要可执行文件。
二进制MO 文件需要在构建时生成。这意味着您的构建系统需要有一个构建目标来读取用作源的文本PO 文件并将它们转换为将安装在用户系统中的二进制 MO 文件。正如您正确指出的那样,msgfmt
命令(gettext 工具的一部分)最终将创建它们。
所以要回答问题的最后一部分,是的,MO 文件依赖于机器。
现在讨论如何创建它们,在标准的 gettext 布局中,您通常会将所有 PO 文件放在同一目录中,每种语言一个,并以每种语言的 ISO-639 2 字母或 3 字母代码命名:
po/
po/ca.po
po/de.po
...
Run Code Online (Sandbox Code Playgroud)
如果您想手动构建它们,则必须遍历该目录中的每个文件并msgfmt
手动调用,例如
$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo
Run Code Online (Sandbox Code Playgroud)
但是,当已经建立了专门用于构建 MO 文件的操作和自动化工具时,您不想这样做。
此外,这些工具负责其他相关任务,例如从代码中提取翻译并将它们全部放在一个 POT 文件中,以便翻译人员完成他们的工作。
如果您使用的是 Python,我非常推荐使用python-distutils-extra包(安装 pde),它可以自动化并隐藏复杂性,只需在setup.py
您将用于构建、安装和分发的文件中指定以下内容你的应用程序。与@dobey 已经在他的回答中指出的示例相同:
DistUtilsExtra.auto.setup(
name='myapp',
version='0.1',
#license='GPL-3',
#author='Your Name',
#author_email='email@ubuntu.com',
#description='UI for managing …',
#long_description='Here a longer description',
#url='https://launchpad.net/myapp'
)
Run Code Online (Sandbox Code Playgroud)
这将为您处理一切。
如果你想在发送之前测试翻译,你可以使用build_i18n
python-distutils-extra 中的方便命令:
$ python setup.py build_i18n
Run Code Online (Sandbox Code Playgroud)
这将在您的/po
文件夹中构建所有 PO 文件,并将它们放在build
(如果它不存在,它将创建)以 gettext 在系统中安装时所期望的相同布局。
然后,您可以通过以下方式使用翻译测试您的应用程序: * 复制/build
to的内容/usr/share/locale
,或 * 使用以下gettext.bindtextdomain()
函数将您的应用程序指向构建目录:
gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')
Run Code Online (Sandbox Code Playgroud)
站在巨人的肩膀上。只需使用Quickly创建一个测试应用程序并复制在 中设置翻译的方式setup.py
,这基本上归结为DistutilsExtra
在auto
模式中使用模块,如上所述。
您也可以使用测试应用程序来生成翻译并了解生成的工作原理。
您作为发行版的一部分放在一起的 tarball 不应包含 .mo 文件。也就是说,您不必手动构建它们。当有人构建要手动安装的 tarball 内容或正在创建 Debian 二进制包时,需要发生这种情况。
查看您的源代码树,我再次建议使用诸如 python-distutils-extra 之类的构建系统,这也有助于打包。粗略地说,您需要:
setup.py
与上面建议的内容类似的文件debian/rules
文件可以变得非常简单并且只包含几行。实际上,您可能只想使用 Quickly 为您的应用程序的构建和打包系统创建工具,然后用您的应用程序代码替换 Quickly 为测试应用程序生成的源代码。
归档时间: |
|
查看次数: |
2677 次 |
最近记录: |