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

2024-05-20 20:46:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我遵循pythoni18n和l10n流程在Python应用程序中具体化和翻译文本消息。但是当我将Python代码打包到一个wheel包中时,在setuptools文档中找不到任何指导。你知道吗

因为本地化的消息文件可以被视为数据文件。或许,我可以使用package\ u data parms来包含这些文件。然而,这样做似乎并不正确。因为部署的本地化消息文件应该位于系统默认的locale位置/usr/share/locale或用户特定的位置。不管怎样,我发现要将pkg\u资源包连接到gettext包而不干扰真正的物理路径黑客攻击都是困难的。你知道吗


Tags: 文件代码文档文本应用程序消息package数据文件
1条回答
网友
1楼 · 发布于 2024-05-20 20:46:19

我就是这么做的。我验证了wheel包在Linux、macosx和windows10中正确地部署和加载了本地化的*.mo消息目录文件。你知道吗

  1. 将locales文件夹移到顶层Python包文件夹下。例如,假设您的包名为pkg1,并且您拥有法语地区的my_msg.mo目录文件。将*.mo文件移到pkg1/locales/fr/LC_MESSAGES/my_msg.mo

  2. 在你的设置.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!")) ...

相关问题 更多 >