详解使用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工具_Form 封装
Aug 21 Javascript
jquery下jstree简单应用 - v1.0
Apr 14 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
Jan 14 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
Sep 22 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 Javascript
高性能JavaScript循环语句和条件语句
Jan 20 Javascript
JS两种类型的表单提交方法实例分析
Nov 28 Javascript
angular.js 路由及页面传参示例
Feb 24 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
JS实现网站楼层导航效果代码实例
Jun 16 Javascript
js实现网页随机验证码
Oct 19 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转换IP地址到真实地址的方法详解
2013/06/09 PHP
php正则修正符用法实例详解
2016/12/29 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
jQuery中 delegate使用的问题
2015/07/03 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
Django开发的简易留言板案例详解
2018/12/04 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python发送邮件实现基础解析
2020/08/14 Python
详解python的super()的作用和原理
2020/10/29 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
.NET面试10题
2014/02/24 面试题
化工机械应届生求职信
2013/11/04 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏
Oracle锁表解决方法的详细记录
2022/06/05 Oracle