Skip to content

Commit d1533b3

Browse files
Merge pull request #91 from atc-net/feature/culture-manager
feat: Improve CultureManager
2 parents b561c53 + 49fa1b8 commit d1533b3

File tree

2 files changed

+56
-19
lines changed

2 files changed

+56
-19
lines changed

sample/Atc.Wpf.Sample/App.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,9 @@ await host
103103
.StartAsync()
104104
.ConfigureAwait(false);
105105

106-
CultureManager.Set(
106+
CultureManager.SetCultures(
107107
GlobalizationConstants.EnglishCultureInfo,
108-
synchronizeThreadCultures: false);
108+
GlobalizationConstants.EnglishCultureInfo);
109109

110110
ThemeManager.Current.ChangeTheme(
111111
Current,

src/Atc.Wpf/Translation/CultureManager.cs

Lines changed: 54 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ public static class CultureManager
2424

2525
public static event EventHandler<UiCultureEventArgs>? UiCultureChanged;
2626

27-
public static void Set(
28-
CultureInfo cultureInfo,
29-
bool synchronizeThreadCultures)
30-
{
31-
SynchronizeThreadCulture = synchronizeThreadCultures;
32-
UiCulture = cultureInfo;
33-
}
34-
3527
/// <summary>
3628
/// Gets or sets the UI culture.
3729
/// </summary>
@@ -54,7 +46,7 @@ public static CultureInfo UiCulture
5446
Thread.CurrentThread.CurrentUICulture = value;
5547
if (SynchronizeThreadCulture)
5648
{
57-
SetThreadCulture(value);
49+
SetBackendCulture(value);
5850
}
5951

6052
UiCultureExtension.UpdateAllTargets();
@@ -83,21 +75,66 @@ public static bool SynchronizeThreadCulture
8375
synchronizeThreadCulture = value;
8476
if (value)
8577
{
86-
SetThreadCulture(UiCulture);
78+
SetBackendCulture(UiCulture);
8779
}
8880
}
8981
}
9082

9183
/// <summary>
92-
/// Set the thread culture to the given culture.
84+
/// Set the UI culture to the given culture and the backend culture to 'en-US'.
85+
/// </summary>
86+
/// <param name="uiCultureInfo">The UI culture to set.</param>
87+
/// <param name="synchronizeThreadCultures">The synchronizeThreadCultures to set.</param>
88+
public static void SetCultures(
89+
CultureInfo uiCultureInfo,
90+
bool synchronizeThreadCultures)
91+
=> SetCultures(
92+
uiCultureInfo,
93+
GlobalizationConstants.EnglishCultureInfo,
94+
synchronizeThreadCultures);
95+
96+
/// <summary>
97+
/// Set the cultures to the given cultures.
9398
/// </summary>
94-
/// <param name="value">The culture to set.</param>
99+
/// <param name="backendCultureInfo">The backend culture to set.</param>
100+
/// <param name="uiCultureInfo">The UI culture to set.</param>
101+
/// <param name="synchronizeThreadCultures">The synchronizeThreadCultures to set.</param>
102+
public static void SetCultures(
103+
CultureInfo backendCultureInfo,
104+
CultureInfo uiCultureInfo,
105+
bool synchronizeThreadCultures = false)
106+
{
107+
ArgumentNullException.ThrowIfNull(backendCultureInfo);
108+
109+
SynchronizeThreadCulture = synchronizeThreadCultures;
110+
SetBackendCulture(backendCultureInfo);
111+
UiCulture = uiCultureInfo;
112+
}
113+
114+
/// <summary>
115+
/// Set the UI culture to the given culture.
116+
/// </summary>
117+
/// <param name="uiCultureInfo">The UI culture to set.</param>
118+
public static void SetUiCulture(
119+
CultureInfo uiCultureInfo)
120+
{
121+
ArgumentNullException.ThrowIfNull(uiCultureInfo);
122+
123+
UiCulture = uiCultureInfo;
124+
}
125+
126+
/// <summary>
127+
/// Set the backend culture to the given culture.
128+
/// </summary>
129+
/// <param name="backendCultureInfo">The backend culture to set.</param>
95130
/// <remarks>If the culture is neutral then creates a specific culture.</remarks>
96-
private static void SetThreadCulture(
97-
CultureInfo value)
131+
public static void SetBackendCulture(
132+
CultureInfo backendCultureInfo)
98133
{
99-
Thread.CurrentThread.CurrentCulture = value.IsNeutralCulture
100-
? CultureInfo.CreateSpecificCulture(value.Name)
101-
: value;
134+
ArgumentNullException.ThrowIfNull(backendCultureInfo);
135+
136+
Thread.CurrentThread.CurrentCulture = backendCultureInfo.IsNeutralCulture
137+
? CultureInfo.CreateSpecificCulture(backendCultureInfo.Name)
138+
: backendCultureInfo;
102139
}
103140
}

0 commit comments

Comments
 (0)