英语.Net多语言开发中的问题
问题与现象
多语言开发是一件成本很高的事情。
很多公司会退而求其次选择只开发英文版本的软件分发到不同国家,但这里仍存在不同问题。
我们就遇到了这样的问题,参考下面的代码。
CultureInfo culture;double number =1.5;
culture = CultureInfo.CreateSpecificCulture("en-ID"); //英语(印度尼西亚)
Thread.CurrentThread.CurrentCulture = culture;
var b = double.TryParse("1.5", out double d);Console.WriteLine($"tostring result {number.ToString()}");
Console.WriteLine($"try parse succes {b},result {d}");
输出为:
tostring result 1,5
try parse succes True,result 15
在开发中,我们会把很多参数配置化(包括浮点数)写到配置文件中,但读取配置文件时,我们就会发现读取出来的浮点数解析不对了。
原因解决方案
原因
虽然都用英语,但印尼地区表示小数使用逗号来分隔整数与小数部分(很多国家,比如德国等都用这种,大家自行用上面的例子试一下,参考地区与语言代码)
另一个例子是摄氏度的符号"°C" 和 "℃"
, 请具体参考
摄氏度的中文英文处理方式, 我们在比较字符串的时候会经常遇到这个问题。
解决方案
有很多方式可以处理这些问题,一方面我们可以像例子中指定本地化信息。 TryParse等函数可以明确的传参处理所有的TryParse的参数。这里主要说下不改代码如何解决这个问题)。
-
修改本地账户的语言与地区信息,win11的新设置界面可以改,也可以直接Win+R 输入Control打开老版本的控制面板。在时间与区域中修改小数等的显示格式。
-
很多人会发现当前启动的用户客户端程序已经正确了,但是服务还不正常,这是因为服务默认会使用SYSTEM账户启动,但是SYSTEM账户会使用当前Windows安装包安装时的默认的本地语言或多语言版本选择的语言导致问题。由于SYSTEM账户无法登陆,我们可以在账户管理中启用Administrator账户,再修改该账户的语言与地区为英语(美国),然后在服务管理器把你有问题的服务指定使用该账户就可以解决了。
参考:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~