【问题标题】:Translating php app with gettext使用 gettext 翻译 php 应用程序
【发布时间】:2010-11-27 23:40:42
【问题描述】:

从我之前关于 gettext 的问题来看,使用 PHP 的 gettext 扩展而不是其他语言翻译方法的最大好处之一是,让其他人使用名为 Poedit 的程序制作翻译文件非常容易强>。

现在我在我的应用程序中使用了 gettext,但我还没有制作任何翻译文件,我在网上找到了一个演示文件并用它进行了测试,以使我的应用程序与 gettext 兼容。

现在我玩了一下 poedit,我可能错了,希望有人能澄清一些问题。

  1. 据我所知 poedit 会读取您的 php 代码并找到所有可用的位置进行翻译,这是正确的吗?

  2. 如果以上是正确的,那么您如何让人工翻译人员在无法访问您的应用程序的情况下使用 poedit 进行翻译?

或者简单来说,是否可以使用 poedit 制作翻译文件而无需访问您的 php 代码?

【问题讨论】:

    标签: php internationalization gettext poedit machine-translation


    【解决方案1】:

    请注意,我自己从未使用过 poedit,所以这可能并不完全准确...

    您可能会首先阅读一篇有趣的文章,以获取一些信息:Localizing a WordPress Plugin Using poEdit
    它是 wordpress,意思是 PHP——所以基本的想法应该适合你的应用程序。

    基本上,如果我理解得很好:

    • 您首先从 PHP 源代码中提取所有字符串
      • 告诉 poedit 你的翻译函数是如何被调用的
      • 这应该回答你的 1)
    • 那么,你做翻译
      • 使用/处理 .po 文件
      • 我猜您可以将此 .po 文件分发给您的翻译人员,然后他们可以翻译其中包含的字符串
    • 最后,您使用 .po 文件生成将在您的应用程序中使用的 .mo 文件。


    另一篇关于 wordpress 的文章似乎表明我猜对了:User:Skippy/Creating POT Files——尤其是这句话:

    使 .po 文件可用于 下载(或可选择将其包含在 插件存档)。译者将 使用这个文件来构造一个 .mo 文件, 这将由 load_plugin_textdomain()函数。

    (显然,您将在应用程序中使用的函数名称与 wordpress 中的函数名称不同——不过,想法就在那里)


    希望这可以帮助 :-)
    玩得开心!

    【讨论】:

    • 谢谢,你总是为你的答案付出这么多的努力+1
    • @jason : 不客气 :-) 在这里,我对 gettext 很好奇:我想我有一天会使用它(尤其是当我目前正在做一个项目时使用 gettext -- 即使我不是负责翻译的人)
    • 我希望有一种方法可以创建 gettext 将在文本编辑器中手动使用的原始(第一个)字段,但看起来我必须让 poedit 扫描我的所有项目文件,除非我找到了另一种方法
    • 看起来 .po 文件只是文本文件,具有特殊的格式(见en.wikipedia.org/wiki/GNU_gettext#Translating 一个真正的基本示例);;也许您可以在某处找到该格式的定义?考虑到 gettext 是 GNU,格式必须是开放的......
    • 这里 stackoverflow.com/questions/873017/… 是我想手动执行此操作的主要原因,因为我发现它的工作方式存在问题,感谢您提供链接
    【解决方案2】:

    不,poEdit 不会读取您的所有资源。您可以使用 gettext 实用程序“xgettext”来执行此操作。

    基本上,xgettext 会生成一个 .po 文件。

    您的翻译人员将使用 POEdit 处理该 .po 文件。

    翻译器完成后,您会将 .po 编译为 .mo,您的应用将使用它来查找翻译。

    如果您在某些 unixy 系统上安装了 gettext,请在 bash 中尝试“info gettext”。

    【讨论】:

    • @tim :poedit.net 页面说:“您可以使用 Poedit 扫描源代码以查找可翻译的字符串。” -- 看来你可以使用 poEdit 来阅读源代码了?
    • 哦,看那个!很长一段时间没有真正使用gettext(它让我伤痕累累)。那时,我最终在命令行上编写了一些脚本来驱动 xgettext,并且效果很好。我认为 php-gettext 扩展在这个过程中有一些足够体面的文档..
    【解决方案3】:

    PoEdit 实际上使用xgettext,您可以在Settings/Parsers 选项卡上正确设置。

    你应该顺便分发一个.pot文件,这是一个.po模板。所以翻译人员可以翻译它,设置语言,翻译团队等。

    很遗憾,我看不到从源代码创建 .pot 文件的选项,但 poedit 可以读取(当然,它与 .po 相同)。

    创建自己的.po后,就可以拥有.mo了!

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多