检测OS语言&提供不同的语言下拉菜单

时间:2014-12-12 10:58:08

标签: .net vb.net visual-studio-2012

我有一个小应用程序来更新Active Directory中用户的详细信息。该应用程序在英语中运行良好。但我现在想要修改它以开始将它用于法语,意大利语和德国用户。因此,我希望能够检测操作系统语言,然后提供这些语言的现有下拉选项。我可能也应该翻译选择框&将框标签输入这些语言。

我认为一旦我检测到操作系统,我就可以将选项设置为变量,即如果language = EN,则select1 = English_Option1 ... elseif language = FR,则select1 = French_Option1等

使用VB.NET / Visual Studio 2012进行操作系统检测的最佳方法是什么,应用程序针对.NET 3.5框架?

1 个答案:

答案 0 :(得分:2)

您可以使用Thread.CurrentThread.CurrentCulture.Name获取语言代码,例如:

  • 法语:fr-FR
  • 德语:de-DE
  • 西班牙语:es-ES

您可能希望在应用程序第一次启动时显示“选择语言”表单,但是会自动突出显示操作系统的语言。

所有语言的一种形式应该足够,但是为每种支持的语言创建语言 class 可能是个主意。

大多数主要程序(通常是游戏)使用语言包,并引用@m_Welcome之类的单词或句子;这些变量完全取决于操作系统的语言。

你可能想要类似的东西:

Private m_Start As String
Private m_helloMessage As String 'We obviously want to declare this first so it can be accessed.

Private Sub SetLanguagePack()
    Select Case (Thread.CurrentThread.CurrentCulture.Name)
        Case "fr-FR"
            m_helloMessage = "Bonjour là, accueillir." 'Hello there, welcome.
            m_Start = "Cliquez ici pour commencer." 'Click here to start.
            Return
        Case "de-DE"
            m_helloMessage = "Hallo, willkommen."
            m_Start = "Klicken Sie hier um zu starten"
            Return
    End Select
    'If the OS' language isn't supported, then default to English.
    m_helloMessage = "Hello there, welcome."
    m_Start = "Click here to start."
End Sub

请注意,您还需要使用Imports System.Threading导入System.Threading命名空间才能访问Thread.CurrentThread.CurrentCulture.Name