@@ -10,30 +10,8 @@ angular.module('gettext').constant('gettext', function (str) {
1010 return str ;
1111} ) ;
1212
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 = {
3715 debug : false ,
3816 debugPrefix : '[MISSING]: ' ,
3917 showTranslatedMarkers : false ,
@@ -42,11 +20,9 @@ angular.module('gettext').factory('gettextCatalog', ["gettextPlurals", "$http",
4220 strings : { } ,
4321 baseLanguage : 'en' ,
4422 currentLanguage : 'en' ,
45- cache : $cacheFactory ( 'strings' ) ,
4623
4724 setCurrentLanguage : function ( lang ) {
4825 this . currentLanguage = lang ;
49- broadcastUpdated ( ) ;
5026 } ,
5127
5228 setStrings : function ( language , strings ) {
@@ -62,43 +38,82 @@ angular.module('gettext').factory('gettextCatalog', ["gettextPlurals", "$http",
6238 this . strings [ language ] [ key ] = val ;
6339 }
6440 }
65-
66- broadcastUpdated ( ) ;
6741 } ,
6842
6943 getStringForm : function ( string , n ) {
7044 var stringTable = this . strings [ this . currentLanguage ] || { } ;
7145 var plurals = stringTable [ string ] || [ ] ;
7246 return plurals [ n ] ;
73- } ,
47+ }
48+ } ;
7449
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 ) ;
8051
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+ } ;
8765
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 ;
9671 }
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+ } ;
98112 }
99- } ;
100113
101- return catalog ;
114+ self . cache = self . cache || $cacheFactory ( 'strings' ) ;
115+ return new Catalog ( self ) ;
116+ } ] ;
102117} ] ) ;
103118
104119angular . 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
179194} ] ) ;
180195
181196// 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 ;
293309 }
294310} ) ;
0 commit comments