栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Angular i18n国际化(多语言)配置

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Angular i18n国际化(多语言)配置

1、安装依赖
npm install @ngx-translate/core --save
npm install @ngx-translate/http-loader --save
2、配置App.module

引入模块

import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';

读取json文件

export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

如果需要读取多个文件,使用如下配置

// export function createTranslateLoader(http: HttpClient) {
//   return new MultiTranslateHttpLoader(http, [
//     {prefix: "./assets/translations/share/", suffix: ".json"},
//     {prefix: "./assets/translations/quotes/", suffix: ".json"},
//   ]);
// }

跟模块使用forRoot配置

imports: [
    TranslateModule.forRoot({
      defaultLanguage: 'zh',
      loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [HttpClient]
      }
    })
  ],
3、配置子模块

如果使用了模块懒加载,则需要对子模块进行配置,没有略过,导入的文件包和函数配置等都是相同的,只有imports注入时使用forChild()配置。

imports: [
  TranslateModule.forChild({
    loader: {
     provide: TranslateLoader, 
      useFactory:(HttpLoaderFactory), 
      deps: [HttpClient]
    },
    // 隔离服务,如果隔离服务打开,会订阅不到其他模块更改语言!
    isolate: true 
  })
]
4、配置JSON
{
  "language": "Lang",
  "home": "Home"
  }
{
  "language": "语言",
  "home": "主页"
}
5、配置语言切换按钮

该示例为下拉框选择

  • 简体中文
  • English
  settingBtn(language: string) {
    if (language === 'zh') {
      this.languageBtn = 'EN';
      this.language = 'en';
    } else {
      this.languageBtn = '中文';
      this.language = 'zh';
    }
  }
  
  changeLanguage(lang: string) {
    this.i18n.use(lang);
    this.settingBtn(lang);
  }
6、监听语言切换

在app.component里面点阅语言切换,子模块关闭了服务隔离的话,可以全局切换语言。

import { TranslateService } from '@ngx-translate/core';
constructor(public i18n: TranslateService) { }
ngOnInit(): void {
    // 根据浏览器语言设置默认语言 
    const browserLang = this.i18n.getBrowserLang();
    const useLang = browserLang?.match(/zh|en/) ? browserLang : 'en';
    this.i18n.use(useLang);

    // 订阅语言切换事件
    this.i18n.onLangChange.subscribe((params) => {
      this.i18n.use(params.lang);
    });
  }
7、业务代码中使用

html中使用

{{ 'yes' | translate }}

TS中使用

this.translate.instant('yes');
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号