我有一个小应用程序来更新Active Directory中用户的详细信息。该应用程序在英语中工作正常。但我现在想修改它,开始为法语、意大利语和德语用户使用它。因此,我希望能够检测操作系统语言,然后提供这些语言的现有下拉选项。我可能还应该将选择框和输入框标签翻译成这些语言。
我想一旦我检测到操作系统,我就可以将选择选项设置为变量,即如果语言 = EN,则 select1 = English_Option1...否则如果语言 = FR,则选择1 = French_Option1等
使用 VB.NET/Visual Studio 2012 和面向 .NET 3.5 框架的应用进行操作系统检测的最佳方法是什么?
Thread.CurrentThread.CurrentCulture.Name
获取语言的代码,例如:
- 法语:
fr-FR
- 德语:
de-DE
- 西班牙语:
es-ES
您可能希望在应用程序首次启动时显示"选择语言"表单,但让它自动突出显示操作系统的语言。
所有语言的一个表单就足够了,但是,为每种支持的语言创建一个语言类可能是一个想法。
大多数主要程序(通常是游戏)使用语言包,并引用单词或句子,如@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
。