@@ -25,6 +25,10 @@ function _(str, ...args) {
2525 return strProvider . get ( str , ...args ) ;
2626}
2727
28+ function _A_ ( str , ...args ) {
29+ return strProvider . getAllTranslated ( str , ...args ) ;
30+ }
31+
2832class StringProvider {
2933 constructor ( ) {
3034
@@ -81,6 +85,7 @@ class StringProvider {
8185
8286 let pluralCategory = pluralRules [ locale ] . select ( args )
8387 let loadedPluralForm = loaded [ pluralCategory ] ;
88+ args === 0 && loaded [ "zero" ] ? loadedPluralForm = loaded [ "zero" ] : loadedPluralForm = loaded [ pluralCategory ] ; // prefer "zero" form if explicitly defined (on top of standard)
8489 if ( loadedPluralForm === null || loadedPluralForm === undefined )
8590 {
8691 // Translator probably forgot to define the requested plural
@@ -92,6 +97,21 @@ class StringProvider {
9297 return this . _insertArguments ( loadedPluralForm , args ) ;
9398 } ;
9499
100+ getAllTranslated = ( str , ...inputArgs ) => {
101+
102+ const defaultLocaleString = this . get ( str , inputArgs ) ;
103+ const excludeList = [ defaultLocaleString , str ] ;
104+ const LocalisedStrings = { } ;
105+
106+ Object . keys ( locales ) . forEach ( locale => {
107+ let loadedString = this . get ( str , locale , inputArgs ) ;
108+ if ( loadedString && ! excludeList . includes ( loadedString ) )
109+ LocalisedStrings [ locale ] = loadedString ;
110+ } ) ;
111+
112+ return [ LocalisedStrings , defaultLocaleString ] ;
113+ }
114+
95115 load = ( localesPath ) => {
96116 [ locales , pluralRules ] = loadLocales ( localesPath ) ;
97117 return this ;
@@ -109,4 +129,5 @@ class StringProvider {
109129const strProvider = new StringProvider ( ) ;
110130
111131exports . StringProvider = strProvider ;
112- exports . _ = _ ; // _() is shorthand alias for StringProvider.get()
132+ exports . _ = _ ; // _() is shorthand alias for StringProvider.get()
133+ exports . _A_ = _A_ ; // _A_() is shorthand alias for StringProvider.getAllTranslated()
0 commit comments