Аурелия - Локализация
Аурелия предлагает i18nплагин. В этой главе вы узнаете, как локализовать приложение с помощью этого плагина.
Шаг 1. Установите плагин
Открыть command prompt окно и запустите следующий код для установки i18n плагин.
C:\Users\username\Desktop\aureliaApp>jspm install aurelia-i18n
Нам также необходимо установить бэкэнд-плагин.
C:\Users\username\Desktop\aureliaApp>jspm install npm:i18next-xhr-backend
Шаг 2 - Создание папок и файлов
В корневой папке проекта нам нужно создать locale каталог.
C:\Users\username\Desktop\aureliaApp>mkdir locale
В этой папке вам нужно добавить новые папки для любого языка, который вы хотите. Мы создадимen с участием translation.js файл внутри.
C:\Users\username\Desktop\aureliaApp\locale>mkdir en
C:\Users\username\Desktop\aureliaApp\locale\en>touch translation.json
Шаг 3 - Используйте плагин
Чтобы использовать этот плагин, вам необходимо использовать ручную загрузку. Дополнительную информацию см. В главе «Конфигурация». Нам нужно добавитьi18n плагин к main.js файл.
main.js
import {I18N} from 'aurelia-i18n';
import XHR from 'i18next-xhr-backend';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.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 : 'de',
attributes : ['t','i18n'],
fallbackLng : 'en',
debug : false
});
});
aurelia.start().then(a => a.setRoot());
}
Шаг 4 - Перевод файла JSON
Это файл, в котором вы можете установить значения перевода. Мы будем использовать пример из официальной документации. Вde-DE Папка фактически должна использоваться для перевода на немецкий язык, однако вместо этого мы будем использовать английские фразы для облегчения понимания.
translation.json
{
"score": "Score: {{score}}",
"lives": "{{count}} life remaining",
"lives_plural": "{{count}} lives remaining",
"lives_indefinite": "a life remaining",
"lives_plural_indefinite": "some lives remaining",
"friend": "A friend",
"friend_male": "A boyfriend",
"friend_female": "A girlfriend"
}
Шаг 5 - Установите языковой стандарт
Нам просто нужно импортировать i18n плагин и настройте его на использование кода JSON из de-DE папка.
app.js
import {I18N} from 'aurelia-i18n';
export class App {
static inject = [I18N];
constructor(i18n) {
this.i18n = i18n;
this.i18n
.setLocale('de-DE')
.then( () => {
console.log('Locale is ready!');
});
}
}
Шаг 6 - Просмотр
Есть несколько способов перевести данные. Мы будем использовать настраиваемый ValueConverter с именемt. В следующем примере вы можете увидеть различные способы форматирования данных. Сравните это сtranslation.json файл, и вы заметите шаблоны, используемые для форматирования.
<template>
<p>
Translation with Variables: <br />
${ 'score' | t: {'score': 13}}
</p>
<p>
Translation singular: <br />
${ 'lives' | t: { 'count': 1 } }
</p>
<p>
Translation plural: <br />
${ 'lives' | t: { 'count': 2 } }
</p>
<p>
Translation singular indefinite: <br />
${ 'lives' | t: { 'count': 1, indefinite_article: true } }
</p>
<p>
Translation plural indefinite: <br />
${ 'lives' | t: { 'count': 2, indefinite_article: true } }
</p>
<p>
Translation without/with context: <br />
${ 'friend' | t } <br />
${ 'friend' | t: { context: 'male' } } <br />
${ 'friend' | t: { context: 'female' } }
</p>
</template>
Когда мы запустим приложение, мы получим следующий результат.