Один или несколько переводов.файлы json для i18n?

#internationalization #aurelia

#интернационализация #aurelia

Вопрос:

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

Вопрос: есть ли логическое, организационное или производительное преимущество в использовании нескольких файлов перевода по сравнению с одним файлом перевода? Например:

Должен ли я просто поместить все в один файл?

 my-aurelia/locales/en/translation.json
my-aurelia/locales/es/translation.json
  

Или я должен разделить на несколько файлов перевода?

 my-aurelia/locales/en/nav.json
my-aurelia/locales/en/words.json
my-aurelia/locales/en/phrases.json

my-aurelia/locales/es/nav.json
my-aurelia/locales/es/words.json
my-aurelia/locales/es/phrases.json
  

Вот как я создал экземпляр плагина для этого примера (внутри export function configure(aurelia) { my-aurelia/src/main.js , но я нахожусь на важном перекрестке дизайна.

 aurelia.use.plugin('aurelia-i18n', (instance) => {
    // register backend plugin
    instance.i18next.use(XHR);

    // adapt options to your needs (see http://i18next.com/docs/options/)
    instance.setup({
      backend: {                                  
        loadPath: '/locales/{{lng}}/{{ns}}.json',
      },
      lng : 'es',
      ns: ['words','phrases','nav'],
      defaultNS: 'words',
      attributes : ['t','i18n'],
      fallbackLng : 'en',
      debug : false
    });
  });
  

Один языковой файл json или несколько языковых файлов json? Какие-либо дополнительные советы?

Ответ №1:

С точки зрения производительности, один файл на язык будет немного быстрее при начальной загрузке, поскольку требуется меньше запросов. Однако эта микрооптимизация будет незначительной, и вам следует уделять больше внимания структуре кода и удобочитаемости, особенно для других людей, работающих над кодом после вас.

Станет ли один файл настолько большим, что людям будет трудно найти нужную запись и изменить содержимое файла JSON? Если нет, и вы не ожидаете, что он вырастет до такого размера, вам, вероятно, лучше использовать один файл.

Будут ли люди удивляться, если вы добавите «Gracias / Спасибо» в слова (спасибо) или фразы (спасибо)? Я рекомендую использовать структуру, понятную для тех, кто не знаком с вашим кодом.

Наконец, одна из организационных структур, которую я не видел, чтобы вы упоминали, но которую я использовал сам, заключается в упорядочивании файлов i18n на основе ваших представлений. Это упрощает поиск файла, который необходимо изменить, поскольку вы уже знаете, с каким представлением работаете, поэтому вам не нужно искать i18n.

Комментарии:

1. Итак, для относительно большого проекта, сколько файлов перевода у вас может быть (на каждом языке)?

2. Использование одного файла, вероятно, проще всего, поскольку вам не придется думать о структуре. Однако, если существует много специфичных для просмотра (например, home vs. настройки учетных записей vs. панель мониторинга) или контекстно-зависимых переводов (например, навигация vs. слова vs. фразы), которые очень уникальны для этой части приложения, вы можете разделить файлы на основе тех представлений / контекстов, которые у вас есть. Итак, если у вас 4 представления / контекста, это может быть 4, если у вас 10 представлений / контекстов, это может быть 10

3. Я бы выбрал один выходной файл словаря, но много входных данных. Используйте простой инструмент script для их объединения — таким образом, у вас есть как куча небольших семантических (например, легко найти нужную и нужную строку для редактирования), так и преимущество монолитного словаря. Чтобы ответить на вопрос просто — несколько файлов на язык с согласованной структурой.