详解使用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 相关文章推荐
js展开闭合效果演示代码
Jul 24 Javascript
jQuery时间轴插件使用详解
Jul 16 Javascript
延时加载JavaScript代码提高速度
Dec 27 Javascript
详解angularjs结合pagination插件实现分页功能
Feb 10 Javascript
AngularJS ionic手势事件的使用总结
Aug 09 Javascript
探讨Vue.js的组件和模板
Oct 27 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
Jan 03 Javascript
微信小程序实现随机验证码功能
Dec 20 Javascript
javascrit中undefined和null的区别详解
Apr 07 Javascript
JS代码优化的8点建议
Feb 04 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 Javascript
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
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/30 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
python之wxPython应用实例
2014/09/28 Python
讲解Python中运算符使用时的优先级
2015/05/14 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
python Selenium 库的使用技巧
2020/10/16 Python
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
干部下基层实施方案
2014/03/14 职场文书
优秀班主任材料
2014/12/16 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL