Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python包中包含本地化的正确方法是什么?_Python_Linux_Gettext_Packaging_Setuptools - Fatal编程技术网

在python包中包含本地化的正确方法是什么?

在python包中包含本地化的正确方法是什么?,python,linux,gettext,packaging,setuptools,Python,Linux,Gettext,Packaging,Setuptools,我正在编写自己的python应用程序,我想知道在源代码发行版中包含本地化的正确方法是什么。我努力地写下了这本书;这里甚至没有提到本地化。我用它来提取我的邮件目录并进行编辑 问题 在使用setup.py创建源程序包之前,是否可以将*.po自动编译为*.mo?目前我必须在手动编译每种语言之前编译所有内容 我应该在哪里包括那些*.mo-文件?几个linux发行版有不同的位置存放这些文件。在我看来,我在setup.py data_files=[('share/locale/de/LC_MESSAGES

我正在编写自己的python应用程序,我想知道在源代码发行版中包含本地化的正确方法是什么。我努力地写下了这本书;这里甚至没有提到本地化。我用它来提取我的邮件目录并进行编辑

问题

  • 在使用setup.py创建源程序包之前,是否可以将
    *.po
    自动编译为
    *.mo
    ?目前我必须在手动编译每种语言之前编译所有内容
  • 我应该在哪里包括那些
    *.mo
    -文件?几个linux发行版有不同的位置存放这些文件。在我看来,我在
    setup.py

    data_files=[('share/locale/de/LC_MESSAGES', ['locale/de/LC_MESSAGES/project.mo'])
    
    真的没有道理。使用pip安装时,它可能在特定的linux机器上工作。但它可能会在bsd或windows上崩溃


第一个:Python中有处理po文件的工具,建议您研究一下,然后您就可以得到

还可以将
编译_目录
作为源代码构建的必要条件挂接,但我没有发现需要它,因为如果不先编译,就无法测试与
python setup.py develope
链接的包中的消息。此外,如果您需要Babel,那么您的源代码构建可能根本不需要
.mo

第二个方面:我们的应用程序使用金字塔网络框架,约定使用包数据:

setup(
    # ...
    package_data={'yourpackage': ['i18n/*/LC_MESSAGES/*.mo' ]},
    # ...
然后,如果您的本地化位于
yourpackage/i18n/
中,您可以使用
pkg\u资源
查找路径,例如:

pkg_resources.resource_filename('yourpackage', 'i18n')
将指向翻译的位置