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

标签 python localization internationalization setuptools

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

因为本地化的消息文件可以被视为数据文件。也许,我可以使用 package_data pars 来包含这些文件。但是,这似乎不是正确的方法。因为部署的本地化消息文件应该位于系统默认区域设置位置/usr/share/locale 或用户特定位置。无论哪种方式,我发现很难将 pkg_resources 包连接到 gettext 包而不干扰真正的物理路径黑客。

最佳答案

这就是我所做的。我验证了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/<em>/LC_MESSAGES/</em>.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!")) ...

关于python - 如何在 Python setuptools 中包含本地化消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55365356/

相关文章:

Django 不为我的项目创建语言环境 po 文件

django - 如何链接到 django-cms 中未翻译页面的语言主页?

testing - 使用 EC2 进行验证测试

java - 尝试使用 ResourceBundle 从外部文件中获取消息

python - openssl hmac 与 python hmac 不同

javascript - 使用原生 JS 获取本地化的月份名称

facebook - 当看到特定日期的公告时,本地化有何影响?

python - 两个列表之间的元素成对相乘

python - 有没有办法根据条件将另一个函数(如 limit() )绑定(bind)到 pymongo 查询?

python - 为什么我的 Protobuf 消息(在 Python 中)忽略了零值?