问题与现象

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

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

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


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. org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available es端口号及集群名称

    org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are availa ...

  2. 洛谷 P4913 二叉树深度

    题目链接:二叉树深度 思路 存储二叉树的各个节点并递归搜索二叉树深度. 题解 #include <bits/stdc++.h> using namespace std; #define l ...

  3. Asp.net Core Flurl.Http 结合IHttpClientFactory管理HttpClient生命周期

    Asp.net Core, 在我用过的多种Http REST 客户端: RestSharp WebApiClient Refit Flurl 中,Flurl可以说是最符合我口味的,用起来那可真的顺滑无 ...

  4. 用Tensorboard在VScode Remote ssh中显示图像

    可以用Tensorboard在vscode的ssh连接中显示plot出的图像. 具体方法如下: from torch.utils.tensorboard import SummaryWriter wr ...

  5. HBase 中的 JVM 与 GC

    HBase中JVM基本配置 在JVM中,默认情况下会设置minimum heap size 为 1/64 可用物理内存,并为maximum heap size设置 1/4 的物理可用内存(不过在Jav ...

  6. .NET 个人博客-给图片添加水印

    个人博客-给图片添加水印 前言 需要用到的库 SixLabors.lmageSharp 2.1.3 SixLabors.lmageSharp.Web 2.0.2 SixLabors.Fonts 1.0 ...

  7. 一文了解Spring Boot启动类SpringApplication

    本文分享自华为云社区<[Spring Boot 源码学习]初识 SpringApplication>,作者: Huazie. 引言 往期的博文,Huazie 围绕 Spring Boot  ...

  8. Windows批处理文件(.bat和.cmd)

    cmd文件和bat文件的区别 从文件描述中的区别是,cmd文件叫做:Windows命令脚本,bat文件叫:批处理文件,两者都可以使用任意一款文本编辑器进行创建.编辑和修改,只是在cmd中支持的命令要多 ...

  9. Spring(注解方式)简单入门

    环境准备 maven jdk Spring Eclipse 项目创建 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...

  10. 洛谷P1003

    洛谷P1003 题目大意 简而言之就是在坐标轴上铺地毯,根据输入的坐标将地毯放在坐标轴上,然后最后给出一个坐标,找到铺在这个坐标上最上面的地毯编号 Train of thought 首先我们应该找到每 ...