public static class LocalizationService { /// <summary> /// /// </summary> 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.DeserializeObject<Dictionary<string, string>>(text2, DefaultSerializerSettings); if (result.ContainsKey(key)) { retVal = string.Format(result[key], args); } } catch (Exception ex) { _logger.Error(ex, "json资源文件转换失败"); } } } return retVal; } }