public static class LocalizationService
{
///
///
///
public static readonly ILogger _logger = LogManager.GetCurrentClassLogger();
public static JsonSerializerSettings DefaultSerializerSettings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore
};
private static string ResourceName = "";
private static string ResourcePath = "Resources";
public static IServiceCollection ConfigureCustomLocalization(this IServiceCollection services, string resourceBasePath, string resourceName)
{
ResourceName = resourceName;
ResourcePath = resourceBasePath;
return services;
}
public static string GetLocalizationMsg(this string key, params object[] args)
{
var culture = CultureInfo.CurrentCulture;
string retVal = string.Empty;
if (string.Compare(culture.Name, "zh-CN") == 0)
{
retVal = "未知错误";
}
else
{
retVal = "unknown mistake";
}
if (string.IsNullOrWhiteSpace(ResourceName))
{
if (string.Compare(culture.Name, "zh-CN") == 0)
{
retVal = "未提供资源文件名,请先注册";
}
else
{
retVal = "No resource file name provided, please register first";
}
}
var filePath = Path.Combine(Path.Combine(AppContext.BaseDirectory, ResourcePath), $"{ResourceName}.{culture.Name}.json");
Dictionary<string, string> result = null;
if (File.Exists(filePath))
{
string text2 = File.ReadAllText(filePath, Encoding.UTF8);
if (!string.IsNullOrWhiteSpace(text2))
{
try
{
result = JsonConvert.DeserializeObjectstring, string>>(text2, DefaultSerializerSettings);
if (result.ContainsKey(key))
{
retVal = string.Format(result[key], args);
}
}
catch (Exception ex)
{
_logger.Error(ex, "json资源文件转换失败");
}
}
}
return retVal;
}
}