我试图在AngularJS中找到支持多种语言的文档,但没有成功。是否支持本地化?
我试图在AngularJS中找到支持多种语言的文档,但没有成功。是否支持本地化?
Answers:
看看angular-translate:https://github.com/angular-translate/angular-translate
对于所有DIY人士:
您可以找到角度的本地化文件:此处
这些文件将帮助您使用内置的角度过滤器:日期,货币和数字。太棒了...到目前为止。
现在,您要使用自己的文本,那么,您所需要的就是angular.js依赖项注入的功能。创建一个新文件,例如:“ myTexts_en_us.js”,并使用$ provide.value,如下所示:
$provide.value("myTexts", {firstText : "This is my localized text"});
有关详细信息:http :
//jsfiddle.net/4tRBY/24/
对于实际使用,您应该添加一个过滤器:http : //jsfiddle.net/4tRBY/41/
提示:
您正在寻找的是$ locale。
实际上,还有一个示例也位于angularjs主页的一半以下。
他们的示例摘录:
function BeerCounter($scope, $locale) {
$scope.beers = [0, 1, 2, 3, 4, 5, 6];
if ($locale.id == 'en-us') {
$scope.beerForms = {
0: 'no beers',
one: '{} beer',
other: '{} beers'
};
} else {
$scope.beerForms = {
0: 'žiadne pivo',
one: '{} pivo',
few: '{} pivá',
other: '{} pív'
};
}
}
我不确定这是否是每个人说的“标准”……但这只是一个开始。如果您有很多本地化工作,我想我会创建一个服务来注入我的控制器中……类似下面的伪代码:
app.service('myLocalization', ['$locale', function($locale) {
var res = {
'help' : {
'en-us': 'help',
'es-mx': 'ayudame'
},
'beer' : {
'en-us': 'beer',
'es-mx': 'cerveza'
}
}
return {
getString: function(key) {
return res[key][$locale.id];
}
}
});
locale
服务即可,该服务是when
配置属性的哈希表,供您全局使用,或者甚至可以更改您自己的$ locale副本并使用它。
我已经创建了一个专门用于本地化的模块-https: //github.com/4vanger/angular-l10n 它支持消息本地化,参数替换,更改飞行中的语言环境并提供许多方便的使用方式-过滤器,指令等。
仅出于信息完整性的考虑-从AngularJS 1.4流中的某个位置开始-核心之外还会有另一个i18n实现。请看看https://github.com/angular/i18n