@@ -10,30 +10,8 @@ angular.module('gettext').constant('gettext', function (str) {
10
10
return str ;
11
11
} ) ;
12
12
13
- angular . module ( 'gettext' ) . factory ( 'gettextCatalog' , [ "gettextPlurals" , "$http" , "$cacheFactory" , "$interpolate" , "$rootScope" , function ( gettextPlurals , $http , $cacheFactory , $interpolate , $rootScope ) {
14
- var catalog ;
15
-
16
- var prefixDebug = function ( string ) {
17
- if ( catalog . debug && catalog . currentLanguage !== catalog . baseLanguage ) {
18
- return catalog . debugPrefix + string ;
19
- } else {
20
- return string ;
21
- }
22
- } ;
23
-
24
- var addTranslatedMarkers = function ( string ) {
25
- if ( catalog . showTranslatedMarkers ) {
26
- return catalog . translatedMarkerPrefix + string + catalog . translatedMarkerSuffix ;
27
- } else {
28
- return string ;
29
- }
30
- } ;
31
-
32
- function broadcastUpdated ( ) {
33
- $rootScope . $broadcast ( 'gettextLanguageChanged' ) ;
34
- }
35
-
36
- catalog = {
13
+ angular . module ( 'gettext' ) . provider ( 'gettextCatalog' , [ "gettextPlurals" , function ( gettextPlurals ) {
14
+ var provider = {
37
15
debug : false ,
38
16
debugPrefix : '[MISSING]: ' ,
39
17
showTranslatedMarkers : false ,
@@ -42,11 +20,9 @@ angular.module('gettext').factory('gettextCatalog', ["gettextPlurals", "$http",
42
20
strings : { } ,
43
21
baseLanguage : 'en' ,
44
22
currentLanguage : 'en' ,
45
- cache : $cacheFactory ( 'strings' ) ,
46
23
47
24
setCurrentLanguage : function ( lang ) {
48
25
this . currentLanguage = lang ;
49
- broadcastUpdated ( ) ;
50
26
} ,
51
27
52
28
setStrings : function ( language , strings ) {
@@ -62,43 +38,82 @@ angular.module('gettext').factory('gettextCatalog', ["gettextPlurals", "$http",
62
38
this . strings [ language ] [ key ] = val ;
63
39
}
64
40
}
65
-
66
- broadcastUpdated ( ) ;
67
41
} ,
68
42
69
43
getStringForm : function ( string , n ) {
70
44
var stringTable = this . strings [ this . currentLanguage ] || { } ;
71
45
var plurals = stringTable [ string ] || [ ] ;
72
46
return plurals [ n ] ;
73
- } ,
47
+ }
48
+ } ;
74
49
75
- getString : function ( string , context ) {
76
- string = this . getStringForm ( string , 0 ) || prefixDebug ( string ) ;
77
- string = context ? $interpolate ( string ) ( context ) : string ;
78
- return addTranslatedMarkers ( string ) ;
79
- } ,
50
+ angular . extend ( this , provider ) ;
80
51
81
- getPlural : function ( n , string , stringPlural , context ) {
82
- var form = gettextPlurals ( this . currentLanguage , n ) ;
83
- string = this . getStringForm ( string , form ) || prefixDebug ( n === 1 ? string : stringPlural ) ;
84
- string = context ? $interpolate ( string ) ( context ) : string ;
85
- return addTranslatedMarkers ( string ) ;
86
- } ,
52
+ var self = this ;
53
+ this . $get = /* @ngInject */ [ "$http" , "$interpolate" , "$cacheFactory" , "$rootScope" , function ( $http , $interpolate , $cacheFactory , $rootScope ) {
54
+ function Catalog ( options ) {
55
+ angular . extend ( this , options ) ;
56
+ var self = this ;
57
+
58
+ var prefixDebug = function ( string ) {
59
+ if ( self . debug && self . currentLanguage !== self . baseLanguage ) {
60
+ return self . debugPrefix + string ;
61
+ } else {
62
+ return string ;
63
+ }
64
+ } ;
87
65
88
- loadRemote : function ( url ) {
89
- return $http ( {
90
- method : 'GET' ,
91
- url : url ,
92
- cache : catalog . cache
93
- } ) . success ( function ( data ) {
94
- for ( var lang in data ) {
95
- catalog . setStrings ( lang , data [ lang ] ) ;
66
+ var addTranslatedMarkers = function ( string ) {
67
+ if ( self . showTranslatedMarkers ) {
68
+ return self . translatedMarkerPrefix + string + self . translatedMarkerSuffix ;
69
+ } else {
70
+ return string ;
96
71
}
97
- } ) ;
72
+ } ;
73
+
74
+ function broadcastUpdated ( ) {
75
+ $rootScope . $broadcast ( 'gettextLanguageChanged' ) ;
76
+ }
77
+
78
+ this . setCurrentLanguage = function ( ) {
79
+ options . setCurrentLanguage . apply ( this , arguments ) ;
80
+ broadcastUpdated ( ) ;
81
+ } ;
82
+
83
+ this . setStrings = function ( ) {
84
+ options . setStrings . apply ( this , arguments ) ;
85
+ broadcastUpdated ( ) ;
86
+ } ;
87
+
88
+ this . getString = function ( string , context ) {
89
+ string = this . getStringForm ( string , 0 ) || prefixDebug ( string ) ;
90
+ string = context ? $interpolate ( string ) ( context ) : string ;
91
+ return addTranslatedMarkers ( string ) ;
92
+ } ;
93
+
94
+ this . getPlural = function ( n , string , stringPlural , context ) {
95
+ var form = gettextPlurals ( this . currentLanguage , n ) ;
96
+ string = this . getStringForm ( string , form ) || prefixDebug ( n === 1 ? string : stringPlural ) ;
97
+ string = context ? $interpolate ( string ) ( context ) : string ;
98
+ return addTranslatedMarkers ( string ) ;
99
+ } ;
100
+
101
+ this . loadRemote = function ( url ) {
102
+ return $http ( {
103
+ method : 'GET' ,
104
+ url : url ,
105
+ cache : self . cache
106
+ } ) . success ( function ( data ) {
107
+ for ( var lang in data ) {
108
+ self . setStrings ( lang , data [ lang ] ) ;
109
+ }
110
+ } ) ;
111
+ } ;
98
112
}
99
- } ;
100
113
101
- return catalog ;
114
+ self . cache = self . cache || $cacheFactory ( 'strings' ) ;
115
+ return new Catalog ( self ) ;
116
+ } ] ;
102
117
} ] ) ;
103
118
104
119
angular . module ( 'gettext' ) . directive ( 'translate' , [ "gettextCatalog" , "$parse" , "$animate" , "$compile" , function ( gettextCatalog , $parse , $animate , $compile ) {
@@ -179,116 +194,117 @@ angular.module('gettext').filter('translate', ["gettextCatalog", function (gette
179
194
} ] ) ;
180
195
181
196
// Do not edit this file, it is autogenerated using genplurals.py!
182
- angular . module ( "gettext" ) . factory ( "gettextPlurals" , function ( ) {
183
- return function ( langCode , n ) {
184
- switch ( langCode ) {
185
- case "ay" : // Aymará
186
- case "bo" : // Tibetan
187
- case "cgg" : // Chiga
188
- case "dz" : // Dzongkha
189
- case "fa" : // Persian
190
- case "id" : // Indonesian
191
- case "ja" : // Japanese
192
- case "jbo" : // Lojban
193
- case "ka" : // Georgian
194
- case "kk" : // Kazakh
195
- case "km" : // Khmer
196
- case "ko" : // Korean
197
- case "ky" : // Kyrgyz
198
- case "lo" : // Lao
199
- case "ms" : // Malay
200
- case "my" : // Burmese
201
- case "sah" : // Yakut
202
- case "su" : // Sundanese
203
- case "th" : // Thai
204
- case "tt" : // Tatar
205
- case "ug" : // Uyghur
206
- case "vi" : // Vietnamese
207
- case "wo" : // Wolof
208
- case "zh" : // Chinese
209
- // 1 form
210
- return 0 ;
211
- case "is" : // Icelandic
212
- // 2 forms
213
- return ( n % 10 != 1 || n % 100 == 11 ) ? 1 : 0 ;
214
- case "jv" : // Javanese
215
- // 2 forms
216
- return n != 0 ? 1 : 0 ;
217
- case "mk" : // Macedonian
218
- // 2 forms
219
- return n == 1 || n % 10 == 1 ? 0 : 1 ;
220
- case "ach" : // Acholi
221
- case "ak" : // Akan
222
- case "am" : // Amharic
223
- case "arn" : // Mapudungun
224
- case "br" : // Breton
225
- case "fil" : // Filipino
226
- case "fr" : // French
227
- case "gun" : // Gun
228
- case "ln" : // Lingala
229
- case "mfe" : // Mauritian Creole
230
- case "mg" : // Malagasy
231
- case "mi" : // Maori
232
- case "oc" : // Occitan
233
- case "pt_BR" : // Brazilian Portuguese
234
- case "tg" : // Tajik
235
- case "ti" : // Tigrinya
236
- case "tr" : // Turkish
237
- case "uz" : // Uzbek
238
- case "wa" : // Walloon
239
- case "zh" : // Chinese
240
- // 2 forms
241
- return n > 1 ? 1 : 0 ;
242
- case "lv" : // Latvian
243
- // 3 forms
244
- return ( n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2 ) ;
245
- case "lt" : // Lithuanian
246
- // 3 forms
247
- return ( n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 ) ;
248
- case "be" : // Belarusian
249
- case "bs" : // Bosnian
250
- case "hr" : // Croatian
251
- case "ru" : // Russian
252
- case "sr" : // Serbian
253
- case "uk" : // Ukrainian
254
- // 3 forms
255
- return ( n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 ) ;
256
- case "mnk" : // Mandinka
257
- // 3 forms
258
- return ( n == 0 ? 0 : n == 1 ? 1 : 2 ) ;
259
- case "ro" : // Romanian
260
- // 3 forms
261
- return ( n == 1 ? 0 : ( n == 0 || ( n % 100 > 0 && n % 100 < 20 ) ) ? 1 : 2 ) ;
262
- case "pl" : // Polish
263
- // 3 forms
264
- return ( n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 ) ;
265
- case "cs" : // Czech
266
- case "sk" : // Slovak
267
- // 3 forms
268
- return ( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2 ;
269
- case "sl" : // Slovenian
270
- // 4 forms
271
- return ( n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0 ) ;
272
- case "mt" : // Maltese
273
- // 4 forms
274
- return ( n == 1 ? 0 : n == 0 || ( n % 100 > 1 && n % 100 < 11 ) ? 1 : ( n % 100 > 10 && n % 100 < 20 ) ? 2 : 3 ) ;
275
- case "gd" : // Scottish Gaelic
276
- // 4 forms
277
- return ( n == 1 || n == 11 ) ? 0 : ( n == 2 || n == 12 ) ? 1 : ( n > 2 && n < 20 ) ? 2 : 3 ;
278
- case "cy" : // Welsh
279
- // 4 forms
280
- return ( n == 1 ) ? 0 : ( n == 2 ) ? 1 : ( n != 8 && n != 11 ) ? 2 : 3 ;
281
- case "kw" : // Cornish
282
- // 4 forms
283
- return ( n == 1 ) ? 0 : ( n == 2 ) ? 1 : ( n == 3 ) ? 2 : 3 ;
284
- case "ga" : // Irish
285
- // 5 forms
286
- return n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4 ;
287
- case "ar" : // Arabic
288
- // 6 forms
289
- return ( n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5 ) ;
290
- default : // Everything else
291
- return n != 1 ? 1 : 0 ;
292
- }
197
+ angular . module ( "gettext" ) . constant ( "gettextPlurals" , function ( langCode , n ) {
198
+ switch ( langCode ) {
199
+ case "ay" : // Aymará
200
+ case "bo" : // Tibetan
201
+ case "cgg" : // Chiga
202
+ case "dz" : // Dzongkha
203
+ case "fa" : // Persian
204
+ case "id" : // Indonesian
205
+ case "ja" : // Japanese
206
+ case "jbo" : // Lojban
207
+ case "ka" : // Georgian
208
+ case "kk" : // Kazakh
209
+ case "km" : // Khmer
210
+ case "ko" : // Korean
211
+ case "ky" : // Kyrgyz
212
+ case "lo" : // Lao
213
+ case "ms" : // Malay
214
+ case "my" : // Burmese
215
+ case "sah" : // Yakut
216
+ case "su" : // Sundanese
217
+ case "th" : // Thai
218
+ case "tt" : // Tatar
219
+ case "ug" : // Uyghur
220
+ case "vi" : // Vietnamese
221
+ case "wo" : // Wolof
222
+ case "zh" : // Chinese
223
+ // 1 form
224
+ return 0 ;
225
+ case "is" : // Icelandic
226
+ // 2 forms
227
+ return ( n % 10 != 1 || n % 100 == 11 ) ? 1 : 0 ;
228
+ case "jv" : // Javanese
229
+ // 2 forms
230
+ return n != 0 ? 1 : 0 ;
231
+ case "mk" : // Macedonian
232
+ // 2 forms
233
+ return n == 1 || n % 10 == 1 ? 0 : 1 ;
234
+ case "ach" : // Acholi
235
+ case "ak" : // Akan
236
+ case "am" : // Amharic
237
+ case "arn" : // Mapudungun
238
+ case "br" : // Breton
239
+ case "fil" : // Filipino
240
+ case "fr" : // French
241
+ case "gun" : // Gun
242
+ case "ln" : // Lingala
243
+ case "mfe" : // Mauritian Creole
244
+ case "mg" : // Malagasy
245
+ case "mi" : // Maori
246
+ case "oc" : // Occitan
247
+ case "pt_BR" : // Brazilian Portuguese
248
+ case "tg" : // Tajik
249
+ case "ti" : // Tigrinya
250
+ case "tr" : // Turkish
251
+ case "uz" : // Uzbek
252
+ case "wa" : // Walloon
253
+ case "zh" : // Chinese
254
+ // 2 forms
255
+ return n > 1 ? 1 : 0 ;
256
+ case "lv" : // Latvian
257
+ // 3 forms
258
+ return ( n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2 ) ;
259
+ case "lt" : // Lithuanian
260
+ // 3 forms
261
+ return ( n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 ) ;
262
+ case "be" : // Belarusian
263
+ case "bs" : // Bosnian
264
+ case "hr" : // Croatian
265
+ case "ru" : // Russian
266
+ case "sr" : // Serbian
267
+ case "uk" : // Ukrainian
268
+ // 3 forms
269
+ return ( n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 ) ;
270
+ case "mnk" : // Mandinka
271
+ // 3 forms
272
+ return ( n == 0 ? 0 : n == 1 ? 1 : 2 ) ;
273
+ case "ro" : // Romanian
274
+ // 3 forms
275
+ return ( n == 1 ? 0 : ( n == 0 || ( n % 100 > 0 && n % 100 < 20 ) ) ? 1 : 2 ) ;
276
+ case "pl" : // Polish
277
+ // 3 forms
278
+ return ( n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 ) ;
279
+ case "cs" : // Czech
280
+ case "sk" : // Slovak
281
+ // 3 forms
282
+ return ( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2 ;
283
+ case "csb" : // Kashubian
284
+ // 3 forms
285
+ return ( n == 1 ) ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 ;
286
+ case "sl" : // Slovenian
287
+ // 4 forms
288
+ return ( n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0 ) ;
289
+ case "mt" : // Maltese
290
+ // 4 forms
291
+ return ( n == 1 ? 0 : n == 0 || ( n % 100 > 1 && n % 100 < 11 ) ? 1 : ( n % 100 > 10 && n % 100 < 20 ) ? 2 : 3 ) ;
292
+ case "gd" : // Scottish Gaelic
293
+ // 4 forms
294
+ return ( n == 1 || n == 11 ) ? 0 : ( n == 2 || n == 12 ) ? 1 : ( n > 2 && n < 20 ) ? 2 : 3 ;
295
+ case "cy" : // Welsh
296
+ // 4 forms
297
+ return ( n == 1 ) ? 0 : ( n == 2 ) ? 1 : ( n != 8 && n != 11 ) ? 2 : 3 ;
298
+ case "kw" : // Cornish
299
+ // 4 forms
300
+ return ( n == 1 ) ? 0 : ( n == 2 ) ? 1 : ( n == 3 ) ? 2 : 3 ;
301
+ case "ga" : // Irish
302
+ // 5 forms
303
+ return ( n == 1 ) ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4 ;
304
+ case "ar" : // Arabic
305
+ // 6 forms
306
+ return ( n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5 ) ;
307
+ default : // Everything else
308
+ return n != 1 ? 1 : 0 ;
293
309
}
294
310
} ) ;
0 commit comments