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中添加多语言支持的更多相关文章

  1. JVM中的动态语言支持简介

    抽丝剥茧 细说架构那些事——[优锐课] 从版本6开始,JVM已扩展为支持现代动态语言(也称为脚本语言).Java8的发行为这一领域提供了更多动力.感到这种支持的必要性是因为Java作为一种语言固有地是 ...

  2. Spring源码学习:第1步--在Spring源码中添加最简单的Demo代码

    为了最大程度地贴近Spring源码并进行学习,一种比较直接的做法是:直接在Spring源码中加入Demo代码,并进行调试. 参照以前使用Spring的经验,Spring最简单的使用方法是:一个实体类. ...

  3. 体验 ASP.NET Core 中的多语言支持(Localization)

    首先在 Startup 的 ConfigureServices 中添加 AddLocalization 与 AddViewLocalization 以及配置 RequestLocalizationOp ...

  4. KEIL4.12中添加ULINK2的支持

    转载自:http://www.amobbs.com/thread-4767650-1-1.html 如果你用KEIL4.12,但却没有Ulink2下载器,只有早先用的Ulink下载器,那么你按照下面三 ...

  5. Myeclipse中添加XFire插件支持

    自Myeclipse7.5后貌似默认不启用XFire插件的集成  本人今天使用Myeclipse10.6是发现没有XFire 自己捣鼓捣鼓 已经成功添加XFire 添加步骤 1.打开Myeclipse ...

  6. 如何在Windows 10 IoT Core中添加其他语言的支持,如中文

    目前很多开发者已经开始使用Windows 10 IoT来做物联网领域的开发了,目前Windows 10 IoT Core的版本支持树莓派2(以及新出的树莓派3).Minnowboard Max以及Dr ...

  7. eclipse中添加jstl标签支持(引入头)

    https://blog.csdn.net/wangyuxuan_java/article/details/8580318

  8. WIM镜像添加多语言支持

    起初的想法: intel 600p虽然速度一般,但pcie还是值得一试的.购买后发现原来的win7版本无法识别就找了KB2990941和KB3087873两个补丁,成功识别出了硬盘.期间通过dezor ...

  9. Maven Java项目添加Scala语言支持

    为了在一个普通的使用Maven构建的Java项目中,增加对Scala语言的支持.使得其能够同时编译Java和Scala语言的文件.其实很简单的一件事情,只需要在pom.xml文件中的build部分中的 ...

随机推荐

  1. 安卓导航抽屉 Navigation Drawer 实现沉浸通知栏

    在使用 Navigation Drawer Activity 模版的时候,遇到了通知栏无法完全沉浸的问题,尝试搜索一些现有的解决方法,但是或多或少都会存在一些问题,通过反复尝试找到找到了一种比较靠谱的 ...

  2. mysql忘记root密码实现免密登录

    1.配置my.cnf文件,跳过授权表: skip-grant-tables 2.重启mysqld服务 3.z直接mysql登录 4.use mysql这个数据库 5.设置密码: update user ...

  3. C# .NET ML.NET 机器学习 图像分类

    一. 准备工作 IDE是 VS2019.先下载好"resnet_v2_50_299.meta"这个文件,放入"C:\Users\jk\AppData\Local\Temp ...

  4. 基于 BaGet 搭建 Nuget 服务器

    1 前言 1.1 BaGet 介绍 BaGet 是一个轻量级的,开源的,跨平台的 Nuget 和 symbol 服务器. 1.2 环境介绍 操作系统:CentOS 7 使用 Docker 安装 2 安 ...

  5. 使用 oh-my-posh 美化 windows terminal,让其接近oh-my-zsh

    本文旨在快速让你进行美化,少踩一些坑,原文出自我的博客:prettier-windows-terminal-with-oh-my-posh 为了同 iterm2 下的 oh-my-zsh 保持基本一致 ...

  6. 解放双手!推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫!

    小二是公司新来的实习生,之前面试的过程中对答如流,所以我非常看好他.第一天,我给他了一台新电脑,要他先在本地搭建个 Java 开发环境. 二话不说,他就开始马不停蹄地行动了.真没想到,他竟然是通过命令 ...

  7. 从头创建一个新的vue项目------用npm|yarn下载vue-cli|vue-ui创建vue

    1.下载node或者是nvm node可以直接去node官网下载,http://nodejs.cn/,默认是长期维护的版本 如果想管理node的版本,可以下载nvm.这个是可选的.但是作为一个前端工程 ...

  8. 渗透测试之常用的sql语句

    学习路漫漫,常用的sql语句给我们平常所运用的sql语句相差不多,用句土话讲:百变不离其中 注:网络安全时刻警醒,需要打靶的还需要建立自己的靶场,关注博主在以往博客中分享有多种创建靶场可参考 1.判断 ...

  9. 第三章、DNS域名解析服务

    DNS 1DNS简介 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS ...

  10. 从 CPU 讲起,深入理解 Java 内存模型!

    Java 内存模型,许多人会错误地理解成 JVM 的内存模型.但实际上,这两者是完全不同的东西.Java 内存模型定义了 Java 语言如何与内存进行交互,具体地说是 Java 语言运行时的变量,如何 ...