ng-alain的脚手架是由 ng-zorro-antd、@delon/* 类库两个重要部分组件,而这两个类库有自己的国际化配置,当进行国际化时需要对这些类库进行相同语言的配置。
国际化只要包括,
angular配置,主要是针对货币、日期格式等
ng-zorro-antd
delon
ALAIN_I18N_TOKEN: @delon/* 类库有许多带有 i18n 字样的数据接口属性(例如:page-header、st 列描述、Menu 菜单数据等等),当你希望这些组件的数据接口能动态根据 Key 值按当前语言自动切换时,你还需要对 ALAIN_I18N_TOKEN 定义一个自实现服务接口(例如:app/core/I18NService),并在根模块下注册。
import { ALAIN_I18N_TOKEN } from '@delon/theme';import { I18NService } from '@core';@NgModule({
...
providers: [
{ provide: ALAIN_I18N_TOKEN, useClass: I18NService, multi: false }
]
})export class AppModule {}
i18n管道
为了不受第三方各自管道的命名方式,脚手架包含一个 i18n 的管道,它相当于直接调用 ALAIN_I18N_TOKEN 的 fanyi 方法。这个是模板里面用 | i18n,在/app/assets/tmp/i18n下的翻译起作用的原因
他和 @ngx-translate 的 | translate 有所不同,它会监听语言的变化并自动更新。而 | i18n 不会监听语言变更通知所以会有更好的性能,当你明确在切换语言后会重新渲染 Angular 项目时 | i18n 会更适合。\
如果想要只用 i18n管道,可以把TranslateModule去掉。