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

一、手动切换语言

1.在app.js文件中首先要加上一个参数:

angular.module(’passbox’,[‘ionic’,’pascalprecht.translate’])

2.需要引用js文件

<script src=”js/angular-translate.js”></script>

3.在edit.html文件中加入点击切换按钮:

<button class="button" ng-click="changeLanguage('en')" translate="Language_en"></button>
<button class="button" ng-click="changeLanguage('zh')" translate="Language_zh"></button>

4.在controllers.js文件edit的控制器中加入切换的函数:

.controllers(‘edit’,[‘$scope’ ,function($scope, $translate){
  $scope.changeLanguage = function (langkey) {
    $translate.use(langkey);
  };
}])

5.在app.js文件中先定义变量:

var translationsEN = {
  Language_en: 'english',
  Language_zh: 'chinese',
};
var translationZH = {
  Language_en: '英文',
  Language_zh: '中文',
};

之后再写函数方法:

angular.model(‘passbox’,[‘ionic’,’pascalprecht.translate’]);
.config(function($stateProvider,$translateProvider){
  $translateProvider.translations(‘en’,translationEN);
  $translateProvider.translations(‘zh’,translationZH);
  $translateProvider.preferredLanguage(‘en’);//首选语言
  $translateProvider.fallbackLanguage(‘en’);
}

二、自动获取手机语言为默认语言

1.在app.js文件中首先要加上一个参数:

angular.module(’passbox’,[‘ionic’,’pascalprecht.translate’]);

2.需要引用js文件

<script src=”js/angular-translate.js”></script>
<script src=”js/angular-translate-loader-static-files.min.js”></script>

3.在app.js文件中添加参数:

.config(function($stateProvider,$translateProvider){
$translateProvider.registerAvailabeLanguageKeys([‘en’,’zh’],{
  ‘en-*’:’en’,
  ‘zh-*’:’zh’
});
$translateProvider.determinePreferredLanguage();//这个方法是获取手机默认语言设置

4.翻译的变量可一根据上面那样来自己定义,也可以通过路由来改变(但是经过测试这种方法不适用在手机上,模拟机上都测试失败(增加第五条为手机可以识别的)。):

【1】可以将每个翻译文件放到/language/中,比如/languages/en.json  /language/zh.json

【2】然后通过useStaticFilesLoader来配置:

$translateProvider.useStaticFilesLoader({
  Prefix:’/languages/’,
  Suffix:’.json’
});

【3】需要引用js文件

<script src=”js/angular-translate-loader-static-files.min.js”></script>

【4】注意:

json文件格式要注意不可以有注释内容;

引用的js文件需要的是静态的文件angular-translate-loader-static-files.min.js。

5.这是经过测试研究后又得到的经验,上边路由方法其实是不可行的,可以将json文件改为js文件,在index.html文件中引用,接着在app文件中:

$translateProvider.translations('en',_translate_EN);
$translateProvider.translations('zh',_translate_ZH);
$translateProvider.translations('ja',_translate_JA);
$translateProvider.registerAvailableLanguageKeys(['en','zh','ja'],{
'en-*': 'en',
'zh-*': 'zh',
'jp-*': 'ja'
});
$translateProvider.determinePreferredLanguage();

当然这种方法也不需要再引入<script src=”js/angular-translate-loader-static-files.min.js”></script>这个文件了.

三、这个自动获取手机语言一加上去,瞬间感觉软件高大上了好多~

参考教程:通过插件来控制切换语言的:https://blog.nraboy.com/2014/08/internationalization-localization-ionicframework-angular-translate/

这个更详细一点:http://angular-translate.github.io/docs/#/guide/07_multi-language

Ionic + AngularJS angular-translate 国际化本地化解决方案的更多相关文章

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

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

  2. [Angularjs]angular ng-repeat与js特效加载先后导致的问题

    写在前面 最近在项目中遇到这样的一个前端的bug,在ng-repeat中绑定的图片,有一个晃动的特效,在手机端浏览的时候,图片有时候会正常展示,有时就展示不出来.当时猜测是因为angularjs与特效 ...

  3. Ionic + AngularJS

    Ionic Framework Ionic framework is the youngest in our top 5 stack, as the alpha was released in lat ...

  4. Ionic/Angularjs 知识点解析

    Ionic/Angularjs 知识点解析 angular-ui-router(状态跳转) state的定义:(在app.js的config下配置) $stateProvider .state('ap ...

  5. angular项目国际化配置(ngx-translate)

    原文 https://www.jianshu.com/p/7d1da3098625 大纲 1.认识ngx-translate 2.ngx-translate的配置步骤 3.ngx-translate的 ...

  6. JS魔法堂:不完全国际化&本地化手册 之 理論篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  7. JS魔法堂:不完全国际化&本地化手册 之 实战篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  8. JS魔法堂:不完全国际化&本地化手册 之 拓展篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  9. Cordova Ionic AngularJS

    实践分享:开始用Cordova+Ionic+AngularJS开发App http://www.cocoachina.com/webapp/20150707/12395.html

随机推荐

  1. CSS中元素水平居中和垂直居中的方法

    #CSS中水平居中和垂直居中的方法 一. 水平居中 1.行内元素(文本,图片等) 如果被设置元素为文本.图片等行内元素时,可以通过给父元素设置` text-align:center;` 来实现 2.定 ...

  2. ACM程序设计选修课——1057: Beautiful Garden(模拟+耐心调试)

    1057: Beautiful Garden Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 25  Solved: 12 [Submit][Statu ...

  3. HDU-1528/1962 Card Game Cheater

    两组牌中两张牌相比能赢的就连,后求最大匹配. #include <cmath> #include <cstdlib> #include <cstdio> #incl ...

  4. BZOJ3083 遥远的国度 【树剖】

    题目 zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度.当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcwwzdjn的去路,他需要zcwwzdjn完成任务 ...

  5. [BZOJ3261] 最大异或和 (异或前缀和,可持久化Trie)

    Description 给定一个非负整数序列{a},初始长度为N. 有M个操作,有以下两种操作类型: 1.Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N+1. 2.Q l r x:询问操作, ...

  6. C# 数据库写入Sql Bulk索引损坏异常问题System.InvalidOperationException: DataTable internal index is corrupted: '4'

    C# 数据库写入Sql Bulk索引损坏异常问题 System.InvalidOperationException: DataTable internal index is corrupted: '4 ...

  7. SpringBoot重点详解--使用Junit进行单元测试

    目录 添加依赖与配置 ApplicationContext测试 Environment测试 MockBean测试 Controller测试 情况一 情况二 方法一 方法二 本文将对在Springboo ...

  8. 标准C程序设计七---70

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  9. 转载 linux 僵尸进程,讲的很透彻

    僵尸进程的产生和避免,以及wait,waitpid的使用 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitp ...

  10. mysql数据库编码格式

    1.查看数据库编码格式 mysql> show variables like 'character_set_database'; 2.查看数据表的编码格式 mysql> show crea ...