xesique
V2EX  ›  问与答

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

  •  
  •   xesique · Mar 26, 2013 · 4262 views
    This topic created in 4824 days ago, the information mentioned may be changed or developed.
    用原文的例子有 gettext 或 NSLocalizedString 等。
    用 key 是指在代码中用 「window.okButton」 这样的 key。
    16 replies    1970-01-01 08:00:00 +08:00
    WarWithinMe
        1
    WarWithinMe  
       Mar 26, 2013
    如果原文就是key的话,应该会比较方便吧。。
    zhigang1992
        2
    zhigang1992  
       Mar 26, 2013 via iPhone
    原文縮寫,key的話會重複。
    xesique
        3
    xesique  
    OP
       Mar 26, 2013
    @WarWithinMe 实际上用原文就是把原文当成 key。只是默认语言时(英语),不进行映射,直接显示出来。

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

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

    使用 key 时,在开发中我遇到了多个人重复定义完全相同的文本的问题,例如 New Document 或 Cancel 等。当然这个也可以说是沟通不足导致的结果……
    xesique
        12
    xesique  
    OP
       Mar 27, 2013
    @BOYPT 谢谢,我研究下这个工具。个人还是倾向于用 gettext 的方式的,但是还不确定团队中使用是否合适……
    alexrezit
        13
    alexrezit  
       Mar 27, 2013
    @xesique
    NSLocalizedString 用原文不可能会重复定义相同文本的, 如果 genstrings 都不知道那还是踹出去算了. =.=
    另外我说的那种方法也是更便于维护的.
    BOYPT
        14
    BOYPT  
       Mar 27, 2013
    @xesique gettext 挺完美的,只是要依赖系统的locale映射……
    我这里经常遇到的是运行环境的locale映射被蛋疼 的sa精简掉。
    hzlzh
        15
    hzlzh  
    PRO
       Mar 27, 2013
    用原文比较好,比如你看看WordPress 配合poeditor 的做啊
    xesique
        16
    xesique  
    OP
       Mar 27, 2013
    @alexrezit 额,我的意思是用 key 的时候可能遇到重复定义相同的文本……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5337 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 08:01 · PVG 16:01 · LAX 01:01 · JFK 04:01
    ♥ Do have faith in what you're doing.