Angular js支持本地化

时间:2012-09-30 20:24:05

标签: angularjs localization

我试图在AngularJS中找到支持多种语言但没有成功的文档。是否支持本地化?

6 个答案:

答案 0 :(得分:72)

看一下angular-translate:https://github.com/angular-translate/angular-translate

所有DIY人员:

您可以找到角度为here

的本地化文件

这些文件可以帮助您使用内置角度过滤器:datecurrencynumber。太棒了......到目前为止。

现在你想使用你自己的文本,而你所需要的只是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/

提示:

  • 确保手动将新的本地化文件插入html,JS或Server。 (服务器是这里的最佳选择!)
  • 如果您包含其中一个angular-local files,则无需在应用模块中进行设置。 (你将自动获得$ locale - 看小提琴)
  • 在$ provide-value中添加一个id键 - 并将值设置为您在文件中使用的语言代码 - 这对于测试来说非常方便。

答案 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)

您也可以查看:

https://github.com/angular-ui/ui-utils/pull/173

性能优于目前可用于角度的任何其他i18n库。

答案 5 :(得分:0)

如果您正在寻找i18n支持,那么您可以参考以下项目,该项目具有完整的多语言功能并且易于实施。看一下github项目

angularjs-localizationservice