[Angularjs]国际化

写在前面

在项目中,有用到国际化,跟着就了解了下使用angularjs实现的国际化,这里做一下记录。

系列文章

[Angularjs]ng-select和ng-options

[Angularjs]ng-show和ng-hide

[Angularjs]视图和路由(一)

[Angularjs]视图和路由(二)

[Angularjs]视图和路由(三)

[Angularjs]视图和路由(四)

[Angularjs]ng-class,ng-class-even,ng-class-odd

[Angularjs]单页应用之分页

一个例子

这里需要引入angular-translate.min.js,可以从这里进行下载:http://angular-translate.github.io/

这里通过在路由上面添加一个language的参数,通过$routeParams获取该参数,决定是使用中文还是英文。

单页页面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="app">
<head>
    <title>路由</title>
    <script src="JS/angular.min.js"></script>
    <script src="JS/angular-route.min.js"></script>
    <script src="JS/angular-translate.min.js"></script>
    <link href="Css/style.css" rel="stylesheet" />
    <script>
        var app = angular.module('app', ['ngRoute', 'pascalprecht.translate']);
        app.config(['$routeProvider', function ($routeProvider) {
            //这里指定路由
            $routeProvider
                .when('/Login/:lang', {
                    templateUrl: './views/Login.html',
                    controller: 'LoginController'
                })
        }]);
        app.config(function ($translateProvider) {
            $translateProvider.translations('en', {
                TITLE: 'Login',
                UserName: 'UserName',
                Pwd: 'Password',
                BUTTON_Login: 'Login',
                BUTTON_Cancel: 'Cancel',
                PleaseMobile: 'Please input your mobile No.',
                Pwd_tips: 'Please input your password'
            });
            $translateProvider.translations('cn', {
                TITLE: '登录',
                UserName: '用户名',
                Pwd: '密码',
                BUTTON_Login: '登录',
                BUTTON_Cancel: '取消',
                PleaseMobile: '请输入注册手机号',
                Pwd_tips: '请输入密码'
            });
            //默认语言
            $translateProvider.preferredLanguage('cn');
        });

        //控制器
        app.controller('LoginController', function ($scope, $translate, $routeParams) {
            console.log($routeParams.lang);//通过$routeParams获取路由参数,也就是语言
            var language = $routeParams.lang;
            //转换语言版本
            $translate.use(language);
        });
    </script>

</head>
<body>
    <a href="#/Login/en">登录</a> <!--视图 占位-->
    <div ng-view></div>
</body>
</html>

View:Login.html

<form id="login-form" class="login-form">
    <div class="cartoon">
        <div id="handLeft" class="hand-left">
            <div class="hand"></div>
        </div>
        <div id="handRight" class="hand-right">
            <div class="hand"></div>
        </div>
    </div>
    <div class="it-text-list it-box">
        <div class="it-label">{{"UserName"| translate}}</div>
        <div class="it-input">
            <input type="text" placeholder='{{"PleaseMobile"| translate}}' name="phoneNum" id="phoneNum">
        </div>
    </div>
    <div class="it-text-list it-text-bottom it-box">
        <div class="it-label">{{"Pwd"| translate}}</div>
        <div class="it-input">
            <input type="password" placeholder='{{"Pwd_tips"| translate}}' name="password" id="password">
        </div>
    </div>
</form>
<div class="cn-buttons">
    <div class="button bt-red">{{"BUTTON_Login"| translate}}</div>
</div>

<div class="cn-buttons">
    <div class="button bt-white">{{"BUTTON_Cancel"| translate}}</div>
</div>

测试

英语:http://localhost:18174/1_4_route.html#/Login/en

中文:http://localhost:18174/1_4_route.html#/Login/cn

 

总结

在使用国际化的时候,查了一些资料,完整的demo还是挺少的,摸索,加实践,就有了这篇文章。

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。http://www.cnblogs.com/wolf-sun/p/4732942.html
时间: 2024-11-02 00:07:53

[Angularjs]国际化的相关文章

AngularJS 国际化——Angular-translate

i18n与l10n i18n是Internationalization得缩写,取第一个字母和最后一个字母,以及中间省略的字母数目,即i18n,类似的l10n是Localization得意思. 通常i18n是国际化的意思,就是在不改变源码的情况下,通过某些简单的配置就能适应不同的语言环境. l10n,则是本地化的意思,是针对某一些语言进行定制化. 一般一个成熟的产品都要考虑国际化的方案,这样未来的市场容易扩展,代码也容易维护,因此大多也会考虑国际化的方案. Angular-translate an

AngularJs 国际化(I18n/L10n)详解_AngularJS

一.I18n and L10n in AngularJS 1. 什么是I18n和L10n? 国际化(Internationalization),简称I18n,是让产品开发在一个他们可以简单地对产品进行语言.文化的本地化的方法的规范.本地化(Localization),简称L10n,一个使得应用.文本有适应特殊的文化或者语言市场的能力的规范.对于应用开发者,使一个程序国际化,意味着需要从程序中抽取所有字符串和其他区域较为特别的地方(例如日期和货币格式).使一个程序本地化,意味着需要提供根据I18n

angularjs表达式-Expression

紧接上节谈到再谈angularjs DI(Dependency Injection),在这里介绍关于angularjs的表达式expression.expression指的 是javascript的一小片段代码,通常用于绑定(binding)例如:{{ expression }}.在angularjs中是通过$parse service解析 . $parse用法: $parse(expression); 参数:javascript代码片段. 返回值:{function(context, loca

JS不完全国际化&amp;本地化手册 之 理论篇_javascript技巧

前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已.趁着这个机会好好学习整理一下,为后面的技术选型做准备.  本篇将阐述国际化和本地化的概念,以及其中一个很重要的概念--Language tag(也叫Language code 或 Culture). 何为国际化?  国际化我认为就是应用支持多语言和文化习俗(数字.货币.日期和字符比较算法等),而本地化则是应用

[Angularjs]ng-repeat中使用ng-model遇到的问题

写在前面 在ng-reapet中如何为ng-model双向绑定呢?在项目中确实遇到这样的问题,绑定了,但是在controller中获取不到它的值,确实挺奇怪的. 系列文章 [Angularjs]ng-select和ng-options [Angularjs]ng-show和ng-hide [Angularjs]视图和路由(一) [Angularjs]视图和路由(二) [Angularjs]视图和路由(三) [Angularjs]视图和路由(四) [Angularjs]ng-class,ng-cl

[Angularjs]过滤器

写在前面 在实际项目中,经常会遇到这样的事情,返回的数据的格式,并不是我们希望的样子,这时候,你就需要对数据进行格式化了,还好,angularjs提供这样的过滤器,更方便我们的操作. 系列文章 [Angularjs]ng-select和ng-options [Angularjs]ng-show和ng-hide [Angularjs]视图和路由(一) [Angularjs]视图和路由(二) [Angularjs]视图和路由(三) [Angularjs]视图和路由(四) [Angularjs]ng-

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

写在前面 最近在项目中遇到这样的一个前端的bug,在ng-repeat中绑定的图片,有一个晃动的特效,在手机端浏览的时候,图片有时候会正常展示,有时就展示不出来.当时猜测是因为angularjs与特效的那些代码加载的先后顺序造成的.有了这样的猜测,就有查找解决方案的方向了. 系列文章 [Angularjs]ng-select和ng-options [Angularjs]ng-show和ng-hide [Angularjs]视图和路由(一) [Angularjs]视图和路由(二) [Angular

浅析如何利用angular结合translate为项目实现国际化_AngularJS

前言 利用H5项目第一版本已经上线,话说有了第一期就有了第二期,这不要为第二期做准备了,老大发话第一件事就要利用Angular JS实现项目的国际化以及后续要借助这个框架来实现其他功能,好吧我表示没怎么接触过,这一个礼拜自己也对Angular基本的用法已经有了初步的了解以及熟悉,于是乎就有了这篇文章的产生.其实没我什么事,我也是主动请缨说交给我,因为年底了嘛,也没什么事,不急不忙的,一天也乐得清闲,还不给自己找点事做,而且还能在做的过程中能学到东西,何乐而不为呢!Angular已盛行一时,但请恕

使用decj简化Web前端开发(三) 声明式国际化

引言 本期将介绍decj的国际化(I18N)支持,包括声明式多语言支持和声明式CSS文件动态按需加载. 声明式CSS文件按需加载 使用decj框架,开发人员只需要在模块定义中声明模块所需的各个CSS文件,即可实现这些CSS在该模块被加载时而被动态加载,而无需事先在页面中添加link标签来引用各个CSS文件. 模块定义的css属性用于声明模块所需的各个CSS文件.该属性值是一个字符串数组,其各个元素为所要加载的CSS文件的URL.如果只需要加载一个CSS文件,css属性的值也可以是一个字符串.如清