我试图在AngularJS中找到支持多种语言但没有成功的文档。是否支持本地化?
答案 0 :(得分:72)
看一下angular-translate:https://github.com/angular-translate/angular-translate
所有DIY人员:
您可以找到角度为here
的本地化文件这些文件可以帮助您使用内置角度过滤器:date,currency和number。太棒了......到目前为止。
现在你想使用你自己的文本,而你所需要的只是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/
提示:
答案 1 :(得分:17)
您要找的是$locale。
实际上还有一个关于half way down the angularjs homepage的例子。
他们示例的摘录:
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];
}
}
});
答案 2 :(得分:7)
我专门为本地化目的创建了一个模块 - https://github.com/4vanger/angular-l10n 它支持消息本地化,参数替换,更改航班上的区域设置,并提供了一些使用它的便捷方法 - 过滤器,指令等。
答案 3 :(得分:2)
仅仅为了完整的信息 - 从AngularJS 1.4流中的某个地方开始 - 将会有另一个i18n实现在核心之外。请查看https://github.com/angular/i18n
答案 4 :(得分:0)
答案 5 :(得分:0)
如果您正在寻找i18n支持,那么您可以参考以下项目,该项目具有完整的多语言功能并且易于实施。看一下github项目