#ngx-translate
#ngx-перевести
Вопрос:
Ответ №1:
вот так сервисы .. это работает
loadTranslations(...args: Locale[]): void {
const locales = [...args];
locales.forEach(locale => {
this.translate.setTranslation(locale.lang, locale.data, true);
this.langIds.push(locale.lang);
});
// add new languages to the list
this.translate.addLangs(this.langIds);
}
setLanguage(lang) {
if (lang) {
this.translate.use(this.translate.getDefaultLang());
this.translate.use(lang);
localStorage.setItem('language', lang);
}
}
getSelectedLanguage(): any {
return localStorage.getItem('language') || this.translate.getDefaultLang();
}
и конструктор
import { locale as arLang } from './i18n/ar';
import { locale as frLang } from './i18n/fr';
constructor(private translationService: TranslationService,
) {
// register translations
this.translationService.loadTranslations(arLang, frLang);
}
Ответ №2:
Для локализации / интернационализации вашего приложения angular имеет i18n. Он обрабатывает весь статический текст вашего приложения и переводит с любой вашей локали. Для этого вам необходимо включить переведенный текст в равной степени в файл $Yourlocale.xlf.
Для некоторой справки:
Перевести дополнение i18n
- Добавление в шаблон
-
Добавить
i18n
тег :<div i18n>Some text</div>
-
Добавить
i18n-x
тег к атрибуту компонента :<some-component i18n-titleProp="title" titleProp="some text""></some-component>
<input i18n-placeholder="placeholder"" placeholder="some text""></input>
-
- Добавление в ts-файл i18n-polyfill
-
Добавить
i18n
в конструктор класса :constructor(private i18n: I18n) {}
-
Добавить
i18n
тег к значению переменной :any = [this.i18n('first value'), this.i18n('second value')]
some = this.i18n('some value')
-
- Создание файлов XLIFF translations
- выполнить
npm run i18n
- выполнить
- Смотрите файл перевода
/locales/messages.xlf
здесь вам нужно вручную ввести эквивалентный переведенный текст для перевода.