@@ -2,10 +2,10 @@ import {
2
2
InterpolatableTranslationObject ,
3
3
DefaultLangChangeEvent ,
4
4
LangChangeEvent ,
5
- TranslationChangeEvent , Language
5
+ TranslationChangeEvent , Language , InterpolatableTranslation
6
6
} from "./translate.service" ;
7
7
import { Observable , Subject } from "rxjs" ;
8
- import { mergeDeep } from "./util" ;
8
+ import { getValue , mergeDeep } from "./util" ;
9
9
10
10
11
11
type DeepReadonly < T > = {
@@ -19,13 +19,13 @@ export class TranslateStore
19
19
private _onLangChange : Subject < LangChangeEvent > = new Subject < LangChangeEvent > ( ) ;
20
20
private _onDefaultLangChange : Subject < DefaultLangChangeEvent > = new Subject < DefaultLangChangeEvent > ( ) ;
21
21
22
- private _defaultLang ! : Language ;
22
+ private defaultLang ! : Language ;
23
23
private currentLang ! : Language ;
24
24
25
25
private translations : Record < Language , InterpolatableTranslationObject > = { } ;
26
26
private languages : Language [ ] = [ ] ;
27
27
28
- public getTranslations ( language :Language ) : DeepReadonly < Record < Language , InterpolatableTranslationObject > >
28
+ public getTranslations ( language :Language ) : DeepReadonly < InterpolatableTranslationObject >
29
29
{
30
30
return this . translations [ language ] ;
31
31
}
@@ -49,15 +49,15 @@ export class TranslateStore
49
49
50
50
public getDefaultLanguage ( ) : Language
51
51
{
52
- return this . _defaultLang ;
52
+ return this . defaultLang ;
53
53
}
54
54
55
55
/**
56
56
* Changes the default lang
57
57
*/
58
58
public setDefaultLang ( lang : string , emitChange = true ) : void
59
59
{
60
- this . _defaultLang = lang ;
60
+ this . defaultLang = lang ;
61
61
if ( emitChange )
62
62
{
63
63
this . _onDefaultLangChange . next ( { lang : lang , translations : this . translations [ lang ] } ) ;
@@ -127,4 +127,19 @@ export class TranslateStore
127
127
{
128
128
delete this . translations [ lang ] ;
129
129
}
130
+
131
+ public getTranslation ( key : string , useDefaultLang : boolean ) : InterpolatableTranslation
132
+ {
133
+ let text = this . getValue ( this . currentLang , key ) ;
134
+ if ( text === undefined && this . defaultLang != null && this . defaultLang !== this . currentLang && useDefaultLang )
135
+ {
136
+ text = this . getValue ( this . defaultLang , key ) ;
137
+ }
138
+ return text ;
139
+ }
140
+
141
+ protected getValue ( language : Language , key : string ) : InterpolatableTranslation
142
+ {
143
+ return getValue ( this . getTranslations ( language ) , key ) as InterpolatableTranslation ;
144
+ }
130
145
}
0 commit comments