[Whole Web] [AngularJS] Localize your AngularJS Application with angular-localization

It is best to start your application's localization efforts early in development, even if you only support one language initially. Libraries like angular-localization help make the process of supporting additional languages much easier.

 

Bower.json:

{
  "name": "localzation",
  "version": "0.0.0",
  "authors": [
    "Zhentian Wan <answer881215@gmail.com>"
  ],
  "license": "MIT",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "angular-localization": "~1.2.0"
  },
  "devDependencies": {
    "lodash": "~3.6.0"
  }
}

 

Install:

bower install angular-locatization --save-dev

 

Index.html:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css"/>
</head>
<body ng-app="app" ng-controller="AppCtrl as app">
<div ng-controller="AnimalCtrl as vm">
    <div class="row">
        <form class="form-horizontal" role="form">
            <div class="form-group">
                <label for="lang_selector" class="col-xs-3 control-label">Select language: </label>
                <div  class="col-xs-2" >
                    <select id="lang_selector"
                            class="form-control"
                            ng-model="vm.language"
                            ng-options="lang.label for lang in vm.supportedLanguages"
                            ng-change="vm.updateLocale(vm.language)">
                    </select>
                </div>
            </div>
        </form>


    </div>
    <div class="row"
            ng-repeat="animal in vm.animals">
         <div class="col-xs-12"><h2 i18n="{{animal.code}}"></h2></div>
    </div>
</div>
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-sanitize/angular-sanitize.min.js"></script>
<script src="bower_components/angular-cookies/angular-cookies.js"></script>
<script src="bower_components/angular-localization/angular-localization.min.js"></script>
<script src="bower_components/lodash/lodash.min.js"></script>
<script src="app.js"></script>
</body>
</html>

 

app.js:

function AnimalController(locale, Languagefactroy) {
    var ctrl = this;
    ctrl.supportedLanguages = [];
    ctrl.language = {};

    Languagefactroy.getSupportedLanguages().then(function(languages){
        ctrl.supportedLanguages = languages;
        ctrl.language = _.first( ctrl.supportedLanguages);
    });

    ctrl.animals = [
        {name: 'Cat', code: 'common.cat'},
        {name: 'Monkey', code: 'common.monkey'}
    ];
    
    ctrl.updateLocale = function(lang) {
        locale.setLocale(lang.value);
    }
}

function AppCtrl($scope, localeEvents) {
    var ctrl = this;

    $scope.$on(localeEvents.localeChanges, function(event, data) {
        console.log(event);
        console.log('new locale chosen: ' + data);
    });
}

function Languagefactroy($http) {
    var lang = {},
        languages = [];


    lang.getSupportedLanguages = function() {
        return $http.get('./languages/languages.json').then(setAvailableLangs);
    };

    lang.getAvailableLangs = function() {
        return languages;
    };

    function setAvailableLangs(langs) {
        languages = extract(langs)
        return languages;
    }

    function extract(res) {

        return res.data;
    }

    return lang;
}

angular.module('app', ['ngSanitize',
    'ngLocalize',
    'ngLocalize.Config',
    'ngLocalize.Events',
    'ngLocalize.InstalledLanguages'])
    .value('localeConf', {
        basePath: 'languages',
        defaultLocale: 'en-US',
        sharedDictionary: 'common',
        fileExtension: '.lang.json',
        persistSelection: true,
        cookieName: 'COOKIE_LOCALE_LANG',
        observableAttrs: new RegExp('^data-(?!ng-|i18n)')
    })
    .value('localeSupported', [
        'en-US',
        'fi',
        'fr'
    ])
    .controller('AnimalCtrl', AnimalController)
    .controller('AppCtrl', AppCtrl)
    .factory('Languagefactroy', Languagefactroy)
;

 

languages.json:

[
  {"label": "English", "value": "en-US"},
  {"label": "Suomi", "value": "fi"},
  {"label": "French", "value": "fr"}
]

 

en-US/common.lang.json:

{
  "cat": "Cat",
  "monkey": "Monkey"
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值