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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现