我遵循 Python i18n 和 l10n 流程在 Python 应用程序中外部化和翻译文本消息。但是当我将Python代码打包到wheel包中时,我在setuptools文档中找不到任何指导。
因为本地化的消息文件可以被视为数据文件。也许,我可以使用 package_data pars 来包含这些文件。但是,这似乎不是正确的方法。因为部署的本地化消息文件应该位于系统默认区域设置位置/usr/share/locale 或用户特定位置。无论哪种方式,我发现很难将 pkg_resources 包连接到 gettext 包而不干扰真正的物理路径黑客。
最佳答案
这就是我所做的。我验证了wheel包在Linux、Mac OSX和Windows 10中正确部署并加载了本地化的*.mo消息目录文件。
将您的语言环境文件夹移至顶级 Python 包文件夹下。例如,假设您的包名称
pkg1
你有my_msg.mo
法语语言环境的目录文件。将您的 *.mo 文件移至pkg1/locales/fr/LC_MESSAGES/my_msg.mo
在 setup.py 中添加:
... package_data={'pkg1': ['pkg1/locales/<em>/LC_MESSAGES/</em>.mo']}, include_package_data=True, ...
在您的 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!")) ...
关于python - 如何在 Python setuptools 中包含本地化消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55365356/