如何生成 .po 文件?

Posted

技术标签:

【中文标题】如何生成 .po 文件?【英文标题】:How to generate a .po file? 【发布时间】:2011-01-31 15:34:58 【问题描述】:

在使用 WAMPserver(Apache、mysqlphp)的 Windows 上,我有以下内容:

//test.php
if (!defined('LC_MESSAGES'))
define('LC_MESSAGES', 6);

$lang = "sv";
putenv("LANG=$lang");
setlocale(LC_ALL, $lang);

$domain = "messages";
bindtextdomain($domain, "./locale");
textdomain($domain);

echo _("This is a string");

它工作正常,即它输出“这是一个字符串”,这意味着我已经正确设置了gettext

但是我到底如何创建.po 文件?

我下载了 Poedit,但我不知道如何使用该软件实现这一点。

非常感谢任何帮助!

【问题讨论】:

我发现这个教程很有帮助>>Gettext & PoEdit>> 【参考方案1】:

有很多工具,例如Poedit。在 PHP 中,它由Gettext extension 处理。

另见:

http://en.wikipedia.org/wiki/Gettext http://en.wikipedia.org/wiki/Translate_Toolkit

如果您对 Poedit 有任何疑问,请随时提供一些细节。

【讨论】:

【参考方案2】:

PoEdit 是创建 .po 文件的工具。您必须对其进行一些配置,这不是最简单的。它的工作方式是找到源代码中包含在您配置的标记字符串中的所有文本。这将成为您提供给翻译人员的源文本。然后他们将其翻译成目标语言并保存翻译文件并将其返回给您。然后,您将这些文件转储到 php 应用程序中的一个特殊目录中,每当 gettext 扩展程序看到其中一个翻译字符串时,它就会获取适当的翻译。

如果你能提供一些关于你在哪里挂断 poedit 的详细信息,我可能会提供更多帮助。

【讨论】:

谢谢,我设法解决了。问题是不清楚如何设置基本路径。而且界面太旧,无法直观地理解如何创建新路径。 :) 最重要的是目录文件中的路径(绝对路径)设置,否则Poedit无法使用源文件中的gettext() @VolkerE。建议在一方面是不正确的:您应该使用 relative,而不是绝对路径,因为前者无法移植到其他机器上。更好的是,使用 Poedit 1.8beta3(或更新版本)修复了绝对糟糕的(我是说作为 Poedit 作者)界面来设置源路径,并允许您只需将相关目录拖过来。 @VáclavSlavík 感谢poedit.net/download Poedit 1.8beta3 的提示——源路径界面得到了很大改进,在许多 GUI 用户不清楚如何设置相对路径之前,这就是原因对于我对绝对设置路径的大概错误评论。 @VolkerE。哦,我一点也不怪你,就像你说的那样:旧的 UI 非常糟糕,以至于很多人认为绝对路径是让它工作的唯一方法。我差不多该修好了。【参考方案3】:

对于 php:

我有一个类似的文件 ---- test_1.php ----

<?php
  echo _("Test phrase");
  echo gettext("Test phrase two");
  // NOTE: _ == gettext()
?>

文件 -> 新目录... 在“源路径”选项卡中,您必须单击新建文件夹,添加文件所在文件夹的路径(在本例中为 test_1.php)

... 他们捕获了所有使用gettext()_() 调用的字符串 ... 对这些功能有用的解释here http://www.php.net/manual/es/function.gettext.php

并且...如果您使用 Apache(例如在 Xampp 中),请停止并启动(重新启动)它何时您想使用 gettext() 以定义的语言测试新更改,以另一种方式更改不受影响

【讨论】:

【参考方案4】:

使用xgettext从源代码生成文件。

xgettext -D src/ -o ./locale/id_ID.po

然后您可以编辑id_ID.po 文件。

您可以使用提供的预编译二进制文件,例如this。

【讨论】:

以上是关于如何生成 .po 文件?的主要内容,如果未能解决你的问题,请参考以下文章

是否有从多个 .po 文件生成所有 .mo 文件的命令?

使用 xgettext 和 msginit 生成 .po 文件时出现 msgfmt 错误

markdown 生成手动po文件

php源代码到PO文件生成器

Xcode 中的 po 命令不生成输出

生成本地化文件的最简单方法