最近的app开发中需要考虑多语言国际化的问题,经查资料,目前大部分使用的是angular-translate.js这个组件,网站说明是这个:https://angular-translate.github.io

具体步骤:

1.下载angular-translate.min.js和angular-translate-loader-static-files.min.js,并在index.html中添加引用

    <!--多语言模块-->
<script src="lib/angular-translate/angular-translate.min.js"></script>
<script src="lib/angular-translate/angular-translate-loader-static-files.min.js"></script>

2.设置依赖项

var app = angular.module("ionicApp", ["ionic","pascalprecht.translate"]);

3.配置多语言,此处是加载本地化的json文件,在www目录下建立languages目录,有两个json文件:en.json和zh.json

{
"LOGIN_REGISTER": "Login/Register",
"A" : "电动自行车A",
"B" : "电动三轮车B",
"MyLa":
{
"length" : ,
"values":[
{
"name" : "Huanhuan","value" : ""
},
{
"name" : "Alex","value" : ""
}
]
}
}

en.json

{
"LOGIN_REGISTER": "登录/注册",
"A" : "电动自行车",
"B" : "电动三轮车",
"MyLa":{
"length" : ,
"values":[
{
"name" : "郭欢欢","value" : ""
},
{
"name" : "大海","value" : ""
}
]}
}

zh.json

这两个文件就是我们的多语言文件,相关内容应该日后都放在这里。

4.加载多语言文件,这个是需要提前加载的(貌似也可以延迟加载,还没研究到)

app.config(function($locationProvider,$stateProvider, $urlRouterProvider, $ionicConfigProvider, $sceDelegateProvider, $compileProvider,$translateProvider)
{
$ionicConfigProvider.tabs.style("standard");
$ionicConfigProvider.tabs.position("bottom"); $ionicConfigProvider.navBar.alignTitle("center"); $ionicConfigProvider.views.transition("ios");
$ionicConfigProvider.views.maxCache();
$ionicConfigProvider.views.swipeBackEnabled(false); $ionicConfigProvider.backButton.text("");
$ionicConfigProvider.backButton.previousTitleText(false); $ionicConfigProvider.templates.maxPrefetch();
/*
Url replace by dynamic load urls.json 2016.10.25
*/
$urlRouterProvider.deferIntercept();
$urlRouterProvider.otherwise('tab/home');
$locationProvider.html5Mode({enabled: false});
$stateProviderRef = $stateProvider;
/*
添加多语言设置
*/
$translateProvider.useStaticFilesLoader({
prefix: 'languages/',
suffix: '.json'
});
$translateProvider.use('en');
})

这里的prefix,suffix和en三个参数,实际上会合成一个类似{prefix}{en}{suffix}的字符串,即languages/en.json,也就是我们的多语言文件地址

5.使用指令实现翻译效果,比如我们在view中有如下一段代码,LOGIN_REGISTER实现不同语言下的显示。

          <div class="sign" ng-if=!$root.user>
<a href="#/login/">
<h2 translate>LOGIN_REGISTER</h2>
</a>
</div>

由于我们在第4步中默认使用的是英文en,所以第一次启动的时候对应的内容是en.json中LOGIN_REGISTER对应的值"Login/Register"

6.语言的切换,我们设置两个按钮事件,对应中文/英文的切换

$scope.chinese= function()
{
$translate.use("zh");
};
$scope.english= function()
{
$translate.use("en");
};

每点击下中文按钮,LOGIN_REGISTER就即刻变为zh.json中对应的 "登录/注册",点下英文按钮,则写换到"Login/Register"

这样我们基本完成了单个值的多语言的实现.

Ionic App之国际化(1)单个参数的处理的更多相关文章

  1. Ionic App之国际化(2) json数组的处理

    在Ionic App值国际化(1)中我们实现了对单个参数的多语言处理,下面开始如何进行数组的处理. 1.在我们的多语言文件中设置要访问的json数组,en.json和zh.json,此处就以en.js ...

  2. Ionic App之国际化(3) json数组的处理

    接上一篇Ionic App之国际化(2) json数组的处理 之后,如何处理json数据长度的问题,目前的一个折中方法是翻译长度字段. 多语言文件内容: "MyLa": { &qu ...

  3. [转]Ionic + AngularJS angular-translate 国际化本地化解决方案

    本文转自:http://www.cnblogs.com/maoyazhi/p/4332362.html 欢迎访问我们的网站,网站上有更多关于技术性的交流:http://www.ncloud.hk/技术 ...

  4. 方法:怎么用ionic命令行调试你的ionic app

    官网上有很详细的解说  http://blog.ionic.io/live-reload-all-things-ionic-cli/ 下面说说我自己的调试过程(android版): 首先用命令行进入你 ...

  5. ionic app打包和签名

    ionic app打包和签名 1.首先在项目根目录执行  ionic platform add android  生成Android平台. 2.配置应用签名:在根目录下执行以下命令 keytool - ...

  6. Ionic app升级插件开发

    终于走到了写插件的这个地方了,插件的过程: 1.安装plugman插件,管理我们的程序 npm install -g plugman 2.创建插件项目appUpgrade,cd 到你的目标目录下,执行 ...

  7. 【ionic App问题总结系列】ionic 如何更新app版本

    ionic 如何进行自动更新 ionic App更新有两种方式:第一种是普通的从远程下载apk,安装并覆盖旧版本.另外一种就是采用替换www文件夹的内容,实现应用内更新,而无需下载安装apk. 这篇文 ...

  8. Ionic + AngularJS angular-translate 国际化本地化解决方案

    欢迎访问我们的网站,网站上有更多关于技术性的交流:http://www.ncloud.hk/技术分享/ionic-plus-angularjs-angular-translate-国际化本地化解决方案 ...

  9. iOS Storyboard创建APP 的国际化操作

    Storyboard创建APP 的国际化操作 最近在看<X-code江湖录>这本书,看到了APP 国际化这点,刚刚也简单的实践了一下.现在和大家分享分享! 写的这个简单的Demo全都是用 ...

随机推荐

  1. ArcGIS Server Rest 认证过程分析

    1. http://192.168.1.220:6080/arcgis/admin/login?redirect= Request URL: http://192.168.1.220:6080/arc ...

  2. Linux 下修改网卡接口名

    Linux下修改网卡接口名 by:授客 QQ:1033553122 (测试环境:CentOS-6.0-x86_64-bin-DVD1.iso+Vmware) 作用 可以用于解决类似如下Device n ...

  3. vmare连接远程服务器的问题

    测试环境:两端都是VMware Workstation 12 Pro 1.需要共享虚拟机 在虚拟机上点击右键 -> Manage -> Share 后面按照操作设置 2.远程服务器的443 ...

  4. vs下开发windows服务程序

    一. VS2012下开发Windows服务 1. 打开VS2012,新建项目,选择Windows服务,此处我以开发一个定时自动发送邮件的服务来做介绍,如下图: 2. 创建好后,编译器会自动创建一些文件 ...

  5. Windows 系统光盘刻录教程-光盘怎样刻录?刻录数据光盘用"轨道一次写入"还是"光盘一次写入"?

    刻录光盘需要 DVD-RW 的光驱,并且光盘需要 DVD-R 的光盘用于刻录.刻录工具可以使用https://cn.ultraiso.net/ 来进行刻录.选择软件目录 中 工具 ,选择 刻录光盘映像 ...

  6. Spring boot + mybatis + orcale

    接着上次的实现, 添加 mybatis 查询 orcale 数据库 第一步: 新建几个必须的包, 结果如下 第二步: 在service包下新建personService.java 根据名字查perso ...

  7. Deuteronomy

    You should choose the right path when you can choose, and you should choose the right path even if y ...

  8. Java实现对zip和rar文件的解压缩

    通过java实现对zip和rar文件的解压缩

  9. win7下面搭建angularjs开发环境

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 1.安装git,添加环境变量2.github上有一个比较好的纯净AngularJs app的种 ...

  10. 远程桌面访问linux

    hostname -I 10.13.34.185 4900 light-wings http://blog.csdn.net/qq754438390/article/details/50042511