Мне нужно реализовать интернационализацию (немецкий, английский) с помощью webapp. я вижу, что наиболее распространенный подход к структуре переводов в разных файлах на языке:json i18n: lang: {string} vs. string: {lang}
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"
}
}
Каковы недостатки этого подхода? Почему каждый использует первый метод?
Мое первое предположение заключалось в том, что вы будете перемещаться только по одному объекту, основанному на текущей локали, а не на количестве слов. В большинстве случаев отдельные языки фактически хранятся в разных файлах JSON, чтобы уменьшить полезную нагрузку. Когда вы знаете локаль, нет необходимости вводить каждый язык в один json, только тот, о котором идет речь. – user3821538