@@ -21,13 +21,19 @@ import { Language, Message, MessageKey, Messages, PluralKey } from "./Messages"
21
21
22
22
export type MessagesObject = { [ messageKey in MessageKey ] : string | { [ pluralKey : string ] : string } }
23
23
24
+ export type MessagesByLanguage = { [ key in Language ] : MessagesObject }
25
+
24
26
/**
25
27
* An implementation of `MessageLoader` that "loads" `Messages` from given Javascript objects.
26
28
* This implemenation is especially usefull when loading messages from JSON files that are included
27
29
* during Javascript assembly.
28
30
*/
29
31
export class ObjectMessageLoader implements MessageLoader {
30
- constructor ( private readonly defaultMessages : MessagesObject , private readonly messagesByLanguage : { [ key in Language ] : MessagesObject } ) { }
32
+ private readonly messagesByLanguage : MessagesByLanguage
33
+
34
+ constructor ( private readonly defaultMessages : MessagesObject , messagesByLanguage ?: MessagesByLanguage ) {
35
+ this . messagesByLanguage = messagesByLanguage ?? { }
36
+ }
31
37
32
38
loadDefaultMessages ( ) : Promise < Messages > {
33
39
return Promise . resolve ( this . transformMessagesObject ( this . defaultMessages ) )
@@ -122,7 +128,10 @@ export class JsonMessageLoaderError extends Error {
122
128
* i.e. `"1"` with their numeric keys.
123
129
*/
124
130
export class JsonMessageLoader implements MessageLoader {
125
- constructor ( private readonly defaultsLoader : JsonSource , private readonly localizedLoader : JsonSource ) { }
131
+ private readonly localizedLoader : JsonSource
132
+ constructor ( private readonly defaultsLoader : JsonSource , localizedLoader ?: JsonSource ) {
133
+ this . localizedLoader = localizedLoader ?? this . defaultsLoader
134
+ }
126
135
127
136
loadDefaultMessages ( ) : Promise < Messages > {
128
137
return this . parseJson ( this . defaultsLoader ( ) )
0 commit comments