详解使用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 相关文章推荐
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 Javascript
Node.js实现简单聊天服务器
Jun 20 Javascript
js 实现的可折叠留言板(附源码下载)
Jul 01 Javascript
jquery SweetAlert插件实现响应式提示框
Aug 18 Javascript
require.js的用法详解
Oct 20 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
Jun 16 Javascript
jQuery基本选择器和层次选择器学习使用
Feb 27 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
详解如何在JS代码中消灭for循环
Dec 11 Javascript
用javascript实现倒计时效果
Feb 09 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
php与js的区别是什么
2013/08/05 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
vuejs如何配置less
2017/04/25 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python获取外网ip地址的方法总结
2015/07/02 Python
Python 多线程实例详解
2017/03/25 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
python 基于opencv操作摄像头
2020/12/24 Python
毕业生自荐书模版
2014/01/04 职场文书
大学生旷课检讨书
2014/01/22 职场文书
九年级体育教学反思
2014/01/23 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
促销活动总结
2014/04/28 职场文书
工程材料采购方案
2014/05/18 职场文书
企业总经理任命书
2014/06/05 职场文书
幼儿教师辞职信
2015/02/27 职场文书
如何写通讯稿
2015/07/22 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL