详解使用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中 关于prototype属性实现继承的原理图
Apr 16 Javascript
jquery $.trim()方法使用介绍
May 21 Javascript
javascript从image转换为base64位编码的String
Jul 29 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
Sep 25 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 Javascript
自己封装的一个原生JS拖动方法(推荐)
Nov 22 Javascript
Bootstrap table 定制提示语的加载过程
Feb 20 Javascript
vue页面使用阿里oss上传功能的实例(二)
Aug 09 Javascript
如何抽象一个Vue公共组件
Oct 17 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
vue 注册组件的使用详解
May 05 Javascript
vue组件tabbar使用方法详解
Nov 06 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的大小写敏感问题整理
2011/12/29 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
yii数据库的查询方法
2015/12/28 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
js下用gb2312编码解码实现方法
2009/12/31 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
js函数和this用法实例分析
2020/03/13 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
Python中的变量和作用域详解
2016/07/13 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
PageFactory设计模式基于python实现
2020/04/14 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
比较一下entity bean和session bean
2013/12/27 面试题
后勤部长岗位职责
2013/12/14 职场文书
法学专业本科生自荐信范文
2013/12/17 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
教师工作能力自我评价
2015/03/04 职场文书
英文自荐信范文
2015/03/25 职场文书
建国大业观后感
2015/06/01 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫