我们正在使我们的网站国际化,允许使用多种语言。
我研究了 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/