Angular js支持本地化

Che*_*rot 66 localization angularjs

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

Tho*_*sch 72

看一下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"});
Run Code Online (Sandbox Code Playgroud)

详情请见:http:
//jsfiddle.net/4tRBY/24/

对于实际使用,您应该添加一个过滤器:http: //jsfiddle.net/4tRBY/41/

提示:

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

  • 也许我没有正确地思考这个问题,但是你会如何使用你提供的例子来结合多种语言而不仅仅是英语和其他语言?如果之前检查语言,你会做某种事情:"$ provide.value("providedValue",{"? (2认同)

Ben*_*esh 17

您正在寻找的是$ 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'
    };
  }
}
Run Code Online (Sandbox Code Playgroud)

我不确定它是否是一个"标准"的说法......但它是一个开始.如果你有很多本地化要做的事情,我想我会创建一个服务来注入我的控制器...像这样的伪代码:

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];
       }
    }
});
Run Code Online (Sandbox Code Playgroud)


4va*_*ger 7

我已经创建了一个专门用于本地化目的的模块 - https://github.com/4vanger/angular-l10n 它支持消息本地化,参数替换,更改航班上的区域设置并提供一些方便的使用方法 - 过滤器,指令等.