♻️ Refactored localization service

This commit is contained in:
2026-02-04 23:59:41 +08:00
parent c1669286f4
commit 9b6a62ec66
30 changed files with 530 additions and 369 deletions

View File

@@ -0,0 +1,54 @@
using System.Globalization;
namespace DysonNetwork.Shared.Localization;
public static class LocalizationExtensions
{
public static string Localize(this string key, string? locale = null, object? args = null)
{
var service = LocalizationServiceLocator.Service;
if (service == null)
{
return key;
}
return service.Get(key, locale, args);
}
public static string LocalizeCount(this string key, int count, string? locale = null, object? additionalArgs = null)
{
object args;
if (additionalArgs != null)
{
args = new CountWrapper(count, additionalArgs);
}
else
{
args = new { count };
}
var service = LocalizationServiceLocator.Service;
if (service == null)
{
return key;
}
return service.Get(key, locale, args);
}
public class CountWrapper
{
public int Count { get; }
private readonly object? _additionalArgs;
public CountWrapper(int count, object? additionalArgs)
{
Count = count;
_additionalArgs = additionalArgs;
}
}
}
public static class LocalizationServiceLocator
{
public static ILocalizationService? Service { get; set; }
}