我遵循pythoni18n和l10n流程在Python应用程序中具体化和翻译文本消息。但是当我将Python代码打包到一个wheel包中时,在setuptools文档中找不到任何指导。你知道吗
因为本地化的消息文件可以被视为数据文件。或许,我可以使用package\ u data parms来包含这些文件。然而,这样做似乎并不正确。因为部署的本地化消息文件应该位于系统默认的locale位置/usr/share/locale或用户特定的位置。不管怎样,我发现要将pkg\u资源包连接到gettext包而不干扰真正的物理路径黑客攻击都是困难的。你知道吗
我就是这么做的。我验证了wheel包在Linux、macosx和windows10中正确地部署和加载了本地化的*.mo消息目录文件。你知道吗
将locales文件夹移到顶层Python包文件夹下。例如,假设您的包名为
pkg1
,并且您拥有法语地区的my_msg.mo
目录文件。将*.mo文件移到pkg1/locales/fr/LC_MESSAGES/my_msg.mo
在你的设置.py,添加:
... package_data={'pkg1': ['pkg1/locales//LC_MESSAGES/.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!")) ...
相关问题 更多 >
编程相关推荐