详解使用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 图片上传按比例预览插件集合
May 28 Javascript
js图片实时加载提供网页打开速度
Sep 11 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
Dec 30 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
Jun 13 Javascript
关于使用js算总价的问题
Jun 23 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
Apr 02 Javascript
详解JavaScript的变量
Apr 04 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
Apr 17 Javascript
微信小程序页面间跳转传参方式总结
Jun 13 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
Jun 25 Javascript
js实现列表向上无限滚动
Jan 13 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
Protoss魔法科技
2020/03/14 星际争霸
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
js获取域名的方法
2015/01/27 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
python生成指定长度的随机数密码
2014/01/23 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
python多线程扫描端口(线程池)
2019/09/04 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
Python post请求实现代码实例
2020/02/28 Python
Python实现爬取并分析电商评论
2020/06/19 Python
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
门卫工作岗位职责
2013/12/17 职场文书
职业生涯规划书的格式
2013/12/29 职场文书
安全隐患整改报告
2014/11/06 职场文书
2014年党支部工作总结
2014/11/13 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
Spring实现内置监听器
2021/07/09 Java/Android