angularJs国际化,多语言切换
做的项目需要国际化,能够切换不通的语言,在做之前先根据网上的方案写了两个例子,
使用angular-translate插件实现:
具体代码:
<!DOCTYPE html>
<html lang="en" ng-app="myapp" ng-controller="MainCtrl as mainctrl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="angular_v1.7.2/angular.js"></script>
<script src="bower-angular-translate-2.18.1/angular-translate.js"></script>
</head>
<body>
<!--<div ng-app="myapp">-->
<!--<div ng-controller="MainCtrl as mainctrl">-->
<h1>test1</h1>
{{defaultLanguage}}
<select ng-model="defaultLanguage" ng-click="changeLanguage()" ng-options="x.english as x.lang for x in language">
</select>
<h1>{{ 'edit' | translate }}</h1>
<h1>{{ 'delete' | translate }}</h1>
<!--<span translate="delete"></span>-->
<!--</div>-->
<!--</div>-->
<script>
var myapp = angular.module("myapp", ['pascalprecht.translate']);
myapp.controller("MainCtrl", function ($scope, $translate) {
$scope.lang = navigator.language || navigator.userLanguage;
console.log( $scope.lang);//通过浏览器检测语言
$scope.defaultLanguage = "";
$scope.language = [
{id: 1, lang: "English", english: "english"},
{id: 2, lang: "中文简体", english: "simplifiedChinese"},
{id: 3, lang: "中文繁體", english: "traditionalChinese"},
{id: 4, lang: "Việt", english: "vietnamese"},
{id: 5, lang: "العربية", english: "arabic"},
];
$scope.changeLanguage = function () {
localStorage.setItem("language", $scope.defaultLanguage);
$translate.use($scope.defaultLanguage)
}
$scope.getDefaultLanguage = function () {
if (localStorage.getItem("language") === null) {
$scope.defaultLanguage = "english";
} else {
$scope.defaultLanguage = localStorage.getItem("language")
}
$scope.changeLanguage();
};
$scope.getDefaultLanguage();
});
myapp.config(['$translateProvider', function ($translateProvider) {
$translateProvider.translations('English', {
'delete': 'delete',
'edit': 'edit'
});
$translateProvider.translations('simplifiedChinese', {
'delete': '删除',
'edit': '编辑',
});
$translateProvider.translations('traditionalChinese', {
'delete': '繁体删除',
'edit': '繁体编辑'
});
$translateProvider.translations('vietnamese', {
'delete': '越南语删除',
'edit': '越南语编辑'
});
$translateProvider.translations('arabic', {
'delete': '阿拉伯语删除',
'edit': '阿拉伯语编辑'
});
$translateProvider.preferredLanguage('simplifiedChinese');
}]);
</script>
</body>
</html>
这样做已经可以实现多语言切换了,但是要在js中配置多语言数据,不太合适,再利用http://angular-translate.github.io/
<!DOCTYPE html>
<html lang="en" ng-app="myapp" ng-controller="MainCtrl as mainctrl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="/angular_v1.7.2/angular.js"></script>
<script src="/bower-angular-translate-2.18.1/angular-translate.js"></script>
<script src="/bower-angular-translate-2.18.1/angular-translate-loader-static-files.js"></script>
</head>
<body>
{{defaultLanguage}}
<select ng-model="defaultLanguage" ng-click="changeLanguage()" ng-options="x.english as x.lang for x in language">
</select>
<h1>{{ 'edit' | translate }}</h1>
<h1>{{ 'delete' | translate }}</h1>
<span translate="delete"></span>
<script>
var myapp = angular.module("myapp", ['pascalprecht.translate']);
myapp.controller("MainCtrl", function ($scope, $translate) {
var lang = navigator.language||navigator.userLanguage;
console.log(lang);//通过浏览器检测语言
if(localStorage.getItem("language")){
$scope.defaultLanguage=localStorage.getItem("language")
}else {
$scope.defaultLanguage = "english";
}
$scope.language =[
{id:1,lang:"English",english:"english"},
{id:2,lang:"中文简体",english:"simplifiedChinese"},
{id:3,lang:"中文繁體",english:"traditionalChinese"},
{id:4,lang:"Việt",english:"vietnamese"},
{id:5,lang:"العربية",english:"arabic"},
]
$scope.changeLanguage = function () {
localStorage.setItem("language", $scope.defaultLanguage);
$translate.use($scope.defaultLanguage)
console.log($scope.defaultLanguage);
}
$scope.getDefaultLanguage = function () {
if (localStorage.getItem("language") === null) {
$scope.defaultLanguage = "english";
} else {
$scope.defaultLanguage = localStorage.getItem("language")
}
$scope.changeLanguage();
};
$scope.getDefaultLanguage();
})
myapp.config(['$translateProvider', function ($translateProvider) {
$translateProvider.useStaticFilesLoader({
files: [{
prefix: '/langConfig/',//语言包路径
suffix: '.json' //语言包后缀名
}]
});
$translateProvider.fallbackLanguage('english');//默认加载语言包
}]);
</script>
<!--<script src="translate.js"></script>-->
</body>
</html>


相关链接:
https://cdnjs.com/libraries/angular-translate-loader-static-files
http://angular-translate.github.io/
版权声明:
作者:东明兄
链接:https://blog.crazyming.com/note/574/
来源:CrazyMing
文章版权归作者所有,未经允许请勿转载。
Aly Chiman