zoukankan      html  css  js  c++  java
  • Ionic App之国际化(1)单个参数的处理

    最近的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" : 2,
       "values":[
        {
          "name" : "Huanhuan","value" : "1"
        },
        {
          "name" : "Alex","value" : "2"
        }
      ]
      }
    }
    en.json
    {
      "LOGIN_REGISTER": "登录/注册",
      "A" : "电动自行车",
      "B" : "电动三轮车",
      "MyLa":{
        "length" : 2,
        "values":[
        {
          "name" : "郭欢欢","value" : "1"
        },
        {
          "name" : "大海","value" : "2"
        }
      ]}
    }
    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(2);
        $ionicConfigProvider.views.swipeBackEnabled(false);
    
        $ionicConfigProvider.backButton.text("");
        $ionicConfigProvider.backButton.previousTitleText(false);
    
        $ionicConfigProvider.templates.maxPrefetch(5);
    /*
           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"

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

  • 相关阅读:
    20169204,EXP 3:Java object
    20169204,EXP 2:Java object
    20169204,exp1:Familiar with the Java development environment(Linux+IDEA)
    20169204 2016-2017-2 <Mobbile Platform Development and Practice> Learning Summary, Seventh Week
    第一次使用MarkDown写博客
    理解IOC
    .net与技术经理面谈时经常被提问到的相关技术点
    缓存二、HttpRuntime.Cache用法
    缓存一、Asp.net页面缓存
    一次提交涉及两个数据库处理
  • 原文地址:https://www.cnblogs.com/crazyguo/p/6085304.html
Copyright © 2011-2022 走看看