tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルプログラムを多言語対応させたい
記事No6646
投稿日: 2007/12/10(Mon) 14:42
投稿者たると
こんにちはいつもお世話になっています。
現在VB2005で日本語版、英語版のWindowsに対応したプログラムを作成しています。
フォームのデザインはプロパティのLanguageとリソースを利用することで作成できたのですが、日本語版と英語版のHTMLHELPを作成したところで止まってしまいました。

chmファイルは英語版と日本語版があるので、プログラム中でLanguageのプロパティを見てどちらのchmファイルを読み込むかという分岐処理をしたいのですが、上手くいきません。

処理としては以下のような動作をしたいと思っています。
これでは当然動きませんでしたが、させたい動作がどういったものかわかりやすいかと思い書き込んでみました。

if Me.Languge = "日本語" then
'日本語のHTMLHelpを読み込む
else Me.Languge = "英語" then
'英語のHTMLHelpを読み込む
end if

どうかご教授宜しくお願いいたします。

[ツリー表示へ]
タイトルRe: プログラムを多言語対応させたい
記事No6653
投稿日: 2007/12/10(Mon) 19:35
投稿者魔界の仮面弁士
> chmファイルは英語版と日本語版があるので、プログラム中でLanguageのプロパティを見てどちらのchmファイルを読み込むかという分岐処理をしたいのですが、上手くいきません。

≪ヒント≫

スタートアップを Main プロシージャに切り替えて、

    Public Shared Sub Main()
        Dim US As New System.Globalization.CultureInfo("en-us")
        System.Threading.Thread.CurrentThread.CurrentUICulture = US
        Application.Run(New Form1())
    End Sub

とすると、Language に「英語(米国)」を指定した場合と同じ結果になります。

[ツリー表示へ]
タイトルRe^2: プログラムを多言語対応させたい
記事No6658
投稿日: 2007/12/11(Tue) 10:07
投稿者たると
魔界の仮面弁士さん、お返事ありがとうございます。
そのようにして言語指定をする方法もあるのですね。
私は

Imports System.Globalization
Imports System.Threading

Public Shared Sub Main()
     Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo_
     .GetCultureInfoByIetfLanguageTag("en")
End Sub

で、日本語OSを使用しながら、英語OS対応用のソフトの確認を行っています。
処理としてはそのまま、上記をif文で処理し

Public Shared Sub Main()
     if Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo_
     .GetCultureInfoByIetfLanguageTag("en") then
       '英語版のヘルプを表示する
     else
         '日本語版のヘルプを表示する
End Sub

としたいのですが、「System.Globalization.CultureInfoおよびSystem.Globalization.CultureInfoに対して定義されていません。」

と表示されてしまい。分岐の処理を書くことができません。
分岐処理をさせるためにはどうしたらよいか、もう少しヒントをいただけないでしょうか?
宜しくお願い致します。

[ツリー表示へ]
タイトルRe^3: プログラムを多言語対応させたい
記事No6659
投稿日: 2007/12/11(Tue) 11:34
投稿者魔界の仮面弁士
> 分岐処理をさせるためにはどうしたらよいか、もう少しヒントをいただけないでしょうか?

With System.Threading.Thread.CurrentThread.CurrentUICulture
    Debug.WriteLine("IetfLanguageTag=" & .IetfLanguageTag)
    Debug.WriteLine("LCID=" & .LCID)
    Debug.WriteLine("Name=" & .Name)
    Debug.WriteLine("NativeName=" & .NativeName)
    Debug.WriteLine("EnglishName=" & .EnglishName)
    Debug.WriteLine("DisplayName=" & .DisplayName)
End With

[ツリー表示へ]
タイトルRe^4: プログラムを多言語対応させたい
記事No6660
投稿日: 2007/12/11(Tue) 13:35
投稿者たると
魔界の仮面弁士さん、お返事ありがとうございます。

With System.Threading.Thread.CurrentThread.CurrentUICulture
    If .Name = "en" Then
         '英語
    Else
         '日本語
    End If
End With

で、使用されているlangugeの判断をする処理を作成することができました。

[ツリー表示へ]