如何生成一个 .po 文件?

19

在Windows操作系统上使用WAMPserver(Apache,MySQL,PHP),我有以下内容:

//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");

这个功能运作良好,也就是输出了"This is a string",这意味着我的gettext设置正确。

但是,我该如何创建一个.po文件呢?

我下载了Poedit,但我不知道如何在该软件中完成这个操作。

非常感谢任何帮助!


我发现这个教程很有帮助>>Gettext & PoEdit>> - Prasanth K C
4个回答

11

PoEdit是创建.po文件的工具。您需要对其进行一些配置,这并不容易。它应该的工作方式是查找您源代码中用配置的标记字符串括起来的所有文本。这些将成为您提供给翻译人员的源文本。然后他们将其翻译成目标语言,并保存翻译文件,再将它们返回给您。然后您将这些文件转储到您的PHP应用程序的一个特殊目录中,每当gettext扩展看到其中一个翻译字符串时,它会获取相应的翻译。

如果您说明了使用PoEdit遇到的问题,我可能可以提供更多帮助。


1
谢谢,我已经解决了。问题在于没有清楚地说明如何设置基本路径。而且界面过于老旧,不够直观,难以理解如何创建新路径。 :) - tobefound
最重要的是在您的目录文件中设置路径(绝对路径),否则Poedit将无法从源文件中使用gettext() - Volker E.
1
@VolkerE. 的建议在一个方面是不正确的:你应该使用相对路径,而不是绝对路径,因为前者会在其他机器上无法移植。更好的方法是使用Poedit 1.8beta3(或更新版本),它修复了绝对糟糕的(我作为Poedit作者说的)设置源路径界面,并允许您将相关目录拖放到其中。 - Václav Slavík
@VáclavSlavík 感谢您指出 https://poedit.net/download Poedit 1.8beta3 - 源路径界面得到了很大的改进,以前许多GUI用户不清楚如何设置相对路径,这就是我可能错误地评论设置绝对路径的原因。 - Volker E.
@VolkerE。哦,我完全不怪你,正如你所说:旧的用户界面非常糟糕,以至于许多人认为绝对路径是使其工作的唯一方式。是时候解决这个问题了。 - Václav Slavík

8

对于php:

我有一个文件,像这样: ---- test_1.php ----

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

文件->新目录...

"源路径"选项卡中,你需要点击"新建文件夹",将包含所需文件(此处示例为test_1.php)的文件夹路径添加。

... 他们捕获所有通过gettext()_()调用的字符串 ... 这些函数的用途在这里有说明 http://www.php.net/manual/es/function.gettext.php

而且...如果你使用Apache(例如Xampp),请在使用gettext()进行定义语言测试时停止并启动(重新启动)它,否则更改将不起作用。


0

0
使用 xgettext 从源代码生成文件。
xgettext -D src/ -o ./locale/id_ID.po

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接