#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 для их объединения — таким образом, у вас есть как куча небольших семантических (например, легко найти нужную и нужную строку для редактирования), так и преимущество монолитного словаря. Чтобы ответить на вопрос просто — несколько файлов на язык с согласованной структурой.