一步一步在angular11中添加多语言支持
1.新建angular
2.添加@angular/localize
ng add @angular/localize
3.设置默认locale_id,在app.module.ts中
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule
],
providers: [{provide: LOCALE_ID, useValue: 'zh' }],
bootstrap: [AppComponent]
})
export class AppModule { }
4.设置翻译文件输出路径,在package.json中
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build ",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"extract-i18n": "ng extract-i18n --output-path src/i18n"
},
5.添加ngx-i18nsupport
npm install ngx-i18nsupport --save-dev
6.在根目录下添加xliffmerge.json
{
"xliffmergeOptions": {
"srcDir": "src/i18n",
"genDir": "src/i18n"
}
}
7.添加翻译合并脚本,在package.json中
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build ",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"extract-i18n": "ng extract-i18n --output-path src/i18n",
"xliffmerge": "xliffmerge --profile xliffmerge.json en"
},
8.在文件中增加翻译文本
HTML中
<div i18n>hello</div>
{{title}}
typescript中
export class AppComponent {
title = 'angular-i18n';
constructor() {
this.title = $localize`world ${'abc'}`;
}
}
9.尝试生成翻译文件
npm run extract-i18n;npm run xliffmerge;
这一步之后在工程的src/i18n文件夹会生成2个文件message.xlf,message.en.xlf
其中message.xlf是从工程中提取的所有待翻译语句,message.en.xlf是留存的已翻译好的文件。
也就是说,每次运行npm run extract-i18n;npm run xliffmerge;,message.xlf会重新生成而message.en.xlf会增量增加,已翻译的内容不会变
10.修改angular.json
{
"projects": {
"ponyracer": {
"projectType": "application",
// ...
"i18n": {
"sourceLocale": {
"code": "zh", //这里设置了zh,那么第3步可以不用做
"baseHref": "/zh/"
},
"locales": {
"en": {
"translation": "src/i18n/messages.en.xlf",
"baseHref": "/en/"
}
}
},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
// ...
"options": {
// ...
"i18nMissingTranslation": "error"
},
"configurations": {
"production": {
// ...
},
"en": {
"localize": ["en"]
}
}
},
"serve": {
// ...
"configurations": {
"production": {
// ...
},
"en": {
"browserTarget": "ponyracer:build:en"
}
}
}
// ...
}
之后运行ng build --configuration='production,en'将生成英文版的打包文件
运行ng build --prod --localize将同时生成中文和英文的打包文件
11.增加脚本,修改package.json
"scripts": {
"ng": "ng",
"start": "ng serve",
"start-en": "ng serve --configuration=en",
"build": "ng build --prod --localize",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"extract-i18n": "ng extract-i18n --output-path src/i18n",
"xliffmerge": "xliffmerge --profile xliffmerge.json en",
"generate-i18n": "npm run extract-i18n && npm run xliffmerge"
},
12.参考链接
一步一步在angular11中添加多语言支持的更多相关文章
- JVM中的动态语言支持简介
抽丝剥茧 细说架构那些事——[优锐课] 从版本6开始,JVM已扩展为支持现代动态语言(也称为脚本语言).Java8的发行为这一领域提供了更多动力.感到这种支持的必要性是因为Java作为一种语言固有地是 ...
- Spring源码学习:第1步--在Spring源码中添加最简单的Demo代码
为了最大程度地贴近Spring源码并进行学习,一种比较直接的做法是:直接在Spring源码中加入Demo代码,并进行调试. 参照以前使用Spring的经验,Spring最简单的使用方法是:一个实体类. ...
- 体验 ASP.NET Core 中的多语言支持(Localization)
首先在 Startup 的 ConfigureServices 中添加 AddLocalization 与 AddViewLocalization 以及配置 RequestLocalizationOp ...
- KEIL4.12中添加ULINK2的支持
转载自:http://www.amobbs.com/thread-4767650-1-1.html 如果你用KEIL4.12,但却没有Ulink2下载器,只有早先用的Ulink下载器,那么你按照下面三 ...
- Myeclipse中添加XFire插件支持
自Myeclipse7.5后貌似默认不启用XFire插件的集成 本人今天使用Myeclipse10.6是发现没有XFire 自己捣鼓捣鼓 已经成功添加XFire 添加步骤 1.打开Myeclipse ...
- 如何在Windows 10 IoT Core中添加其他语言的支持,如中文
目前很多开发者已经开始使用Windows 10 IoT来做物联网领域的开发了,目前Windows 10 IoT Core的版本支持树莓派2(以及新出的树莓派3).Minnowboard Max以及Dr ...
- eclipse中添加jstl标签支持(引入头)
https://blog.csdn.net/wangyuxuan_java/article/details/8580318
- WIM镜像添加多语言支持
起初的想法: intel 600p虽然速度一般,但pcie还是值得一试的.购买后发现原来的win7版本无法识别就找了KB2990941和KB3087873两个补丁,成功识别出了硬盘.期间通过dezor ...
- Maven Java项目添加Scala语言支持
为了在一个普通的使用Maven构建的Java项目中,增加对Scala语言的支持.使得其能够同时编译Java和Scala语言的文件.其实很简单的一件事情,只需要在pom.xml文件中的build部分中的 ...
随机推荐
- 安卓导航抽屉 Navigation Drawer 实现沉浸通知栏
在使用 Navigation Drawer Activity 模版的时候,遇到了通知栏无法完全沉浸的问题,尝试搜索一些现有的解决方法,但是或多或少都会存在一些问题,通过反复尝试找到找到了一种比较靠谱的 ...
- mysql忘记root密码实现免密登录
1.配置my.cnf文件,跳过授权表: skip-grant-tables 2.重启mysqld服务 3.z直接mysql登录 4.use mysql这个数据库 5.设置密码: update user ...
- C# .NET ML.NET 机器学习 图像分类
一. 准备工作 IDE是 VS2019.先下载好"resnet_v2_50_299.meta"这个文件,放入"C:\Users\jk\AppData\Local\Temp ...
- 基于 BaGet 搭建 Nuget 服务器
1 前言 1.1 BaGet 介绍 BaGet 是一个轻量级的,开源的,跨平台的 Nuget 和 symbol 服务器. 1.2 环境介绍 操作系统:CentOS 7 使用 Docker 安装 2 安 ...
- 使用 oh-my-posh 美化 windows terminal,让其接近oh-my-zsh
本文旨在快速让你进行美化,少踩一些坑,原文出自我的博客:prettier-windows-terminal-with-oh-my-posh 为了同 iterm2 下的 oh-my-zsh 保持基本一致 ...
- 解放双手!推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫!
小二是公司新来的实习生,之前面试的过程中对答如流,所以我非常看好他.第一天,我给他了一台新电脑,要他先在本地搭建个 Java 开发环境. 二话不说,他就开始马不停蹄地行动了.真没想到,他竟然是通过命令 ...
- 从头创建一个新的vue项目------用npm|yarn下载vue-cli|vue-ui创建vue
1.下载node或者是nvm node可以直接去node官网下载,http://nodejs.cn/,默认是长期维护的版本 如果想管理node的版本,可以下载nvm.这个是可选的.但是作为一个前端工程 ...
- 渗透测试之常用的sql语句
学习路漫漫,常用的sql语句给我们平常所运用的sql语句相差不多,用句土话讲:百变不离其中 注:网络安全时刻警醒,需要打靶的还需要建立自己的靶场,关注博主在以往博客中分享有多种创建靶场可参考 1.判断 ...
- 第三章、DNS域名解析服务
DNS 1DNS简介 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS ...
- 从 CPU 讲起,深入理解 Java 内存模型!
Java 内存模型,许多人会错误地理解成 JVM 的内存模型.但实际上,这两者是完全不同的东西.Java 内存模型定义了 Java 语言如何与内存进行交互,具体地说是 Java 语言运行时的变量,如何 ...