Skip to content

Commit 79e7236

Browse files
Merge pull request #22 from AndrewKeepCoding/feat/add-support-for-enums
Feat/add support for enums
2 parents 0ec66f7 + adca408 commit 79e7236

File tree

1 file changed

+40
-19
lines changed

1 file changed

+40
-19
lines changed

WinUI3Localizer/Localizer.cs

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ internal Localizer(Options options)
2828
this.localizationActions = LocalizationActions.DefaultActions;
2929
}
3030

31-
Uids.DependencyObjectUidSet += Uids_DependencyObjectUidSet; ;
31+
Uids.DependencyObjectUidSet += Uids_DependencyObjectUidSet;
3232
}
3333

3434
public event EventHandler<LanguageChangedEventArgs>? LanguageChanged;
@@ -257,14 +257,6 @@ private static void DependencyObjectsReferences_DependencyObjectRemoved(object?
257257
return null;
258258
}
259259

260-
private void LocalizeDependencyObjectsWithoutDependencyProperty(DependencyObject dependencyObject, string value)
261-
{
262-
foreach (LocalizationActions.ActionItem item in this.localizationActions
263-
.Where(x => x.TargetType == dependencyObject.GetType()))
264-
{
265-
item.Action(new LocalizationActions.ActionArguments(dependencyObject, value));
266-
}
267-
}
268260
private async Task LocalizeDependencyObjects()
269261
{
270262
foreach (DependencyObject dependencyObject in await this.dependencyObjectsReferences.GetDependencyObjects())
@@ -280,20 +272,49 @@ private void LocalizeDependencyObject(DependencyObject dependencyObject)
280272
{
281273
foreach (LanguageDictionary.Item item in items)
282274
{
283-
if (GetDependencyProperty(
284-
dependencyObject,
285-
item.DependencyPropertyName) is DependencyProperty dependencyProperty)
286-
{
287-
dependencyObject.SetValue(dependencyProperty, item.Value);
288-
}
289-
else
290-
{
291-
LocalizeDependencyObjectsWithoutDependencyProperty(dependencyObject, item.Value);
292-
}
275+
LocalizeDependencyObject(dependencyObject, item);
293276
}
294277
}
295278
}
296279

280+
private void LocalizeDependencyObject(DependencyObject dependencyObject, LanguageDictionary.Item item)
281+
{
282+
if (GetDependencyProperty(
283+
dependencyObject,
284+
item.DependencyPropertyName) is DependencyProperty dependencyProperty)
285+
{
286+
LocalizeDependencyObjectsWithDependencyProperty(dependencyObject, dependencyProperty, item.Value);
287+
}
288+
else
289+
{
290+
LocalizeDependencyObjectsWithoutDependencyProperty(dependencyObject, item.Value);
291+
}
292+
}
293+
294+
private void LocalizeDependencyObjectsWithDependencyProperty(DependencyObject dependencyObject, DependencyProperty dependencyProperty, string value)
295+
{
296+
if (dependencyObject
297+
.GetValue(dependencyProperty)?
298+
.GetType() is Type propertyType &&
299+
propertyType.IsEnum is true &&
300+
Enum.TryParse(propertyType, value, out object? enumValue) is true)
301+
{
302+
dependencyObject.SetValue(dependencyProperty, enumValue);
303+
return;
304+
}
305+
306+
dependencyObject.SetValue(dependencyProperty, value);
307+
}
308+
309+
private void LocalizeDependencyObjectsWithoutDependencyProperty(DependencyObject dependencyObject, string value)
310+
{
311+
foreach (LocalizationActions.ActionItem item in this.localizationActions
312+
.Where(x => x.TargetType == dependencyObject.GetType()))
313+
{
314+
item.Action(new LocalizationActions.ActionArguments(dependencyObject, value));
315+
}
316+
}
317+
297318
private void OnLanguageChanged(string previousLanguage, string currentLanguage)
298319
{
299320
LanguageChanged?.Invoke(this, new LanguageChangedEventArgs(previousLanguage, currentLanguage));

0 commit comments

Comments
 (0)