当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Gettext:消息ID是英文文本是一个好主意吗?》经验,为你挑选了6个好方法。

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

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

gettext("你好!")

但这真的是个好主意吗?假设市场营销人员希望将文本更改为"你好,你们!".那么你不必更新所有语言文件,因为该字符串 - 实际上是消息ID - 已经改变了吗?

拥有某种通用ID(例如"hello.message")和英文翻译文件会更好吗?



1> dcstraw..:

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

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

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


"如果您只是纠正拼写或进行其他一些肯定不需要翻译的更改,那么更新资源文件中该字符串的ID就很简单了." 不幸的是,这并非总是如此.如果字符串在两个地方使用,并且只有一个更改,则还需要复制.po文件中的条目.如果字符串是多行的,则此更改将需要严格的脚本.

2> chroder..:

我使用有意义的ID,例如" welcome_back_1",这将是" welcome back, %1"等等.我总是将英语作为我的"基础"语言,因此在最坏的情况下,当特定语言没有消息ID时,我会依赖英语.

我不喜欢使用实际的英语短语作为消息ID,因为如果英语改变了ID也是如此.如果您使用一些自动化工具,这可能不会对您产生太大影响,但这让我感到困扰.我不喜欢使用简单的代码(如msg3975),因为它们没有任何意义,所以阅读代码会更加困难,除非你在任何地方发表评论.


但是PO文件怎么样?他们说`msgid`应该是未翻译的字符串.让我们说我们偏离并放置短关键字而不是英文信息.现在出现的问题是翻译人员如何了解实际的英语字符串?因为现在PO文件只有键而不是实际的消息.

3> markus..:

我非常不同意理查德·哈里森的回答,他说这是"唯一的方式".亲爱的提问者,不要相信一个答案,说明这是唯一的方法,因为"唯一的方式"不存在.

以下是恕我直言与理查兹方法相比具有一些优势的另一种方式:

首先使用原始英文字符串的proto版本.

不要显示这些原型字符串,但要为英语创建翻译文件

将原始字符串复制到开头的翻译

好处:

可读代码

代码中的文本与视图显示的内容非常接近

如果要更改英文文本,则不要更改原始字符串,而是更改翻译

如果你想翻译相同的东西两次,只需编写一个略有不同的原型字符串或只是添加'版本为此和那',你仍然有一个完全可读的代码



4> Douglas Leed..:

ID为英语的原因是,如果翻译因任何原因失败而返回ID - 当前语言和令牌的翻译不可用,或其他错误.那当然假设开发人员正在编写原始英文文本,而不是一些文档人员.

此外,如果英文文本发生变化,那么其他翻译可能需要更新吗?

在实践中,我们也使用Pure ID而不是英文文本,但它确实意味着我们必须做很多额外的工作才能默认为英文.



5> 小智..:

总之,不要这样做.

英语中的相同单词/短语通常足以具有多个含义,并且每个含义都意味着不同的翻译.

为您的字符串定义助记符ID,并将英语视为另一种语言.

同意其他海报,代码中的id号码是代码可读性的噩梦.

Ex本地化工程师



6> 小智..:

有很多要考虑的问题,答案并不是那么容易。

使用简单的英语

优点

易于编写和阅读代码

在大多数情况下,即使不运行代码中的翻译功能,它也可以工作

缺点

参与其中的程序员也必须是优秀的撰稿人:)

即使您需要使用的第一语言是另一种语言,也需要用英语完全写出正确的精确文本(即,我们正在以捷克语启动项目的开始,之后将它们本地化为EN)。

在很多情况下,您需要使用上下文。如果您不能通过begginig完成此操作,那么以后添加它们将需要很多工作。解释:用英语,一个单词可以有许多不同的意思-您需要使用上下文来区分它们-并非总是那么容易(order = sort order,也可以是采购订单)。

在此过程的后期纠正英语可能非常困难。源字符串的更正经常会导致丢失已翻译的短语。仅仅因为您更正了英语而将翻译松散为3种不同的语言,这非常令人沮丧。

使用按键

优点

您甚至可以为英语使用本地化平台功能。也就是说,我们正在使用可爱的Crowdin平台。有很多方便的工具-甚至是完整的工作流程-用于翻译管理:为不同的翻译,翻译历史,词汇表(有助于保持翻译/语言的连贯性),校对,批准等进行投票。更流畅。

发送Engish文本进行校对等要容易得多。通常,让撰稿人直接修改您的代码不是一个好主意:)

缺点

更复杂的项目设置。

很难使用%d,%s等。

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有