Gettext:消息 ID 是英文文本是一个好主意吗?

2022-08-30 10:41:40

我们正准备将我们的PHP网站翻译成各种语言,PHP中的gettext支持看起来就像是要走的路。

我看到的所有教程都建议使用英文文本作为消息ID,即

gettext(“你好!”)

但这真的是一个好主意吗?假设营销人员想要将文本更改为“嗨,大家好!那么,难道你不必更新所有语言文件,因为那个字符串 - 实际上是消息ID - 已经改变了吗?

拥有某种通用ID(如“hello.message”)和英文翻译文件是否更好?


答案 1

哇,我很惊讶没有人提倡用英语作为关键。我在几个软件项目中使用了这种风格,恕我直言,它的效果很好。代码的可读性非常好,如果您更改英语字符串,很明显需要考虑重新翻译该消息(这是一件好事)。

如果您只是更正拼写或进行其他一些绝对不需要翻译的更改,则在资源文件中更新该字符串的 ID 非常简单。

也就是说,我目前正在评估是否将这种I18N的方式推进到一个新项目中,所以很高兴听到一些关于为什么它可能不是一个好主意的想法。


答案 2

我强烈反对理查德·哈里森(Richard Harrisons)的回答,他说这是“唯一的出路”。亲爱的提问者,不要相信一个说这是唯一途径的答案,因为“唯一途径”并不存在。

恕我直言,这是另一种方式,与Richards的方法相比,它具有一些优势:

  • 首先使用英语字符串的原型版本作为原始版本。
  • 不显示这些原始字符串,而是为英语创建一个翻译文件
  • 将原型字符串复制到开头的翻译中

优势:

  • 可读代码
  • 代码中的文本与视图显示的文本非常接近(如果与视图显示的文本不相同)
  • 如果要更改英文文本,则无需更改原型字符串,而是更改翻译
  • 如果你想翻译同样的东西两次,只需写一个稍微不同的原型字符串,或者只是添加“这个和那个的版本”,你仍然有一个完全可读的代码

推荐