refactor: streamline locale resource handling with SetResources method (#816)

This commit is contained in:
Dong Bin
2025-11-12 15:23:40 +08:00
committed by GitHub
parent 441f123de2
commit f9729859fe

View File

@@ -46,12 +46,12 @@ public class SemiTheme : Styles
if (TryGetLocaleResource(value, out var resource) && resource is not null)
{
_locale = value;
foreach (var kv in resource) Resources[kv.Key] = kv.Value;
SetResources(this.Resources, resource);
}
else
{
_locale = new CultureInfo("zh-CN");
foreach (var kv in _defaultResource) Resources[kv.Key] = kv.Value;
SetResources(Resources, _defaultResource);
}
}
catch
@@ -89,13 +89,25 @@ public class SemiTheme : Styles
{
if (culture is null) 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)
{
if (culture is null) 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;
}
}
}