@@ -12,6 +12,7 @@ angular.module('gettext').constant('gettext', function (str) {
1212
1313angular . module ( 'gettext' ) . factory ( 'gettextCatalog' , [ "gettextPlurals" , "$http" , "$cacheFactory" , "$interpolate" , "$rootScope" , function ( gettextPlurals , $http , $cacheFactory , $interpolate , $rootScope ) {
1414 var catalog ;
15+ var noContext = '$$noContext' ;
1516
1617 var prefixDebug = function ( string ) {
1718 if ( catalog . debug && catalog . currentLanguage !== catalog . baseLanguage ) {
@@ -56,30 +57,29 @@ angular.module('gettext').factory('gettextCatalog', ["gettextPlurals", "$http",
5657
5758 for ( var key in strings ) {
5859 var val = strings [ key ] ;
59- if ( ! angular . isArray ( val ) ) {
60- this . strings [ language ] [ key ] = [ val ] ;
61- } else {
62- this . strings [ language ] [ key ] = val ;
60+ if ( angular . isString ( val ) || angular . isArray ( val ) ) {
61+ // No context, wrap it in $$noContext.
62+ var obj = { } ;
63+ obj [ noContext ] = val ;
64+ val = obj ;
6365 }
66+
67+ // Expand single strings for each context.
68+ for ( var context in val ) {
69+ var str = val [ context ] ;
70+ val [ context ] = angular . isArray ( str ) ? str : [ str ] ;
71+ }
72+ this . strings [ language ] [ key ] = val ;
6473 }
6574
6675 broadcastUpdated ( ) ;
6776 } ,
6877
6978 getStringForm : function ( string , n , context ) {
7079 var stringTable = this . strings [ this . currentLanguage ] || { } ;
71- var plurals = stringTable [ string ] || [ ] ;
72- var translation ;
73-
74- // Translation is an object with context bound translations for the string
75- if ( angular . isObject ( plurals [ 0 ] ) ) {
76- plurals = ( plurals [ 0 ] [ context ] || [ ] ) ;
77- if ( ! angular . isArray ( plurals ) ) {
78- throw new Error ( 'Context bound translations must be wrapped in a array' ) ;
79- }
80- }
81- translation = plurals [ n ] ;
82- return translation ;
80+ var contexts = stringTable [ string ] || { } ;
81+ var plurals = contexts [ context || noContext ] || [ ] ;
82+ return plurals [ n ] ;
8383 } ,
8484
8585 getString : function ( string , scope , context ) {
@@ -91,7 +91,10 @@ angular.module('gettext').factory('gettextCatalog', ["gettextPlurals", "$http",
9191 getPlural : function ( n , string , stringPlural , scope , context ) {
9292 var form = gettextPlurals ( this . currentLanguage , n ) ;
9393 string = this . getStringForm ( string , form , context ) || prefixDebug ( n === 1 ? string : stringPlural ) ;
94- string = scope ? $interpolate ( string ) ( scope ) : string ;
94+ if ( scope ) {
95+ scope . $count = n ;
96+ string = $interpolate ( string ) ( scope ) ;
97+ }
9598 return addTranslatedMarkers ( string ) ;
9699 } ,
97100
0 commit comments