2016-08-12 2 views
0

Мне нужно реализовать интернационализацию (немецкий, английский) с помощью 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" 
    } 
} 

Каковы недостатки этого подхода? Почему каждый использует первый метод?

+0

Мое первое предположение заключалось в том, что вы будете перемещаться только по одному объекту, основанному на текущей локали, а не на количестве слов. В большинстве случаев отдельные языки фактически хранятся в разных файлах JSON, чтобы уменьшить полезную нагрузку. Когда вы знаете локаль, нет необходимости вводить каждый язык в один json, только тот, о котором идет речь. – user3821538

ответ

0

TL; DR: производительность.

Во-первых, логическая структура данных - это матрица, а не дерево. поэтому каждый подход эквивалентен по стойкости.

Во-вторых, i18n является почти структурой данных только для чтения во время выполнения. первый подход заставляет его быстро читать, потому что, когда языку задан только один язык, вам, вероятно, потребуется много ключей за один раз.

3-й, если вам нужно добавить/изменить ключи во время выполнения, это случайный случай, чем читать, и вы, вероятно, будете работать один за другим, каждый из них будет таким же.

Смежные вопросы