1
14
你基本上是问和回答你自己的问题,答案可能只是对po文件的工作方式有一个稍微更好的理解。 在po文件中,您有一个msgid和一个msgstr。msgid是由php文件中的msgstr替换的值,具体取决于本地化。 现在,您可以随心所欲地制作msgid,您完全可以做到:
然后你再也不会在源代码中碰到这个字符串了,你只需要通过po文件编辑这个字符串。 所以基本上,您的问题的答案是为字符串应该说的内容制作getText值标识符,但是翻译器通常使用默认语言文件文本作为转换的基础,而不是标识符本身。 我希望这是清楚的。 |
2
9
我知道答案已经被接受了,上面的答案是好的。但是使用永久的机器类型的钥匙还有一个问题,比如
虽然使用永久密钥是一种更好的开发方法,但getText并没有针对这种工作方式进行设置,这会使您的 工作流 . 如果您向翻译人员展示的是一个po文件,其中填充了键来代替源文本,那么他们可能不知道英语应该是什么。因此,您必须向他们提供第二个包含源语言翻译的文件,以便他们进行比较。不是世界末日,而是对他们更加挑剔,而不是GetText是如何设计的。(方桩、圆孔等) 我认为po作为一种在PHP中进行翻译的文件格式是非常好的,特别是如果您没有使用一个具有良好的l10n模块的框架,但这并不意味着它对工作流程和您的翻译过程都有好处的话,建议您使用它。 我建议你建立一个工作流程,允许你的程序员使用永久的密钥,你的翻译人员使用单词,并在另一端给你一个mo文件。看看 Loco 一个解决方案。 或者使用允许使用关键字和单词的不同临时文件格式。 TMX 就是一个例子。如果您仍然想在运行时使用gettext,可以 convert the files . |
3
7
目前,我正在处理同一个问题。getText的常见做法是使用英语文本作为键。最近,我们的复制编辑器更改了整个英文文本(其他语言几乎不接触),所以我们必须更改所有源代码所有的po文件。 我们正在换一把中性钥匙。因为我们已经在Java上有了一些站点。我们将使用相同的属性名格式。 |
Neil Weicher · 环境变量和本地化 6 年前 |
QED · 带NSNumberFormatter的字符串乘法器 6 年前 |
Lee Wise · 翻译DNN 2sxc模块中的内容时出错 6 年前 |
TomBombadil · 查看本地化 6 年前 |
lorenzo · 本地化情节提要中未反映基本情节提要更改 6 年前 |