Nat*_*n H 21 php localization gettext internationalization
我们正在使我们的网站国际化,允许多种语言.
我已经研究过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中处理翻译的最佳方法是什么?
谢谢
tpl*_*ner 14
你基本上问了并回答了你自己的问题,答案可能只是对PO文件的工作方式有了更好的理解.
在PO文件中,您有一个msgid和一个msgstr.msgid是PHP文件中的msgstr替换的值,具体取决于本地化.
现在你可以把这些msgid做成你想要的任何东西,你可以很好地做到:
<?php echo _("web.home.featured.HelloWorld"); ?>
Run Code Online (Sandbox Code Playgroud)
然后你永远不会在源代码中再次触摸此字符串,只能通过PO文件编辑字符串.
所以基本上你的问题的答案是你为字符串应该说的内容制作gettext值标识符,但翻译人员通常使用默认语言文件文本作为转换的基础,而不是标识符本身.
我希望这很清楚.
我知道答案已经被接受了,上面的答案很好.但是使用永久机器式键thing.stuff.widget
时还有另一个问题,例如使用Gettext时.
虽然使用永久密钥是一种更好的开发方法,但Gettext并未针对该工作方式进行设置,这可能会使您的工作流程复杂化.
如果您提供的翻译器的PO文件中填充了密钥来代替源文本,他们可能不知道英语应该是什么.因此,您必须向他们提供包含源语言翻译的第二个文件,以便与之进行比较.不是世界末日,而是更加繁琐,而不是如何设计Gettext.(方形钉,圆孔等..)
我认为PO作为PHP翻译的文件格式非常好,特别推荐如果你不使用具有良好l10n模块的框架,但这并不意味着它对工作流程和翻译过程有利.
我建议你到达一个工作流程,允许程序员使用永久密钥,翻译人员使用单词,并在另一端提供MO文件.看一下Loco的解决方案.
或者,使用允许使用键和单词的不同临时文件格式.TMX就是一个例子.如果您仍想在运行时使用Gettext,则可以转换文件.
目前,我正在处理同样的问题.gettext的常见做法是使用英文文本作为关键字.最近,我们的复制编辑器改变了一大堆英文文本(其他语言很难触及)所以我们必须更改所有PO文件的所有源代码.
我们正在转向中性密钥.因为我们已经在Java上有一些网站.我们将使用相同的属性名称格式.
归档时间: |
|
查看次数: |
13002 次 |
最近记录: |