问题描述
解决方法
像这样的服务..它有效
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);
}
,
对于您的应用程序的本地化/国际化,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转换文件
- 运行
npm run i18n
- 运行
- 查看翻译文件
/locales/messages.xlf
在这里,您需要手动输入等效的翻译文本以进行翻译。