在Mac OS X上使用pygettext.py和msgfmt.py

9
我希望能翻译我的Python应用程序中的字符串,我的操作系统是Mac OS X 10.7。 我可以导入gettext模块,但我找不到工具pygettext.pymsgfmt.py,这两个工具应该在我安装的Python文档中的某个位置。
如果预装的Mac OS X 10.7上的Python版本缺少这些工具,那么我该如何获取它们?
谢谢。
5个回答

14

如果你在使用Python 3和MacOS >= 10.9的系统上通过homebrew安装gettext时没有链接库,就会出现Can't find msgfmt错误。

以下是解决方法:

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

感谢https://dev59.com/ymoy5IYBdhLWcg3wFqFT#8785138的帮助。

8

这两个脚本都在Python源码的杂项工具目录中。由于苹果在OS X中提供的二进制Python安装程序通常不包含该目录,因此您需要从Python源发布中单独下载它们;请参见此处以获取最新版本。对于当前的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

谢谢,我已经单独下载了这些工具。 - verbit
在 Mac 10.8.5 上,curl 对我来说无法工作,但是 wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz 可以解决问题。 - jrgray
没有理由 curl 不工作,@jrgray。如果URL重定向到你要下载的文件的实际位置,你可能需要使用 -L 参数。 - undefined

1
创建一个符号链接。
sudo ln -s /Library/Frameworks/Python.framework/Versions/3.7/share/doc/python3.7/examples/Tools/i18n/pygettext.py /usr/local/bin/pygettext

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 工具集的模仿者:xgettextmsgfmt。您还可以检查这些 GNU 工具集是否已安装。(type -a xgettext/msgfmt
如果没有安装,您可以使用 MacPortport 命令或 Anacondaconda 命令进行安装。
port install gettext
conda install gettext

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源代码是保险的做法。

我自己还在摸索i18n,如果有人知道更好的方法,请添加您的评论 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接