详解使用angular-cli发布i18n多国语言Angular应用


Posted in Javascript onMay 20, 2017

在模板html标签中增加i18n

<h1 i18n>Hello world!</h1>

使用ng命令产生xlf格式的message.xlf文件

$ ng xi18n --output-path src/i18n

命令执行后,生成 src/i18n/messages.xlf 文件

<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
 <file source-language="en" datatype="plaintext" original="ng2.template">
  <body>
   <trans-unit id="5816217f424111ae4c91dd72ee1db0ae252763b5" datatype="html">
    <source>Hello World!</source>
    <target/>
   </trans-unit>
  </body>
 </file>
</xliff>

复制message.xlf,message.en.xlf(英文版本) message.zh.xlf中文版本

<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
 <file source-language="en" datatype="plaintext" original="ng2.template">
  <body>
   <trans-unit id="5816217f424111ae4c91dd72ee1db0ae252763b5" datatype="html">
    <source>Hello World!</source>
    <target>Hello World!</target>
   </trans-unit>
  </body>
 </file>
</xliff>

<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
 <file source-language="en" datatype="plaintext" original="ng2.template">
  <body>
   <trans-unit id="5816217f424111ae4c91dd72ee1db0ae252763b5" datatype="html">
    <source>Hello World!</source>
    <target>哈喽,世界!</target>
   </trans-unit>
  </body>
 </file>
</xliff>
$ ng serve --aot \
      --i18n-file=src/i18n/messages.zh.xlf \
      --locale=zh \
      --i18n-format=xlf

现在浏览,显示的是中文版本

$ for lang in en zh; do \
  ng build --output-path=dist/$lang \
       --aot \
       -prod \
       --bh /$lang/ \
       --i18n-file=src/i18n/messages.$lang.xlf \
       --i18n-format=xlf \
       --locale=$lang; \
 done

这个命令执行完毕后,生成了en和zh两种语言版本。http://localhost:4200/en访问英文版本,http://localhost:4200/zh访问中文版本。--bh指定默认版本,http://localhost:4200访问时,跳转到默认版本。

修改package.json文件,加入脚本

{
 [...]
 "scripts": {
  [...]
  "build-i18n": "for lang in en zh; do ng build --output-path=dist/$lang --aot -prod --bh /$lang/ --i18n-file=src/i18n/messages.$lang.xlf --i18n-format=xlf --locale=$lang; done"
 }
 [...]
}

这样就可以执行npm run build-i18n 命令,一次build多个语言版本了。

windows用户命令

> ng build --output-path=dist/zh --aot -prod --bh /zh/ --i18n-file=src/i18n/messages.zh.xlf --i18n-format=xlf --locale=zh
> ng build --output-path=dist/en --aot -prod --bh /en/ --i18n-file=src/i18n/messages.en.xlf --i18n-format=xlf --locale=en

package.json脚本

"scripts": {
  "build-i18n:es": "ng build --output-path=dist/zh --aot -prod --bh /zh/ --i18n-file=src/i18n/messages.zh.xlf --i18n-format=xlf --locale=zh",
  "build-i18n:en": "ng build --output-path=dist/en --aot -prod --bh /en/ --i18n-file=src/i18n/messages.en.xlf --i18n-format=xlf --locale=en",
  "build-i18n": "npm run build-i18n:en ; npm run build-i18n:zh"
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
无语,javascript居然支持中文(unicode)编程!
Apr 12 Javascript
ExtJS 简介 让你知道extjs是什么
Dec 29 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
浅谈setTimeout 与 setInterval
Jun 23 Javascript
详解iframe与frame的区别
Jan 13 Javascript
BootStrap实现轮播图效果(收藏)
Dec 30 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
Angular angular-file-upload文件上传的示例代码
Aug 23 Javascript
浅谈webpack4.x 入门(一篇足矣)
Sep 05 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
基于JS实现简单滑块拼图游戏
Oct 12 Javascript
ztree实现权限横向显示功能
May 20 #Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 #Javascript
在使用JSON格式处理数据时应该注意的问题小结
May 20 #Javascript
微信小程序利用co处理异步流程的方法教程
May 20 #Javascript
关于jQuery库冲突的完美解决办法
May 20 #jQuery
layui文件上传实现代码
May 20 #Javascript
为你的微信小程序体积瘦身详解
May 20 #Javascript
You might like
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
定义select的边框颜色
2008/04/28 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
分析Python读取文件时的路径问题
2018/02/11 Python
python DataFrame 取差集实例
2019/01/30 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
Android笔试题总结
2014/11/29 面试题
环境科学专业研究生求职信
2013/10/02 职场文书
小学教师培训方案
2014/06/09 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
JavaScript的function函数详细介绍
2021/11/20 Javascript