Angular12和WebApi多语言使用

这篇具有很好参考价值的文章主要介绍了Angular12和WebApi多语言使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.安装ngx-translate

运行下面命令安装@ngx-translate/core和@ngx-translate/http-loader:

npm install @ngx-translate/core --save
npm install @ngx-translate/http-loader –save
2.配置多语言

1.在根模块app.module.ts下导入TranslateModule,并定义配置

export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
  imports: [
    TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [HttpClient],
      },
    }),
  ],
  providers: [
    { provide: NZ_I18N, useValue: en_US },
  ]
})

2.在./src/assets/i18n下创建多语言文件en_US.jsonzh-CN.json,多语言的值是json形式展示

cd ./src/assets/i18n
ls en_US.json
ls zh-CN.json

3.注入TranslateService服务,并定义设置语言的函数,例如调用函数切换为英文setLanguage('en_US')

//注入多语言服务
constructor(private translate: TranslateService){}
//设置语言
async setLanguage(lang: FrontEndLanguage) {
  await this.translate.use(lang).toPromise();
}
3.设置自定义文件夹

如果你想自定义多语言文件存放的路径,那就必须实现TranslateLoader

1.继承TranslateLoader,实现方法

export class CustomTranslateHttpLoader implements TranslateLoader {
  constructor(private http: HttpClient) { }

  getTranslation(lang: string) {
    const prefix = './assets/language/';
    const suffix = '.json';
    this.http.head
    return this.http.get(`${prefix}${lang}${suffix}`, { headers: { 'Content-Type': 'application/json;charset=utf-8' } });
  }
}

2.然后在app.module.ts下的HttpLoaderFactory中使用自定义的加载器

export function HttpLoaderFactory(http: HttpClient) {
  return new CustomTranslateHttpLoader(http);
}
4.多语言使用

1.在后端ts获取多语言信息,首先注入TranslateService服务

//注入多语言服务
constructor(private translate: TranslateService){}
//获取多语言值
this.translate.instant(summary);

2.在html中给表格的列头添加多语言值,“th”:{"Name":'名称'}

 <th nzAlign="center" nzWidth="20%"  ><span style="color: red;"> &nbsp;</span>{{"th.Name"|translate}}</th>
5.WebAPI实现多语言

首先为什么需要后端多语言,前端不是有了吗?主要针对一些特殊提示,只能后端返回的场景,如果你对Asp .net管道模型或者webAPI框架有足够深入,可以使用HttpModule或者根据你的业务需要,自己在框架上扩展都可以,此处使用DelegatingHandler在webAPI管道中拦截的方式实现,主要实现步骤如下:

1.首先需要客户端在请求头带上语言表示当前请求的语言类型,然后web项目中创建资源文件

Angular12和WebApi多语言使用

2.实现DelegatingHandler,以作为拦截输出文章来源地址https://www.toymoban.com/news/detail-807343.html

public class CultureDelegatingHandler : DelegatingHandler
{ 
    protected  override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        request.Headers.TryGetValues("culture", out IEnumerable<string> values);
        if (values != null && values.Count() > 0)
       {
            string  language =  values.FirstOrDefault().Replace('_', '-');

            switch (language)
            {
                case "EN":
                     language = "en_us";
                    break;
                case "ZH":
                     language = "zh-CN";
                    break;
            }
         
            Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
        }
        return base.SendAsync(request, cancellationToken);
    }
}

到了这里,关于Angular12和WebApi多语言使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【自然语言处理】【大模型】CodeGeeX:用于代码生成的多语言预训练模型

    【自然语言处理】【大模型】CodeGeeX:用于代码生成的多语言预训练模型

    CodeGeeX:用于代码生成的多语言预训练模型 《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址:https://arxiv.org/pdf/2303.17568.pdf 相关博客 【自然语言处理】【大模型】RWKV:基于RNN的LLM 【自然语言处理】【大模型】CodeGen:一个用于多轮程序合成

    2024年02月06日
    浏览(10)
  • C语言学习笔记 使用vscode外部console出现闪退-12

    C语言学习笔记 使用vscode外部console出现闪退-12

    在使用vscode的外部console时,会出现闪退现象,这是因为程序运行结束后,系统自动退出了终端(终端机制决定的)。我们可以在C程序结束后,使用system函数来暂停DOS终端系统,这样就可以完整地看到程序运行过程。 在程序上方添加stdlib.h头文件,然后在程序结束后调用syst

    2024年02月14日
    浏览(10)
  • 【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换

    【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换

    前言 Unity的 多语言本地化 是一个很实用的功能,它可以帮助游戏支持多种语言,让不同语言的玩家都能够更好地体验游戏。 而实现本地化的方案也有很多种,各个方案之间也各有优劣,后面也会对多个方案进行介绍学习。 本文就来介绍一个专门作用于多语言本地化的Unity官

    2024年02月05日
    浏览(16)
  • angular前端环境搭建、安装angular

    angular前端环境搭建、安装angular

    1.下载node.js安装包(要求node版本大于12.20) Node.js官方网站 : https://nodejs.org/en/ 进入官网后,当前页面下载的是最新版本,如需要下载历史版本,点击红框标注的其他下载,在进入的新的页面底部,选择红框标准的先前版本,然后下载相应的版本,在跳转的页面下载win64的版

    2024年02月03日
    浏览(9)
  • 2023最新版Python 3.12.0安装使用指南

    2023最新版Python 3.12.0安装使用指南

    Python is a programming language that lets you work quickly and integrate systems more effectively. - www.python.org 要进行Python软件开发,首先要安装Python软件包。 本文简要介绍的Python 3最新版3.12.0的安装过程,希望对您有所帮助。 首先,访问Python官网:https://www.python.org 在主页上方导航栏,选择 Do

    2024年02月08日
    浏览(14)
  • Angular开发之——安装Angular CLI并初始化项目(02)

    Angular CLI介绍及开发环境准备 安装Angular CLI开发工具 使用Angular CLI初始化Angular项目 简单体验Angular 2.1 Angular CLI介绍 目前,无论你使用什么前端框架,都必须要使用到各种NodeJS工具,Angular也不例外。与其他框架不同,Angular从一开始就走的“全家桶”式的设计思路,因此@angul

    2024年02月07日
    浏览(11)
  • 个人使用:Windows下 OpenCV 的下载安装(2021.12.4详细)

    个人使用:Windows下 OpenCV 的下载安装(2021.12.4详细)

    一、下载OpenCV 到OpenCV官网Release(发布)板块下载OpenCV-4.5.4 Windows。 下载后是这样的 然后双击他,解压,就是大佬们说的安装,实质就是解压一下,解压完出来一个文件夹,其他什么也没发生。你把这个文件夹放在哪都行,不过你要记住他在哪。  正在解压 解压完打开文件夹是

    2024年02月16日
    浏览(11)
  • MFC基于对话框使用dll进行多语言切换

    MFC基于对话框使用dll进行多语言切换

    title: MFC基于对话框使用dll进行多语言切换 categories:[MFC] tags:[音视频编程] date: 2021/12/15 作者:hackett 微信公众号:加班猿 Qt使用qm文件切换有两种加载方式,比较容易一些 在资源文件中加载(这个比较好): 优点: 在程序发布时不用把最新的.qm文件拷贝到加载路径中,降低了修

    2024年02月08日
    浏览(15)
  • 如何安装并使用 SQL Server Management Studio18.12.1?

    如何安装并使用 SQL Server Management Studio18.12.1?

    SQL Server Management Studio (SSMS) 是一种集成环境,用于管理从 SQL Server 到 Azure SQL 数据库的任何 SQL 基础结构。 SSMS 提供用于配置、监视和管理 SQL Server 和数据库实例的工具。 使用 SSMS 部署、监视和升级应用程序使用的数据层组件,以及生成查询和脚本,我们可以通过以下步骤来

    2024年02月05日
    浏览(17)
  • 使用  Transformers 为多语种语音识别任务微调 Whisper 模型

    使用 Transformers 为多语种语音识别任务微调 Whisper 模型

    本文提供了一个使用 Hugging Face 🤗 Transformers 在任意多语种语音识别 (ASR) 数据集上微调 Whisper 的分步指南。同时,我们还深入解释了 Whisper 模型、Common Voice 数据集以及微调等理论知识,并提供了数据准备和微调的相关代码。如果你想要一个全部是代码,仅有少量解释的 Note

    2024年02月11日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包