可以使用 PHP 将翻译添加到 gettext (*.po) 目录吗?

发布于 2024-12-09 04:46:22 字数 508 浏览 0 评论 0原文

我正在向网站添加本地化功能。如果我可以简单地通过 PHP 将翻译添加到 .po 文件,那么这个过程可以完全自动化,但我似乎找不到允许这样做的库(例如 PHP 版本的 POEdit)。

我一直在做的事情是,由于 HTML 基本上遵循相同的格式,所以通过我编写的一个类运行每个 phtml 文件(如果有区别的话,它们实际上是 Zend Framework 视图),以隔离原始英文文本,为其分配一个索引 (page.block.1),并写入 函数,同时将原始文本包装在 HTML 注释中。然后,我手动打开 POEdit,检查要翻译的新字符串,并将注释文本从 phtml 文件剪切/粘贴到 POEdit。

这是非常耗时的。假设我可以使用 PHP 库添加新翻译,我已经准备好索引和字符串,因此它不仅可以消除人为错误,而且可以在几秒钟而不是几小时内完成任务。

对于 PHP 甚至 python/perl 是否存在这样的类?我好像找不到一个

I am adding localization to a website. This process could be fully automated if I could simply add the translation to the .po file through PHP, but I can't seem to find a library which allows this (a PHP version of POEdit for example).

What I've been doing, since the HTML largely follows the same format throughout, is run each phtml file (They are actually Zend Framework views if it makes a difference) through a class I wrote to isolate the original english text, assign it an index (page.block.1), and write a <?php echo _('page.block.1'); ?> function while wrapping the original text in HTML comments. I then manually open POEdit, check for new strings to be translated, and cut/paste the commented text from the phtml file to POEdit.

This is very time consuming. Assuming I could use a PHP library to add a new translation, I have both the index and the string ready, so it would not only eliminate human error but also complete the task in seconds rather than hours.

Does such a class exist, for PHP or even python/perl? I can't seem to find one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

优雅的叶子 2024-12-16 04:46:23

有更简单的方法,特别是如果您使用 Zend_Translate gettext 适配器

您可以直接在 .phtml 文件中使用翻译函数,如下所示:

<label><?php echo $this->translate('some fancy text'); ?><label>

然后使用 xgettext 实用程序用于从 .phtml 文件创建 .po 文件。 xgettext 的调用将是这样的:

xgettext -o nameOfTheGeneratedPOFile.po --keyword=translate -L php

然后您可以使用 POEdit 来翻译 .po 文件和 msgfmt 创建 .mo 文件。

查看 Zend_Translate 文档 了解有关如何使用它的更多信息。

There is much simpler way especially if you're using Zend_Translate gettext adapter.

You can use translate functions directly in your .phtml files like this:

<label><?php echo $this->translate('some fancy text'); ?><label>

And then use the xgettext utility to create .po file from your .phtml files. The invocation of the xgettext would be something like this:

xgettext -o nameOfTheGeneratedPOFile.po --keyword=translate -L php

Then you can use the POEdit to translate the .po file and msgfmt to create the .mo file.

Check out the Zend_Translate documentation for more info on how to use it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文