2

我看到每个语言环境文件中有一个复数猫

如何将它与 angularJs 一起使用?我需要语言环境“en”、“de”、“pl”的翻译

所以我可以用这个

{{cardAmount | sth?}}

并且根据 cardAmount 的值,它会变成这些的一个输出

en: 0 cards , 1 card , 2 cards , ...  
de: 0 Karten , 1 Karte , 2 Karten , ...
pl: 0 kart , 1 karta , 2 karty , ... , 5 kart  

我会把我的翻译放在哪里?以及将把复数猫和我的翻译粘合在一起的代码的位置

4

2 回答 2

0

从 1.3.3 版开始,$locale.pluralCat它是一个内部函数——我不会依赖它。我确信 Angular 将来会有更多内置的本地化功能。

同时,我建议使用angular-translate。我正在使用它(使用它的一个插件 - angular-translate-loader-url)以JSON表格形式(最初来自resx文件)动态加载我的翻译。

我正在以单数和复数形式翻译每个名词(还有其他形式,例如波兰语和俄语中的“few”......),并使用类似的逻辑pluralCat,在运行时决定我是否应该显示 Card_Singular 或 Card_Plural 的翻译, ETC...

于 2014-11-27T12:56:36.250 回答
0

使用 ng-pluralize 指令:https ://docs.angularjs.org/api/ng/directive/ngPluralize

如果您在模板中需要它。

该指令将为您调用 $locale.pluralCat(您当前的 $locale)。

否则,您可以随时注入 $locale 并直接调用 $locale.pluralCat()。

注意:$locale.pluralCat 在 1.2.x、1.3.x 和 1.4.x 中工作正常,单元测试:

function pluralService($locale) {
    this.getPlural = function(count) {
        return $locale.pluralCat(count);
    };
}

angular.module('plurals', [])
    .service('plural', ['$locale', pluralService])
    ;



beforeEach(module('plurals'));

describe('plural', function() {

    beforeEach(inject(function($injector) {
        this.plural = $injector.get('plural');
    }));

    it('should return correct plural category', function() {
        expect(this.plural.getPlural(1)).toBe('one');
        expect(this.plural.getPlural(5)).toBe('other');
    });

});
于 2015-09-04T12:04:53.573 回答