详解使用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 相关文章推荐
Jquery操作js数组及对象示例代码
May 11 Javascript
js打造数组转json函数
Jan 14 Javascript
JS实现判断碰撞的方法
Feb 11 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
jquery的幻灯片图片切换效果代码分享
Sep 07 Javascript
基于jQuery日历插件制作日历
Mar 11 Javascript
javascript之Array 数组对象详解
Jun 07 Javascript
浅析Bootstrap验证控件的使用
Jun 23 Javascript
require简单实现单页应用程序(SPA)
Jul 12 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
Jul 18 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
Sep 21 Javascript
详解js创建对象的几种方法及继承
Apr 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
php权重计算方法代码分享
2014/01/09 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
js随机生成一个验证码
2017/06/01 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
在Python中执行系统命令的方法示例详解
2017/09/14 Python
python清理子进程机制剖析
2017/11/23 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
医院辞职信范文
2014/01/17 职场文书
家长对孩子的感言
2014/03/10 职场文书
公司年会策划方案
2014/05/17 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
先进单位申报材料
2014/12/25 职场文书