Rilevare la lingua con cui è stato installato un sistema

Talvolta può essere necessario rilevare la lingua con cui è stato installato un sistema dal punto di vista sistemistico o sviluppativo. Di seguito alcuni metodi con cui è possibile ricavare tale informazione tramite WMI.

Metodo 1: Query WMI da console

E’ possibile utilizzare la seguente query a riga di comando:

wmic os get locale, oslanguage, codeset

Dove oslanguage identifica la lingua del sistema operativo, mentre locale è l’identificativo della lingua utilizzato dal sistema (ovvero lo standard international numeric abbreviation per una country/region) e il codeset rappresenta la tabella dei caratteri usata dal sistema operativo per tradurre le stringhe nelle diverse lingue.

Di seguito il risultato per un sistema Windows Server 2012 R2 installato in Italiano:

image

Mentre di seguito il risultato per un sistema Windows Server 2012 R2 installato in Inglese con formato ora e valuta in italiano e layout di tastiera in italiano:

image

Per l’interpretazione dei codici numeri restituiti è possibile fare riferimento ai seguenti:

Di seguito ad esempio i valori per un sistema installato in Italiano:

  • CodeSet = 1252 – ANSI Latin 1; Western European (Windows)
  • Locale = 0410 – Italian – Italy
  • OSLanguage = 1040 – Italian – Italy

Di seguito ad esempio i valori per un sistema installato in Inglese con formato ora e valuta in italiano e layout di tastiera in italiano:

  • CodeSet = 1252 – ANSI Latin 1; Western European (Windows)
  • Locale = 0410 – Italian – Italy
  • OSLanguage = 1033 – English – United States

Metodo 2: Query WMI in un’applicazione

E’ possibile ricavare le informazioni relative a CodeSet, Locale e OSLanguage tramite la classe WMI Win32_OperatingSystem eseguendo una query WMI nel codice come illustrato in WMI Queries.

Di seguito un esempio di codice WMI in VB.NET:

Dim query As New System.Management.WqlObjectQuery(“SELECT CodeSet, Locale, OSLanguage FROM Win32_OperatingSystem”)

Using searcher As New System.Management.ManagementObjectSearcher(query)
     Dim item = searcher.Get()(0)
     MsgBox(String.Format(“CodeSet={0} Locale={1} OSLanguage={2}”, item(“CodeSet”), item(“Locale”), item(“OSLanguage”)))
End Using

image

Metodo 3: Query WMI in PowerShell

E’ possibile sfruttare WMI anche in ProwerShell sempre ricorrendo alla classe WMI Win32_OperatingSystem tramite il seguente codice:

$os = Get-WmiObject Win32_OperatingSystem
$os | Select-Object –Property Locale, OSLanguage, CodeSet

image

A partire da PowerShell 3.0 sono stati introdotti anche il cmdlet Get-Culture che permette di ricavare informazioni sulla culture del sistema e Get-UICulture che permette di ricavare informazioni sulla culture dell’interfaccia grafica sistema.