如何在Python setuptools中包含本地化消息?

时间:2019-03-26 20:00:38

标签: python localization internationalization setuptools

我遵循了Python i18n和l10n的流程,以在Python应用程序中外部化和翻译文本消息。但是,当我将Python代码打包到wheel软件包中时,在setuptools文档中找不到任何指导。

因为本地化的消息文件可以被视为数据文件。也许,我可以使用package_data参数来包含那些文件。但是,这似乎不是正确的方法。因为部署的本地化消息文件应该位于系统默认语言环境位置/ usr / share / locale或用户特定的位置。无论哪种方式,我都很难将pkg_resources软件包连接到gettext软件包,而又不会弄乱实际的物理路径黑客行为。

1 个答案:

答案 0 :(得分:0)

这就是我所做的。我验证了wheel软件包已在Linux,Mac OSX和Windows 10中正确部署并加载了本地化* .mo消息目录文件。

  1. 将您的语言环境文件夹移动到顶级Python软件包文件夹下。例如,假设您的软件包名称为pkg1,而您拥有用于法语语言环境的my_msg.mo目录文件。将您的* .mo文件移动到pkg1/locales/fr/LC_MESSAGES/my_msg.mo

  2. 在setup.py中,添加: ... package_data={'pkg1': ['pkg1/locales//LC_MESSAGES/.mo']}, include_package_data=True, ...

  3. 在您的Python脚本中,使用以下方法无需硬代码即可加载任何物理路径: ... locale_path = pkg_resources.resource_filename('pkg1', 'locales') my_msg = gettext.translation(domain='my_msg', localedir=locale_path, fallback=True) _T = my_msg.gettext print(_T("hello world!")) ...