refactor: streamline locale resource handling with SetResources method (#816)
This commit is contained in:
@@ -46,12 +46,12 @@ public class SemiTheme : Styles
|
|||||||
if (TryGetLocaleResource(value, out var resource) && resource is not null)
|
if (TryGetLocaleResource(value, out var resource) && resource is not null)
|
||||||
{
|
{
|
||||||
_locale = value;
|
_locale = value;
|
||||||
foreach (var kv in resource) Resources[kv.Key] = kv.Value;
|
SetResources(this.Resources, resource);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_locale = new CultureInfo("zh-CN");
|
_locale = new CultureInfo("zh-CN");
|
||||||
foreach (var kv in _defaultResource) Resources[kv.Key] = kv.Value;
|
SetResources(Resources, _defaultResource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
@@ -89,13 +89,25 @@ public class SemiTheme : Styles
|
|||||||
{
|
{
|
||||||
if (culture is null) return;
|
if (culture is null) return;
|
||||||
if (!_localeToResource.TryGetValue(culture, out var resources)) return;
|
if (!_localeToResource.TryGetValue(culture, out var resources)) return;
|
||||||
foreach (var kv in resources) application.Resources[kv.Key] = kv.Value;
|
SetResources(application.Resources, resources);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OverrideLocaleResources(StyledElement element, CultureInfo? culture)
|
public static void OverrideLocaleResources(StyledElement element, CultureInfo? culture)
|
||||||
{
|
{
|
||||||
if (culture is null) return;
|
if (culture is null) return;
|
||||||
if (!_localeToResource.TryGetValue(culture, out var resources)) return;
|
if (!_localeToResource.TryGetValue(culture, out var resources)) return;
|
||||||
foreach (var kv in resources) element.Resources[kv.Key] = kv.Value;
|
SetResources(element.Resources, resources);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetResources(IResourceDictionary source, IResourceDictionary content)
|
||||||
|
{
|
||||||
|
if (source is ResourceDictionary resourceDictionary)
|
||||||
|
{
|
||||||
|
resourceDictionary.SetItems(content);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var kv in content) source[kv.Key] = kv.Value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user