当前位置: 首页 > news >正文

Angularjs之国际化

Angularjs国际化

公司需要开发一个供应商后台系统,从github上找了一套模板INSPINIA,前端UI用Bootstrap,框架用的Angularjs。使用Angular是因为Angularjs是一个完善的前端MVC框架,包含带有丰富指令的模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等所有功能。而且github上有很多成熟的基于angular的库,便于项目快速迭代。

项目中有外国供应商接入,所以有国际化需求,angular在国际化这块已经有成熟的插件支持Angular-translate,总结下项目中实现国际化的过程:

  • 语言

//初始化加载的模块
$translatePartialLoaderProvider.addPart('XXX');

//不同模块加载不同语言翻译数据
$translateProvider.useLoader('$translatePartialLoader', {
  urlTemplate: 'js/languages/{part}/{lang}.json'
});

//默认选择使用语言
$translateProvider.preferredLanguage('zh');
//存储上次选择语言
$translateProvider.useCookieStorage();

//当前view下调用对应的语言模块
$translatePartialLoader.addPart('orderlist');
$translate.refresh();

// 切换语言
if (store.get("language")) {
    $scope.language = store.get("language");
} else {
    $scope.language = "zh";
}
$scope.changeLanguage = function(langkey) {
   $translate.use(langkey);
   store.set('language', langkey);
};

//插值表达式使用变量
{{'ORDER_INFO' | translate}}
  • 时间

//localtime转化成utc 时间
$scope.toUTCDate = function(date) {
    var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours() + 8, date.getUTCMinutes(), date.getUTCSeconds());
    return _utc;
};

$scope.millisToUTCDate = function(millis) {
    return toUTCDate(new Date(millis));
};

{{millisToUTCDate(orders.createTime) | date : 'yyyy-MM-dd HH:mm:ss'}}

//如果使用angular 1.4.X版本
{{‘unix date’ | date : 'yyyy-MM-dd HH:mm:ss':'+0800'}}

下面是看一些比较好的Angularjs文章收集的栗子

ng-repeat

//当数组中有重复数据时,ng-repeat不起作用(Angular默认需要在数组中使用唯一索引)
$scope.arr2 = [1, 1, 3];
<ul>
    <li ng-repeat="item in arr2 track by $index">{{item}}</li>
</ul>

ng-if/ng-show


ng-if条件值为true时,才会动态创建一个dom节点;ng-show则是无论条件值为true或者false都创建这个dom节点,依靠css display属性来隐藏dom节点。

格式化函数

$scope.changeOrderState = function(orderState) {
        var stateMap = {
            'WAIT_STOCKOUT': '待发货',
            'STOCKOUTING': '发货中'
        };
        return stateMap[orderState];
    };
view:
{{changeOrderState(orders.state)}}

不会改变数据模型。

单向数据绑定

参考资料

Angular-translate
Angularjs简介
Angularjs中文指南
民工叔博客

相关文章:

  • php面试相关
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • java经典面试题!
  • Bootstrap模态框的简单示例
  • 解决Could not commit JPA transaction RollbackException: Transaction marked as rollbackOnly
  • Linux下使用mke2fsk格式化虚拟磁盘分区的方法
  • ios KVOKVC
  • 开源入侵检测系统OSSEC搭建之二:客户端安装
  • Cisco设备型号编码详解
  • Android 通知栏自定义视图并且设置事件的开发
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • ubuntu 访问window
  • Java垃圾收集调优实战
  • jqeury轮播图插件 简单教程(适合新手)
  • android 文件的权限
  • 【译】理解JavaScript:new 关键字
  • ES6简单总结(搭配简单的讲解和小案例)
  • Javascript 原型链
  • JavaScript新鲜事·第5期
  • JS数组方法汇总
  • k个最大的数及变种小结
  • mysql中InnoDB引擎中页的概念
  • overflow: hidden IE7无效
  • Python连接Oracle
  • Python十分钟制作属于你自己的个性logo
  • Spring Cloud中负载均衡器概览
  • vue-loader 源码解析系列之 selector
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Vue组件定义
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 聊聊hikari连接池的leakDetectionThreshold
  • 设计模式走一遍---观察者模式
  • 数组大概知多少
  • 阿里云服务器如何修改远程端口?
  • # Java NIO(一)FileChannel
  • #HarmonyOS:基础语法
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)STL算法之遍历容器
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (poj1.3.2)1791(构造法模拟)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (黑马C++)L06 重载与继承
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十六)串口UART
  • (四)图像的%2线性拉伸
  • (算法)Game
  • (五)关系数据库标准语言SQL
  • (一)基于IDEA的JAVA基础10
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)