PHP 本地化最佳实践?获取文本?

标签 php localization internationalization gettext

我们正在使我们的网站国际化,允许使用多种语言。

我研究了 php 的“gettext”,但是,如果我理解正确的话,我发现了一个很大的缺陷:

如果我的网页有让我们说“Hello World”作为静态文本。我可以把字符串写成 <?php echo gettext("Hello World"); ?> , 使用工具生成 po/mo 文件。然后我会将文件交给翻译人员进行处理。

几天后我们想把英文文本改成“Hello Small World”? 我是否更改 gettext 中的值?我是否创建一个英文 PO 文件并在那里更改它? 如果您更改 gettext,它会将其视为一个新字符串,您将立即丢失当前的翻译 ...

渐渐地,php文件的内容似乎到处都是旧文字。 或者可能必须告诉翻译人员“当您看到 Hello World 时,请翻译 Hello Small World”。

我不知道我越来越糊涂了。

在其他编程语言中,我看到它们使用诸如 web.home.featured.HelloWorld 之类的关键字。 .

用 PHP 处理翻译的最佳方式是什么?

谢谢

最佳答案

您基本上提出并回答了自己的问题,答案可能只是对 PO 文件的工作原理有了更好的了解。

在 PO 文件中,您有一个 msgid 和一个 msgstr。 msgid 是 PHP 文件中的 msgstr 替换的值,具体取决于本地化。

现在你可以让这些 msgid 成为你想要的任何东西,你完全可以做到:

<?php echo _("web.home.featured.HelloWorld"); ?>

然后您将永远不会在源代码中再次触摸此字符串,您只能通过 PO 文件编辑该字符串。

所以基本上你的问题的答案是你为字符串应该说的内容制作 gettext 值标识符,但是翻译人员通常使用默认语言文件文本作为转换的基础,而不是标识符本身。

我希望这很清楚。

关于PHP 本地化最佳实践?获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2790952/

相关文章:

php - php负载均衡

php - 为什么 Doctrine getter 方法会为 ID 返回 null?

android - 在 android 中本地化日期

android - 如何在 Android Studio 中将英语翻译成日语

symfony - Symfony 中的自定义 i18n 路由

Drupal 7 - 多语言注释

php - 如何禁用多对多关系的级联删除?

php - Yii 2.0 AJAX 请求的 CSRF 验证

ios - 在 Xcode 的命令行上导出所有本地化

iphone - 如何本地化 UIImagePickerController