对一个产品进行本地化不仅仅是翻译文本信息,该产品还必须支持本国的惯例和数字格式。为了使用不同格式的日期、货币、及数值和分隔符,必须了解 Visual Basic 是如何区分系统区域和代码区域的。
系统区域是应用程序用户的区域—它是用户输入和输出的参照,是通过设置操作系统的控制面板实现的。在 Visual Basic 中 code locale 总是英语/美国而不考虑用的是哪一国际版本。代码区域决定编程语言和所有与区域有关的设置。
在 Visual Basic 中不要把日期当成字符串输入。应以 # 月/日/年 # 的格式输入日期以确保能被任何系统区域识别。由于 Visual Basic 只允许英语/美国作为编程的区域,因此无论应用程序在哪里运行,日期都是一样的。
例如,在输入对话框中输入 8/2/97,
CDate ("8/2/97")
根据不同的系统区域返回以下结果:
操作系统 | 输出 |
法语/法国 | 08/02/97 (= 1997 年 2 月 8 日) |
英语/美国 | 8/2/97 (= 1997 年 8 月 2 日) |
但如果在代码中输入 8/2/97,
CDate (#8/2/97#)
根据不同的系统区域返回以下结果:
操作系统 | 输出 |
法语/法国 | 02/08/97 (= 1997 年 8 月 2 日) |
英语/美国. | 8/2/97 (= 1997 年 8 月 2 日) |
如果在法国输入 8/2/97,应用程序将解释为 1997 年 2 月 8 日,这是因为在法国日期格式为日/月/年。而在美国输入相同的字符串,应用程序就知道该日期为 1997 年 8 月 2 日,因为日期的格式为月/日/年。
避免在代码中按字符串输入货币。以下代码只能运行于把美元符号 ($) 当作货币符号的区域。
Money = "$1.22"
NewMoney = CCur(Money)
如果本代码示例运行于法语/法国区域,此时“F”代表货币符号,Visual Basic 将产生一条错误信息“类型不匹配”,这是因为 $ 不被本国当成货币符号。此时应只简单地使用数字,如下例所示。由于 Visual Basic 的区域总是英语/美国,因此使用句号作为小数点。以下代码将不考虑区域因而能正确执行。
Money = 1.22
NewMoney = CCur(Money)
在美国,句号 (.) 被作为小数点。但在一些欧洲国家/地区,小数点是逗号 (,)。类似地,美国把逗号作为分隔小数点左边每三位的千分位符,而一些欧洲国家/地区使用空格实现此功能。下表列出了不同数字格式的一些例子。
国家/地区 | 数字格式 |
美国 | 1,234,567.89 1,234.56 .123 |
法国 | 1 234 567,89 1 234,56 0,123 |
意大利 | 1.234.567,89 1.234,56 0,123 |
注意 在Visual Basic 中函数 Str 和 Val 总是把句号当成小数点。但这在大多数区域中是不适用的。因此应该使用 CStr, CDbl, CSng, CInt 和 CLng 函数把其它数据类型转换为需要的数据类型。这些函数通过系统区域来决定小数点。
详细信息 关于 Print 和 Format 函数的详细信息请参阅本章后面的“区域识别函数”。关于函数“CStr 函数”,“CDbl 函数”,“CSng 函数”,“CInt 函数”,“CLng 函数”,“CDate 函数”和“CCur 函数”,请参阅《语言参考》。也可参阅“变量、常数和数据类型”。