用gettext翻译php应用程序

时间:2009-09-13 22:10:53

标签: php internationalization gettext poedit machine-translation

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

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

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

  1. 据我所知,poedit通过你的php代码读取并找到所有可用的地点进行翻译,这是正确的吗?

  2. 如果上述内容正确无误,那么如何让人工翻译人员使用poedit进行翻译而无法访问您的应用?

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

3 个答案:

答案 0 :(得分:2)

请注意,我自己从未使用过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 :(得分:2)

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

基本上,xgettext将生成.po文件。

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

当翻译完成后,您将.po编译成.mo,您的应用程序将用它来查找翻译。

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

答案 2 :(得分:0)

PoEdit实际使用xgettext,您可以在设置/解析器标签上正确设置。

您应该按顺序分发 .pot 文件,即 .po模板。所以翻译人员可以翻译它,设置语言,翻译团队等等。

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

创建自己的.po后,您可以拥有 .mo