通常,翻译方法会采用键值映射,并使用键来将其转换为值。现在我认识到有两种不同的命名翻译键的方法,在我的团队中我们没有达成一致,哪种方法似乎是最好的。
方法1:使用完整的英文单词或句子:
Name => Name
Please enter your email address => Please enter your email address
方法二:使用描述情况的关键词:
NAME => Name
ENTER_EMAIL => Please enter your email address
我个人更喜欢第一种方法,因为它直接显示了消息的含义。如果翻译不存在,你可以回退到关键字上,并且这不会造成任何问题。然而,如果翻译经常更改,这种方法会很麻烦,因为所有文件都需要更新。对于较长的文本,这些关键字变得非常大。可以通过使用像ENTER_EMAIL
这样的键来解决这个问题,但是措辞完全脱离上下文。抽象翻译键列表将会很庞大,你需要元数据来解释所有键的使用情况,碰撞可能更容易发生。
有没有两全其美或第三种方法?你如何在你的应用程序中使用翻译键?在我们的情况下,这是一个基于 PHP 的 Web 应用程序,但我认为上述问题足够通用,可以谈论 i18n 的问题。