Mac OS X上的pygettext.py和msgfmt.py

时间:2012-07-12 14:47:24

标签: python macos localization gettext

我想在我的Mac OS X 10.7上翻译我的Python应用程序中的字符串。 我可以导入gettext模块,但我找不到工具pygettext.pymsgfmt.py,根据Python文档应该在我的Python安装中的某个位置。

Mac OS X 10.7上预装的Python版本是否缺少这些工具,如果是,我该如何获取它们?

感谢。

5 个答案:

答案 0 :(得分:11)

使用python 3和MacOS> = 10.9,通过自制软件安装gettext将不会链接库,这将产生错误Can't find msgfmt

这有助于:

$ brew install gettext  # if not already done
$ brew link gettext --force

感谢https://stackoverflow.com/a/8785138/621690

答案 1 :(得分:7)

这两个脚本都位于Python源的杂项Tools目录中。这个目录通常不包含在Python的二进制安装中,例如Apple在OS X中提供的安装。但是,很容易从Python源代码版本单独下载它们。查看最新版本here。对于当前的Python 2.7.3版本,您可以执行以下操作:

$ curl -O http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
$ tar -xf Python-2.7.3.tgz 
$ cd Python-2.7.3
$ cd Tools/i18n/
$ ls
makelocalealias.py  msgfmt.py*          pygettext.py*

从Python 3.2开始,Tools目录由python.org OS X二进制安装程序安装。您可以在Python框架中找到它:

/Library/Frameworks/Python.framework/Versions/3.2/share/doc/python3.2/examples/Tools

答案 2 :(得分:0)

如果在Linux中正确安装了Python,则应该能够从命令行访问二进制版本。因此,要生成.pot文件,您可以输入:

    $> pygettext [options] source_file_list

我发现我有两个版本的pygettext,一个用于2.7,另一个用于3.2,但它们看起来几乎相同。要从.po文件创建.mo文件:

    $> msgfmt [options] file.po

但你需要确保不小心使用gnu版本。 Python版本的msgfmt要简单得多。这两个命令都有帮助,因此您可以使用以下命令检查选项(和版本):

    $> pygettext --help

    $> msgfmt --help

如果有疑问,按照上面的建议下载Python源代码就是带括号的方法。

我仍然在寻找自己的方式,所以如果有人知道的话,请加上你的意见:)

答案 3 :(得分:0)

创建符号链接

sudo ln -s /Library/Frameworks/Python.framework/Versions/3.7/share/doc/python3.7/examples/Tools/i18n/pygettext.py /usr/local/bin/pygettext

答案 4 :(得分:0)

通过使用find . -name pygettext.py/msgfmt.py,我无法在macOS上找到这两个文件,在系统python安装(/System/Library/Frameworks/Python.framework/Versions)或Anaconda Python发行版中都找不到。

但是我们总是可以直接从Python源代码下载这两个文件。目前,他们位于:https://github.com/python/cpython/tree/master/Tools/i18n


此外,pygettext.pymsgfmt.py是GNU gettext工具集的模仿物: xgettext msgfmt < / strong>。您还可以检查是否已经安装了这些GNU工具集。 (type -a xgettext/msgfmt

如果没有,则可以使用MacPortport命令或Anacondaconda命令进行安装。

port install gettext
conda install gettext