我必须使用webapp实现国际化(德语,英语)。 我看到最常见的方法是按照每种语言在不同文件中构建翻译:
de.json fr.json
然后以编程方式切换数据存储区。
这相当于这样的数据结构:
i18n:
{
de: {
hello: "Hallo",
save: "Speichern,
...
},
en: {
hello: "hello",
save: "save",
...
}
}
这种方法可以轻松地将翻译文件分发给不同的翻译人员,然后只需将新翻译的文件添加到应用程序中。 但是,我不喜欢密钥需要保持同步。即如果我添加一个新关键字(例如"删除")并且我当时没有所有翻译,我仍然需要确保我更新所有json文件,所以我不会忘记稍后获取翻译点。
因此,我认为以下结构可能会避免此问题:
i18n:{
hello: {
de: "Hallo",
en: "hello"
},
save: {
de: "Speichern",
en: "Save"
}
}
这种方法的缺点是什么?为什么每个人都使用第一种方法?
答案 0 :(得分:0)
TL; DR:表现。
首先,逻辑数据结构是矩阵,而不是树。因此,每种方法在持久性方面都是等效的。
其次,i18n几乎是运行时的只读数据结构。第一种方法使它快速读取,因为当给出语言环境时只需要一个语言,并且你可能一次需要很多键。
第三,如果你需要在运行时添加/修改密钥,那么这是一个相关的偶然情况,而不是阅读,你可能会逐个操作,每种方法都是一样的。