sono effettivamente strettamente correlati, ma non sono esattamente la stessa cosa.
Secondo the documentation linked by Ankur:
il parametro LanguageID
specifica l'ID della lingua (gli stessi valori sono utilizzati come in Microsoft Win32 LANGID
valori).
valore A LANGID fa parte di un valore Win32 LCID. Si può vedere questo studiando the documentation for LCIDs:
Ogni locale ha un identificatore univoco, un valore a 32 bit che consiste di un identificatore di linguaggio e un identificatore ordinamento.
Quindi i due valori non sono completamente intercambiabili. Variando l'identificatore dell'ordine di ordinamento (l'altra parte di un valore LCID), è possibile ritrovarsi con più valori LCID che rappresentano tutti la stessa lingua (cioè, hanno lo stesso LANGID).
Trattare i due come equivalenti potrebbe funzionare la maggior parte del tempo (il che spiega i risultati dell'ispezione visiva), ma potrebbe anche interrompersi. Vorrei consigliare di non basarsi su ipotesi e di fare il lavoro aggiuntivo necessario per garantire coerenza con la documentazione e il codice è robusto.
Le intestazioni SDK Win32 forniscono una manciata di macro per aiutarti a interconvertire tra LCID e LANGID. Puoi cercare questi nei titoli e convertirli in funzioni di supporto C#. Quelli a cui è interessato qui sono:
Il MAKELCID
macro accetta un identificativo della lingua (LANGID) e un identificatore ordinamento, e li combina per generare un LCID. Poiché non ti interessa l'identificatore dell'ordine di ordinamento, puoi utilizzare SORT_DEFAULT
per indicare l'ordinamento predefinito per quella lingua.
LANGIDFROMLCID
macro, che estrae un identificatore di lingua (LANGID) da un valore LCID.
L'utilizzo di una di queste funzioni di supporto garantisce l'ottenimento di risultati validi quando si chiama una delle API NLS che accettano un parametro LCID.
fonte
2013-03-15 08:54:10
Secondato. [USB LANGIDs] (http://www.usb.org/developers/docs/USB_LANGIDs.pdf) sembra accoppiarsi con [ID impostazioni internazionali assegnato da Microsoft] (http://msdn.microsoft.com/en-us/ goglobal/bb964664.aspx). –
Esse * sembrano * da accoppiare, ma la relazione effettiva è un po 'più complicata di così. Se si fa affidamento sul fatto che siano uguali, il codice funzionerà la maggior parte del tempo ma potrebbe non riuscire in alcuni casi. Vedi la mia risposta per maggiori dettagli. (cc @PeterHuene) –