Dreamine.UI.Wpf
1.0.1
Dreamine.UI.Wpf 사용자 인터페이스 기능과 구성 요소를 제공합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
DreamineLocalizationManager.cs
이 파일의 문서화 페이지로 가기
1
using
System.ComponentModel;
2
using
System.IO;
3
using
System.Windows;
4
5
namespace
Dreamine.UI.Wpf.Localization
;
6
15
public
enum
Language
16
{
25
English
,
34
Korean
,
43
Chinese
,
52
Vietnamese
53
}
54
63
public
enum
TextcaseType
64
{
73
Default
,
82
SentenceCase
,
91
TitleCase
,
100
UpperCase
,
109
LowerCase
,
118
EmphasisCase
119
}
120
129
public
static
class
DreamineLocalizationManager
130
{
139
private
static
readonly HashSet<Language>
_valid
= Enum.GetValues<
Language
>().ToHashSet();
140
149
private
static
readonly Dictionary<Language, Dictionary<string, Dictionary<string, string>>>
_langDict
=
new
();
150
159
private
static
Language
_currentLanguage
=
Language
.Korean;
168
private
static
Language
_oldLanguage
=
Language
.Korean;
169
178
public
static
Language
OldLanguage
=>
_oldLanguage
;
179
188
public
static
Language
CurrentLanguage
189
{
190
get
=>
_currentLanguage
;
191
set
192
{
193
if
(
_valid
.Contains(value) &&
_currentLanguage
!= value)
194
{
195
_oldLanguage
=
_currentLanguage
;
196
_currentLanguage
= value;
197
LanguageChanged
?.Invoke(
null
, EventArgs.Empty);
198
}
199
}
200
}
201
210
public
static
event
EventHandler?
LanguageChanged
;
211
220
public
static
IReadOnlyDictionary<Language, IReadOnlyDictionary<string, IReadOnlyDictionary<string, string>>>
Languages
221
=>
_langDict
.ToDictionary(
222
l => l.Key,
223
l => (IReadOnlyDictionary<
string
, IReadOnlyDictionary<string, string>>)
224
l.Value.ToDictionary(s => s.Key, s => (IReadOnlyDictionary<string, string>)s.Value));
225
258
public
static
void
SetLanguageData
(
259
Language
language,
260
Dictionary<
Language
, Dictionary<
string
, Dictionary<string, string>>> data)
261
{
262
_langDict
.Clear();
263
foreach
(var kv
in
data)
264
_langDict
[kv.Key] = kv.Value;
265
CurrentLanguage
= language;
266
}
267
308
public
static
void
Load
(
309
Func<
string
, Dictionary<
string
, Dictionary<string, string>>> loadFn,
310
Language
language =
Language
.English,
311
string
? basePath =
null
)
312
{
313
CurrentLanguage
= language;
314
string
dir = basePath ?? Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
"Languages"
);
315
316
foreach
(
Language
lang
in
Enum.GetValues<
Language
>())
317
{
318
string
langName = lang.ToString();
319
string
filePath = Path.Combine(dir, $
"Ui{langName}.INI"
);
320
if
(!File.Exists(filePath))
321
filePath = Path.Combine(dir, $
"UI_{langName}.INI"
);
322
if
(!File.Exists(filePath))
323
continue
;
324
325
_langDict
[lang] = loadFn(filePath);
326
}
327
}
328
361
public
static
string
Get
(
string
section,
string
key)
362
=>
Get
(
CurrentLanguage
, section, key);
363
404
public
static
string
Get
(
Language
lang,
string
section,
string
key)
405
{
406
if
(
_langDict
.TryGetValue(lang, out var sectionDict) &&
407
sectionDict.TryGetValue(section, out var keyDict) &&
408
keyDict.TryGetValue(key, out var value))
409
return
value;
410
411
return
null
!;
412
}
413
454
public
static
string
?
GetKeyFromValue
(
Language
lang,
string
section,
string
value)
455
{
456
if
(
_langDict
.TryGetValue(lang, out var sectionDict) &&
457
sectionDict.TryGetValue(section, out var keyDict))
458
{
459
foreach
(var pair
in
keyDict)
460
if
(pair.Value == value)
return
pair.Key;
461
}
462
return
null
;
463
}
464
497
public
static
string
GetLocalizedEquivalent
(
string
section,
string
value)
498
{
499
if
(
string
.IsNullOrEmpty(value))
return
value;
500
var key =
GetKeyFromValue
(
_oldLanguage
, section, value);
501
if
(
string
.IsNullOrEmpty(key))
return
value;
502
var newLang =
Get
(
CurrentLanguage
, section, key);
503
return
string
.IsNullOrEmpty(newLang) ? value : newLang;
504
}
505
}
506
515
public
class
StaticLocalizationProxy
: DependencyObject, INotifyPropertyChanged
516
{
525
public
static
StaticLocalizationProxy
Instance
{
get
;
set
; } =
new
();
526
535
public
StaticLocalizationProxy
()
536
{
537
DreamineLocalizationManager.LanguageChanged
+= (_, _) =>
OnPropertyChanged
(nameof(
CurrentLanguage
));
538
}
539
548
public
Language
CurrentLanguage
549
{
550
get
=>
DreamineLocalizationManager
.
CurrentLanguage
;
551
set
=>
DreamineLocalizationManager.CurrentLanguage
= value;
552
}
553
562
public
event
PropertyChangedEventHandler?
PropertyChanged
;
563
580
protected
void
OnPropertyChanged
(
string
name)
581
=>
PropertyChanged
?.Invoke(
this
,
new
PropertyChangedEventArgs(name));
582
}
Dreamine.UI.Wpf.Localization
Definition
DreamineLocalization.cs:7
Dreamine.UI.Wpf.Localization.TextcaseType
TextcaseType
Definition
DreamineLocalizationManager.cs:64
Dreamine.UI.Wpf.Localization.TextcaseType.UpperCase
@ UpperCase
Definition
DreamineLocalizationManager.cs:100
Dreamine.UI.Wpf.Localization.TextcaseType.SentenceCase
@ SentenceCase
Definition
DreamineLocalizationManager.cs:82
Dreamine.UI.Wpf.Localization.TextcaseType.Default
@ Default
Definition
DreamineLocalizationManager.cs:73
Dreamine.UI.Wpf.Localization.TextcaseType.TitleCase
@ TitleCase
Definition
DreamineLocalizationManager.cs:91
Dreamine.UI.Wpf.Localization.TextcaseType.LowerCase
@ LowerCase
Definition
DreamineLocalizationManager.cs:109
Dreamine.UI.Wpf.Localization.TextcaseType.EmphasisCase
@ EmphasisCase
Definition
DreamineLocalizationManager.cs:118
Dreamine.UI.Wpf.Localization.Language
Language
Definition
DreamineLocalizationManager.cs:16
Dreamine.UI.Wpf.Localization.Language.Chinese
@ Chinese
Definition
DreamineLocalizationManager.cs:43
Dreamine.UI.Wpf.Localization.Language.English
@ English
Definition
DreamineLocalizationManager.cs:25
Dreamine.UI.Wpf.Localization.Language.Vietnamese
@ Vietnamese
Definition
DreamineLocalizationManager.cs:52
Dreamine.UI.Wpf.Localization.Language.Korean
@ Korean
Definition
DreamineLocalizationManager.cs:34
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager
Definition
DreamineLocalizationManager.cs:130
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager._valid
static readonly HashSet< Language > _valid
Definition
DreamineLocalizationManager.cs:139
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager._oldLanguage
static Language _oldLanguage
Definition
DreamineLocalizationManager.cs:168
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager._currentLanguage
static Language _currentLanguage
Definition
DreamineLocalizationManager.cs:159
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.LanguageChanged
static ? EventHandler LanguageChanged
Definition
DreamineLocalizationManager.cs:210
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.Get
static string Get(string section, string key)
Definition
DreamineLocalizationManager.cs:361
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.Load
static void Load(Func< string, Dictionary< string, Dictionary< string, string > > > loadFn, Language language=Language.English, string? basePath=null)
Definition
DreamineLocalizationManager.cs:308
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.CurrentLanguage
static Language CurrentLanguage
Definition
DreamineLocalizationManager.cs:189
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.Languages
static IReadOnlyDictionary< Language, IReadOnlyDictionary< string, IReadOnlyDictionary< string, string > > > Languages
Definition
DreamineLocalizationManager.cs:221
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.OldLanguage
static Language OldLanguage
Definition
DreamineLocalizationManager.cs:178
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.GetKeyFromValue
static ? string GetKeyFromValue(Language lang, string section, string value)
Definition
DreamineLocalizationManager.cs:454
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.Get
static string Get(Language lang, string section, string key)
Definition
DreamineLocalizationManager.cs:404
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager._langDict
static readonly Dictionary< Language, Dictionary< string, Dictionary< string, string > > > _langDict
Definition
DreamineLocalizationManager.cs:149
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.GetLocalizedEquivalent
static string GetLocalizedEquivalent(string section, string value)
Definition
DreamineLocalizationManager.cs:497
Dreamine.UI.Wpf.Localization.DreamineLocalizationManager.SetLanguageData
static void SetLanguageData(Language language, Dictionary< Language, Dictionary< string, Dictionary< string, string > > > data)
Definition
DreamineLocalizationManager.cs:258
Dreamine.UI.Wpf.Localization.StaticLocalizationProxy.OnPropertyChanged
void OnPropertyChanged(string name)
Definition
DreamineLocalizationManager.cs:580
Dreamine.UI.Wpf.Localization.StaticLocalizationProxy.PropertyChanged
PropertyChangedEventHandler? PropertyChanged
Definition
DreamineLocalizationManager.cs:562
Dreamine.UI.Wpf.Localization.StaticLocalizationProxy.StaticLocalizationProxy
StaticLocalizationProxy()
Definition
DreamineLocalizationManager.cs:535
Dreamine.UI.Wpf.Localization.StaticLocalizationProxy.CurrentLanguage
Language CurrentLanguage
Definition
DreamineLocalizationManager.cs:549
Dreamine.UI.Wpf.Localization.StaticLocalizationProxy.Instance
static StaticLocalizationProxy Instance
Definition
DreamineLocalizationManager.cs:525
Localization
DreamineLocalizationManager.cs
다음에 의해 생성됨 :
1.17.0