使用CultureInfo进行本地化-标点符号

本文关键字:标点符号 本地化 CultureInfo 使用 | 更新日期: 2023-09-27 17:52:14

我使用CultureInfo来本地化我的应用程序:

CultureInfo newCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = newCulture;

我遇到了一个与标点符号有关的问题:在我的本地数据库(从中我得到我的应用程序的所有有用的数据)的经度和纬度属性存储点(即45.245135),这是很好的,当CultureInfo设置为en-US。然而,当我切换到我的母语时(在这里点被认为是一千标记),我的地图功能都无法工作。

如果我要改变处理这些值的每一个代码位,那就太困难了,它或多或少无处不在。

有解决这个问题的办法吗?

使用CultureInfo进行本地化-标点符号

当您从String转换到/时,尝试使用InvariantCulture:

  String stLattitude = "45.245135";
  ... 
  // String to Double
  // Culture.InvariantCulture make the conversion Culture independent
  Double lattitude = Double.Parse(stLattitude, Culture.InvariantCulture);
  ...
  // Double To String
  // Culture.InvariantCulture make the conversion Culture independent
  String strLattitude = lattitude.ToString(Culture.InvariantCulture);

仅当您向用户显示最终结果时使用CurrentCulture

  // Showing to user: that's why CurrentCulture (default) is used
  Show(lattitude.ToString());