如何在.NET中获取本地化的标点规则?

时间:2012-05-25 05:40:30

标签: .net internationalization

.NET Framework具有各种类来处理特定于文化的问题,例如数字或日期格式。我想知道标点符号是否有这样的东西。

例如,在英语中,:就位于

之后的单词之后
  

示例:

然而,在法语中,它将是

  

例如:

大多数欧洲语言使用.来标记句子的结尾。但在中文中,它是。对于可能因语言而异的引用字符也是如此。我很希望在TextInfo类或System.Globalization命名空间中找到一些东西,但没有运气。

所以我想知道.NET Framework中是否存在这样的东西,或者是否有某个第三方库隐藏在处理这类问题的地方。我找不到任何东西。我正在使用C#4.0,但我想.NET中支持的所有语言的问题都是一样的。

仅供参考,当我想显示一些与文化无关的字符串,然后显示一些数字信息时,我遇到了这个问题,如下所示:

string.Format("{0}: {1}", this.nameOfAGuy, this.quantityAssociatedWithTheGuy);

英语不错,但不是法语。

1 个答案:

答案 0 :(得分:3)

System.Globalization命名空间不包含标点符号规则。标点符号确实是语言规则的一部分(与语法一起),而全球化命名空间更多地是关于国家标准。

我不知道它是否有多大帮助,但您展示的示例可以通过定期本地化来解决。您可以 - 并且应该 - 在资源中包含格式字符串(显然只是用于构造显示文本的字符串),这样本地化程序不仅可以对标点符号进行更改,还可以对必要的其他任何内容进行更改(另一个示例是子串的排序,在某些语言中可能需要颠倒。)

string.Format(MyResources.FormatNameAndAssociatedQuantity, this.nameOfAGuy, this.quantityAssociatedWithTheGuy);

此字符串的英文版本为"{0}: {1}"及其法语本地化"{0} : {1}"(冒号前有空格)。