【问题标题】:pygettext.py and msgfmt.py on Mac OS XMac OS X 上的 pygettext.py 和 msgfmt.py
【发布时间】:2012-07-12 14:47:23
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: python macos localization gettext


    【解决方案1】:

    使用 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

    【讨论】:

      【解决方案2】:

      这两个脚本都位于 Python 源代码的杂项工具目录中。该目录通常不包含在 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
      

      【讨论】:

      • 谢谢,我单独下载了工具。
      • 在 Mac 10.8.5 上 curl 对我不起作用,但 wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz 成功了
      【解决方案3】:

      创建符号链接

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

      【讨论】:

        【解决方案4】:

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

            $> pygettext [options] source_file_list
        

        我发现我有两个版本的 pygettext,一个用于 2.7,另一个用于 3.2,但它们的工作方式似乎几乎相同。从 .po 文件创建 .mo 文件:

            $> msgfmt [options] file.po
        

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

            $> pygettext --help
        

            $> msgfmt --help
        

        如果有疑问,请按照上面的建议下载 Python 源代码。

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

        【讨论】:

          【解决方案5】:

          通过使用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
          

          【讨论】:

            猜你喜欢
            • 2017-12-29
            • 1970-01-01
            • 1970-01-01
            • 2011-08-24
            • 2012-08-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多