Angular js支持本地化
我试图在AngularJS中find支持多种语言的文档,但没有成功。 是否支持本地化?
看看angular-translate: https : //github.com/angular-translate/angular-translate
对于所有的DIY人:
你可以findangular度的本地化文件: 在这里
这些文件将帮助您使用内置的angular度filter: date , 货币和数量 。 惊人的…迄今。
现在你想使用自己的文本,比你所需要的是angular.jsdependency injection的力量。 创build一个新的文件,如:“myTexts_en_us.js”,并使用$ provide.value像这样:
$provide.value("myTexts", {firstText : "This is my localized text"});
详情请见:
http://jsfiddle.net/4tRBY/24/
对于真实世界的使用,你应该添加一个filter : http : //jsfiddle.net/4tRBY/41/
提示:
- 确保手动插入新的本地化文件到您的html,JS或服务器。 (服务器是这里最好的select!)
- 如果您包含一个angular度本地文件 ,则不需要在您的应用程序模块中进行设置。 (你将自动获得$ locale – 看小提琴)
- 在你的$ provide-value中添加一个id key,并将其值设置为你在文件中使用的语言代码 – 这将会派上用场。
你正在寻找的是$ 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' }; } }
我不确定这是否是一个“标准”,但这是一个开始。 如果你有很多本地化的工作,我想我会创build一个服务注入我的控制器…像这样的psuedo代码:
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]; } } });
我创build了一个专门用于本地化的模块 – https://github.com/4vanger/angular-l10n它支持消息本地化,参数replace,改变飞行场所,并提供了一些方便的方法来使用它; – filter,指令等。
只是为了完整的信息 – 从AngularJS 1.4stream的某个地方开始 – 将会有另外一个国际化的实施。 请看https://github.com/angular/i18n
如果您在寻找i18n支持,那么您可以参考以下具有完整多语言能力且易于实施的项目。 看看github项目
angularjs-localizationservice