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

问题描述 投票:7回答:5

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

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

谢谢。

python macos localization gettext
5个回答
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

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


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源是带和方法。

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


0
投票

创建一个符号链接

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
© www.soinside.com 2019 - 2024. All rights reserved.