问题与现象

多语言开发是一件成本很高的事情。

很多公司会退而求其次选择只开发英文版本的软件分发到不同国家,但这里仍存在不同问题。

我们就遇到了这样的问题,参考下面的代码。


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账户,再修改该账户的语言与地区为英语(美国),然后在服务管理器把你有问题的服务指定使用该账户就可以解决了。

参考:

  1. C# 多语言国际化问题中的 CultureInfo
  2. # C# 设置线程的默认CultureInfo

英语.Net多语言开发中的问题的更多相关文章

  1. C语言开发中常见报错的解决方案

    C语言开发中常见报错的解决方案 整理来源于网络,侵权请通知删除.*禁止转载 ---- fatal error C1003: error count exceeds number; stopping c ...

  2. Go语言开发中MongoDB数据库

    伴随着移动端的兴起,Nosql数据库以其分布式设计和高性能等特点得到了广泛的应该用,下面将介绍下Nosql中的mongoDB在Go语言中的应用,在开发前,有必要了解下基础知识 在开发前,导入开发需要用 ...

  3. go 语言开发中 GOPATH问题 与 go语言linux 开发环境 教程

    https://github.com/rubyhan1314/Golang-100-Days/blob/master/Day01-15(Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7 ...

  4. 对于Linux平台下C语言开发中__sync_函数的认识

      reference:http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html#Atomic-Builtins A built ...

  5. 对于Linux平台下C语言开发中__sync_函数的认识(转)

    reference:http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html#Atomic-Builtins A built-i ...

  6. C语言开发中常用英文缩写

    BIOS(Basic Input Output System): 基本输入输出系统 reference: https://baike.baidu.com/item/bios/91424?fr=alad ...

  7. 嵌入式开发中常见3个的C语言技巧

    Hey,大家好!我是CrazyCatJack.今天我来说几个在嵌入式开发中常用的C语言技巧吧.也许你曾经用过,也许你只是见到过但是没有深入理解.那么今天好好补充下吧^_^ 1.指向函数的指针 指针不光 ...

  8. 浅谈iOS开发中多语言的字符串排序

    一.前言 在iOS开发中,一个经常的场景是利用tableview展示一组数据,以很多首歌曲为例子.为了便于查找,一般会把这些歌曲按照一定的顺序排列,还会加上索引条以便于快速定位. 由于歌曲名可能有数字 ...

  9. iOS 开发中的一些注意点(安全、当前语言、时间格式化)

    1.重复运行项目,不重复构建项目(来自Heath Borders) 假如你一直在不停地调试同一个问题,你可以在不重复构建的情况下运行你的APP,这样:“Product>Perform Actio ...

  10. FPGA开发中的脚本语言

    多数FPGA开发者都习惯图形化界面(GUI).GUI方式简单易学,为小项目提供了一键式流程.然而,随着FPGA项目越来越复杂,在很多情况下GUI工具就阻碍了工作效率.因为GUI工具不能对整个开发过程提 ...

随机推荐

  1. 1003 我要通过! PTA Basic Level

    我的个人博客 azoux's blog 题目 我要通过! (20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 ...

  2. Linux虚拟网卡TUN和TAP

    简介 在 Linux 网络管理中,虚拟网卡(Virtual Network Interface)是一个重要的概念,广泛应用于虚拟化.网络仿真和隧道技术中.本文将重点介绍 TUN(Network TUN ...

  3. HBase2版本的修复工具HBCK2

    一.hbase出现的问题 1.元数据表hbase:namespace 不在线 导致查询数据时 master is initing 2.一些表的region一直处于opening状态 3.region ...

  4. RSA密码系统的特定密钥泄露攻击与Coppersmith方法的应用

    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全.密码学.联邦学习.同态加密等隐私计算领域的技术和内容. RSA密码系统作为当前最广泛使用的公钥加密算法之一,其安全性依赖 ...

  5. springboot使用mail提示没有该类型的bean

    @Autowired private JavaMailSenderImpl javaMailSender; 自动注入时提示没有该类型的Bean. 原因 没有配置邮件发送相关的配置信息. spring: ...

  6. Python 潮流周刊#58:最快运行原型的语言(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. .NET CORE 部署提示 An error occurred while starting the application.

    错误提示: 解决方法 检查一下nuget引用包 是否更新了版本,如果升级或者降级了版本,需要将新的dll文件更新一下

  8. 火山引擎数智平台赋能火花思维,A/B测试加速创新

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群.   在数字化浪潮下,火花思维凭借其对数据驱动的理解与实践,搭上了业务快速增长的快车.这一效果的背后,离不开火花思 ...

  9. [oeasy]python0133_[趣味拓展]好玩的unicode字符_另类字符_上下颠倒英文字符

    另类字符 回忆上次内容 上次再次输出了大红心<span style="font-size:64px;color:red"></span> 找到了红心对应的编 ...

  10. LLM并行训练6-激活优化

    前置知识 Activation 激活指的是一些在fp时计算得到的临时tensor, 会用于bp时的计算. 如果能在fp计算后把临时tensor缓存下来就可以加速bp, 缺点在于某些激活会占用大量显存. ...