@@ -27,15 +27,20 @@ public class Internationalization
27
27
private const string DefaultFile = "en.xaml" ;
28
28
private const string Extension = ".xaml" ;
29
29
private readonly Settings _settings ;
30
- private readonly List < string > _languageDirectories = new ( ) ;
31
- private readonly List < ResourceDictionary > _oldResources = new ( ) ;
30
+ private readonly List < string > _languageDirectories = [ ] ;
31
+ private readonly List < ResourceDictionary > _oldResources = [ ] ;
32
32
private static string SystemLanguageCode ;
33
33
34
34
public Internationalization ( Settings settings )
35
35
{
36
36
_settings = settings ;
37
37
}
38
38
39
+ #region Initialization
40
+
41
+ /// <summary>
42
+ /// Initialize the system language code based on the current culture.
43
+ /// </summary>
39
44
public static void InitSystemLanguageCode ( )
40
45
{
41
46
var availableLanguages = AvailableLanguages . GetAvailableLanguages ( ) ;
@@ -133,6 +138,10 @@ private void LoadDefaultLanguage()
133
138
_oldResources . Clear ( ) ;
134
139
}
135
140
141
+ #endregion
142
+
143
+ #region Change Language
144
+
136
145
/// <summary>
137
146
/// Change language during runtime. Will change app language and plugin language & save settings.
138
147
/// </summary>
@@ -213,6 +222,10 @@ public static void ChangeCultureInfo(string languageCode)
213
222
thread . CurrentUICulture = currentCulture ;
214
223
}
215
224
225
+ #endregion
226
+
227
+ #region Prompt Pinyin
228
+
216
229
public bool PromptShouldUsePinyin ( string languageCodeToSet )
217
230
{
218
231
var languageToSet = GetLanguageByLanguageCode ( languageCodeToSet ) ;
@@ -233,6 +246,10 @@ public bool PromptShouldUsePinyin(string languageCodeToSet)
233
246
return true ;
234
247
}
235
248
249
+ #endregion
250
+
251
+ #region Language Resources Management
252
+
236
253
private void RemoveOldLanguageFiles ( )
237
254
{
238
255
var dicts = Application . Current . Resources . MergedDictionaries ;
@@ -268,13 +285,51 @@ private void LoadLanguage(Language language)
268
285
}
269
286
}
270
287
288
+ private static string LanguageFile ( string folder , string language )
289
+ {
290
+ if ( Directory . Exists ( folder ) )
291
+ {
292
+ var path = Path . Combine ( folder , language ) ;
293
+ if ( File . Exists ( path ) )
294
+ {
295
+ return path ;
296
+ }
297
+ else
298
+ {
299
+ API . LogError ( ClassName , $ "Language path can't be found <{ path } >") ;
300
+ var english = Path . Combine ( folder , DefaultFile ) ;
301
+ if ( File . Exists ( english ) )
302
+ {
303
+ return english ;
304
+ }
305
+ else
306
+ {
307
+ API . LogError ( ClassName , $ "Default English Language path can't be found <{ path } >") ;
308
+ return string . Empty ;
309
+ }
310
+ }
311
+ }
312
+ else
313
+ {
314
+ return string . Empty ;
315
+ }
316
+ }
317
+
318
+ #endregion
319
+
320
+ #region Available Languages
321
+
271
322
public List < Language > LoadAvailableLanguages ( )
272
323
{
273
324
var list = AvailableLanguages . GetAvailableLanguages ( ) ;
274
325
list . Insert ( 0 , new Language ( Constant . SystemLanguageCode , AvailableLanguages . GetSystemTranslation ( SystemLanguageCode ) ) ) ;
275
326
return list ;
276
327
}
277
328
329
+ #endregion
330
+
331
+ #region Get Translations
332
+
278
333
public static string GetTranslation ( string key )
279
334
{
280
335
var translation = Application . Current . TryFindResource ( key ) ;
@@ -289,6 +344,10 @@ public static string GetTranslation(string key)
289
344
}
290
345
}
291
346
347
+ #endregion
348
+
349
+ #region Update Metadata
350
+
292
351
public static void UpdatePluginMetadataTranslations ( )
293
352
{
294
353
// Update plugin metadata name & description
@@ -308,34 +367,6 @@ public static void UpdatePluginMetadataTranslations()
308
367
}
309
368
}
310
369
311
- private static string LanguageFile ( string folder , string language )
312
- {
313
- if ( Directory . Exists ( folder ) )
314
- {
315
- var path = Path . Combine ( folder , language ) ;
316
- if ( File . Exists ( path ) )
317
- {
318
- return path ;
319
- }
320
- else
321
- {
322
- API . LogError ( ClassName , $ "Language path can't be found <{ path } >") ;
323
- var english = Path . Combine ( folder , DefaultFile ) ;
324
- if ( File . Exists ( english ) )
325
- {
326
- return english ;
327
- }
328
- else
329
- {
330
- API . LogError ( ClassName , $ "Default English Language path can't be found <{ path } >") ;
331
- return string . Empty ;
332
- }
333
- }
334
- }
335
- else
336
- {
337
- return string . Empty ;
338
- }
339
- }
370
+ #endregion
340
371
}
341
372
}
0 commit comments