详解使用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 相关文章推荐
Convert Seconds To Hours
Jun 16 Javascript
jquery之empty()与remove()区别说明
Sep 10 Javascript
js+html5实现canvas绘制网页时钟的方法
May 21 Javascript
vue-router权限控制(简单方式)
Oct 29 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
js字符串倒序的实例代码
Nov 30 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 Javascript
angular中如何绑定iframe中src的方法
Feb 01 Javascript
图文详解vue框架安装步骤
Feb 12 Javascript
微信小程序云开发之使用云存储
May 17 Javascript
详解小程序如何动态绑定点击的执行方法
Nov 26 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 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程序的方法
2009/03/09 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
python写一个随机点名软件的实例
2019/11/28 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
Python调用飞书发送消息的示例
2020/11/10 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
建筑施工员岗位职责
2013/11/26 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
大学开学感言
2015/08/01 职场文书
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers