@@ -18,20 +18,22 @@ public class Internationalization
18
18
{
19
19
private static readonly string ClassName = nameof ( Internationalization ) ;
20
20
21
+ // We should not initialize API in static constructor because it will create another API instance
22
+ private static IPublicAPI api = null ;
23
+ private static IPublicAPI API => api ??= Ioc . Default . GetRequiredService < IPublicAPI > ( ) ;
24
+
21
25
private const string Folder = "Languages" ;
22
26
private const string DefaultLanguageCode = "en" ;
23
27
private const string DefaultFile = "en.xaml" ;
24
28
private const string Extension = ".xaml" ;
25
29
private readonly Settings _settings ;
26
- private readonly IPublicAPI _api ;
27
30
private readonly List < string > _languageDirectories = new ( ) ;
28
31
private readonly List < ResourceDictionary > _oldResources = new ( ) ;
29
32
private readonly string SystemLanguageCode ;
30
33
31
34
public Internationalization ( Settings settings )
32
35
{
33
36
_settings = settings ;
34
- _api = Ioc . Default . GetRequiredService < IPublicAPI > ( ) ;
35
37
AddFlowLauncherLanguageDirectory ( ) ;
36
38
SystemLanguageCode = GetSystemLanguageCodeAtStartup ( ) ;
37
39
}
@@ -83,7 +85,7 @@ private void AddPluginLanguageDirectories()
83
85
}
84
86
else
85
87
{
86
- _api . LogError ( ClassName , $ "Can't find plugin path <{ location } > for <{ plugin . Metadata . Name } >") ;
88
+ API . LogError ( ClassName , $ "Can't find plugin path <{ location } > for <{ plugin . Metadata . Name } >") ;
87
89
}
88
90
}
89
91
@@ -147,13 +149,13 @@ public void ChangeLanguage(string languageCode)
147
149
_settings . Language = isSystem ? Constant . SystemLanguageCode : language . LanguageCode ;
148
150
}
149
151
150
- private Language GetLanguageByLanguageCode ( string languageCode )
152
+ private static Language GetLanguageByLanguageCode ( string languageCode )
151
153
{
152
154
var lowercase = languageCode . ToLower ( ) ;
153
155
var language = AvailableLanguages . GetAvailableLanguages ( ) . FirstOrDefault ( o => o . LanguageCode . ToLower ( ) == lowercase ) ;
154
156
if ( language == null )
155
157
{
156
- _api . LogError ( ClassName , $ "Language code can't be found <{ languageCode } >") ;
158
+ API . LogError ( ClassName , $ "Language code can't be found <{ languageCode } >") ;
157
159
return AvailableLanguages . English ;
158
160
}
159
161
else
@@ -242,7 +244,7 @@ public List<Language> LoadAvailableLanguages()
242
244
return list ;
243
245
}
244
246
245
- public string GetTranslation ( string key )
247
+ public static string GetTranslation ( string key )
246
248
{
247
249
var translation = Application . Current . TryFindResource ( key ) ;
248
250
if ( translation is string )
@@ -251,7 +253,7 @@ public string GetTranslation(string key)
251
253
}
252
254
else
253
255
{
254
- _api . LogError ( ClassName , $ "No Translation for key { key } ") ;
256
+ API . LogError ( ClassName , $ "No Translation for key { key } ") ;
255
257
return $ "No Translation for key { key } ";
256
258
}
257
259
}
@@ -269,12 +271,12 @@ private void UpdatePluginMetadataTranslations()
269
271
}
270
272
catch ( Exception e )
271
273
{
272
- _api . LogException ( ClassName , $ "Failed for <{ p . Metadata . Name } >", e ) ;
274
+ API . LogException ( ClassName , $ "Failed for <{ p . Metadata . Name } >", e ) ;
273
275
}
274
276
}
275
277
}
276
278
277
- private string LanguageFile ( string folder , string language )
279
+ private static string LanguageFile ( string folder , string language )
278
280
{
279
281
if ( Directory . Exists ( folder ) )
280
282
{
@@ -285,15 +287,15 @@ private string LanguageFile(string folder, string language)
285
287
}
286
288
else
287
289
{
288
- _api . LogError ( ClassName , $ "Language path can't be found <{ path } >") ;
290
+ API . LogError ( ClassName , $ "Language path can't be found <{ path } >") ;
289
291
var english = Path . Combine ( folder , DefaultFile ) ;
290
292
if ( File . Exists ( english ) )
291
293
{
292
294
return english ;
293
295
}
294
296
else
295
297
{
296
- _api . LogError ( ClassName , $ "Default English Language path can't be found <{ path } >") ;
298
+ API . LogError ( ClassName , $ "Default English Language path can't be found <{ path } >") ;
297
299
return string . Empty ;
298
300
}
299
301
}
0 commit comments