我们正在使我们的网站国际化,允许多种语言。
我研究了php的“ gettext”,但是,如果我理解正确的话,我会发现一个很大的缺陷:
如果我的网页上有“ Hello World”作为静态文本。我可以将字符串作为<?php echo gettext("Hello World"); ?>,使用工具生成po / mo文件。然后,我将文件交给翻译人员进行处理。
<?php echo gettext("Hello World"); ?>
几天后,我们想将英文文本更改为“ Hello Small World”吗?是否更改gettext中的值?我是否可以创建英文PO文件并在那里进行更改?如果您更改gettext,它将认为它是一个新字符串,您将立即失去当前的翻译…
在我看来,php文件的内容将逐渐到处都是旧文本。否则,翻译人员可能会被告知“当您看到Hello World时,而是翻译Hello Small World”。
我不知道我很困惑。
在其他编程语言中,我已经看到它们使用诸如的关键字web.home.featured.HelloWorld。
web.home.featured.HelloWorld
在PHP中处理翻译的最佳方法是什么?
谢谢
您基本上是问并回答了自己的问题,答案可能只是对PO文件的工作原理有了更好的了解。
在PO文件中,您有一个msgid和一个msgstr。msgid是根据本地化在PHP文件中替换为msgstr的值。
现在,您可以将这些msgid变成任何您想要的东西,您可以很好地做到:
<?php echo _("web.home.featured.HelloWorld"); ?>
然后,您再也不会在源中再次触摸此字符串,只需通过PO文件编辑该字符串。
因此,基本上,您的问题的答案是,您为字符串应说的内容指定了gettext值标识符,但是翻译人员通常使用默认语言文件文本作为转换的基础,而不是标识符本身。
我希望这很清楚。