【问题标题】:Detect OS Language & Provide Different Language Dropdown Menu检测操作系统语言并提供不同的语言下拉菜单
【发布时间】:2014-12-12 10:58:08
【问题描述】:

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

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

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

【问题讨论】:

  • 太宽泛了,请参阅Microsoft .NET Internationalization 以获得一些建议。
  • @CodeCaster 通过挑剔问题似乎只是在询问如何检测操作系统语言。
  • 在网上看有Thread.CurrentThread.CurrentCulture.Name,当我运行它时,它给了我“en-GB”,这似乎是正确的。它是否正确?我可以用它来获得“fr-FR”、“de-DE”和“it-IT”。不过网上也看了一下,有的样本有多个表单,每种语言一个,然后根据语言检测选择加载哪个表单,而不是在一个表单中设置不同的变量。哪种方法最好?
  • @BenBlackmore 查看我的回答,我还添加了一个示例,说明您如何可以做到这一点。

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


【解决方案1】:

您可以使用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

【讨论】:

    猜你喜欢
    • 2017-04-10
    • 2010-10-03
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多