在做国际化时,在代码里用英文原文好,还是使用 key 比较好?

2013-03-26 12:23:47 +08:00
 xesique
用原文的例子有 gettext 或 NSLocalizedString 等。
用 key 是指在代码中用 「window.okButton」 这样的 key。
3738 次点击
所在节点    问与答
16 条回复
WarWithinMe
2013-03-26 13:13:43 +08:00
如果原文就是key的话,应该会比较方便吧。。
zhigang1992
2013-03-26 13:23:08 +08:00
原文縮寫,key的話會重複。
xesique
2013-03-26 14:22:32 +08:00
@WarWithinMe 实际上用原文就是把原文当成 key。只是默认语言时(英语),不进行映射,直接显示出来。

@zhigang1992 请问原文缩写除了避免重复还有什么其他优势吗?这样做的话,对于默认语言(英语)也要建立映射表,阅读程序时也不一定能够对这里希望显示的内容一目了然……
WarWithinMe
2013-03-26 17:13:24 +08:00
嗯,实际上就是用一个函数将原文包起来,然后那个函数帮你进行映射。Qt Framework里面也是这么处理的。个人觉得这种方法比较直观。。
zhigang1992
2013-03-26 23:49:05 +08:00
只在很長的時候縮寫,可以看看xcode的插件。有一個可以自動補全的。
66450146
2013-03-27 00:23:41 +08:00
我们是用原文,主要有两个好处

1. 在程序里面更容易看出希望显示的内容。
2. 在写映射表的时候更方便,可以同时看到默认语言和翻译之后的内容。
xesique
2013-03-27 08:52:01 +08:00
@66450146 谢谢,那请问在遇到原文需要进行细微的修改的时候,修改映射表会不会比较麻烦?
66450146
2013-03-27 09:03:53 +08:00
@xesique 确实有点麻烦,用批量替换吧
alexrezit
2013-03-27 09:05:20 +08:00
谁说 NSLocalizedString 非要用原文的? 如果某些英文表达相同的词句在其他语言中需要用不同的词句表达呢? 我认为最好的做法是前缀 + 功能, 例如 "ECListDeleteItemAlertTitle", "ECListDeleteItemAlertMessage", "ECListDeleteItemAlertButtonOK".
BOYPT
2013-03-27 09:07:11 +08:00
@xesique 这类工具早就有啦,如果修改类似的话就帮你加上“相似”,当然需要你去检查确定一次。比如poedit就是这样的工具。
xesique
2013-03-27 09:22:44 +08:00
@alexrezit 抱歉,可能是我没有表述清楚。因为我自己看到的很多 NSLocalizedString 的例子是使用的原文,所以就用它举的例子,当然它也是支持您说的那种类似于 key 方式的。

使用 key 时,在开发中我遇到了多个人重复定义完全相同的文本的问题,例如 New Document 或 Cancel 等。当然这个也可以说是沟通不足导致的结果……
xesique
2013-03-27 09:25:57 +08:00
@BOYPT 谢谢,我研究下这个工具。个人还是倾向于用 gettext 的方式的,但是还不确定团队中使用是否合适……
alexrezit
2013-03-27 10:19:35 +08:00
@xesique
NSLocalizedString 用原文不可能会重复定义相同文本的, 如果 genstrings 都不知道那还是踹出去算了. =.=
另外我说的那种方法也是更便于维护的.
BOYPT
2013-03-27 10:23:58 +08:00
@xesique gettext 挺完美的,只是要依赖系统的locale映射……
我这里经常遇到的是运行环境的locale映射被蛋疼 的sa精简掉。
hzlzh
2013-03-27 10:24:22 +08:00
用原文比较好,比如你看看WordPress 配合poeditor 的做啊
xesique
2013-03-27 10:51:40 +08:00
@alexrezit 额,我的意思是用 key 的时候可能遇到重复定义相同的文本……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/64067

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX