我想在我的Mac OS X 10.7上翻译我的Python应用程序中的字符串。
我可以导入gettext
模块,但我找不到工具pygettext.py
和msgfmt.py
,根据Python文档应该在我的Python安装中的某个位置。
Mac OS X 10.7上预装的Python版本是否缺少这些工具,如果是,我该如何获取它们?
感谢。
答案 0 :(得分:11)
使用python 3和MacOS> = 10.9,通过自制软件安装gettext
将不会链接库,这将产生错误Can't find msgfmt
。
这有助于:
$ brew install gettext # if not already done
$ brew link gettext --force
答案 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.py
和msgfmt.py
是GNU gettext
工具集的模仿物: xgettext
和 msgfmt
< / strong>。您还可以检查是否已经安装了这些GNU工具集。 (type -a xgettext/msgfmt
)
如果没有,则可以使用MacPort的port
命令或Anaconda的conda
命令进行安装。
port install gettext
conda install gettext