よくわからないから・・・という理由で、CultureInfo("ja") を記述すると危険です。
OSの設定に影響されることなく
10000 を \10,000 で表示
日付 を 2007年12月10日 で表示
したい場合、
Imports System.Threading
・・・
'使用するカルチャを設定
Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ja-JP")
'カルチャーにあわせてフォーマット
Dim msg As String = String.Format("{0:C} {1:D} {2}", _
10000, Date.Now, CultureInfo.CurrentCulture.ToString())
'表示
MessageBox.Show(msg)
ってな感じのコードで実現できますね。
結果の MSG の値は
¥10,000 2007年12月10日 ja-JP
になります。
で・・・・・
CultureInfo("ja") にすると、どうなるでしょうか?
残念ながら、例外になって、おちます。
"カルチャ 'ja' はニュートラル カルチャです。フォーマットや解析に使用できません、スレッドの現在のカルチャとして設定することもできません。"
ニュートラル カルチャ ってのは、「日本語圏」というニュアンスですね。
”en” だと、「英語圏」なので、イギリス、アメリカ・・・ といろいろあると・・・
というわけで、フォーマットを使いたい場合は、固有カルチャーをきっちり指定しないとまずいですね。
簡単に CultureInfo("ja") と CultureInfo("ja-JP") の違い |
|
|
CultureInfo("ja") |
CultureInfo("ja-JP") |
CompareInfo |
CompareInfo - 17 |
CompareInfo - 1041 |
DisplayName |
日本語 |
日本語 (日本) |
EnglishName |
Japanese |
Japanese (Japan) |
IsNeutralCulture |
True |
False |
IsReadOnly |
False |
False |
LCID |
17 |
1041 |
Name |
ja |
ja-JP |
NativeName |
日本語 |
日本語 (日本) |
Parent |
|
ja |
TextInfo |
TextInfo - 1041 |
TextInfo - 1041 |
ThreeLetterISOLanguageName |
jpn |
jpn |
ThreeLetterWindowsLanguageName |
JPN |
JPN |
TwoLetterISOLanguageName |
ja |
ja |
ついでに、いろいろ勉強したいひとは、以下を参照
ステップ 7 ハンズオン:
Visual Studio .NET 2005 を使用して、Windows アプリケーション UI の国際化を行う
http://www.microsoft.com/japan/msdn/thisweek/step7/basic2/globalization_vs/