Use of Language IDs on Windows is deprecated with capital letters and exclamation marks, for many reasons outlined below.
This patch replaces our (internal to Win32 IME only) usages of Language IDs with ISO-639 strings like "zh" for Chinese.
Microsoft's words of warning:
// ** DEPRECATED ** DEPRECATED ** DEPRECATED ** DEPRECATED ** DEPRECATED ** // // DEPRECATED: The Language ID concept is deprecated, please use // Locale Names instead, eg: "en" instead of a LANGID like 0x09. // See the documentation for GetLocaleInfoEx. // // Note that the named locale APIs (eg GetLocaleInfoEx) are preferred. // // WARNING: Not all locales/languages have unique Language IDs // // The following two combinations of primary language ID and // sublanguage ID have special semantics: // // Primary Language ID Sublanguage ID Result // ------------------- --------------- ------------------------ // LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral // LANG_NEUTRAL SUBLANG_DEFAULT User default language // LANG_NEUTRAL SUBLANG_SYS_DEFAULT System default language // LANG_INVARIANT SUBLANG_NEUTRAL Invariant locale // // This concept is deprecated. It is strongly recommended that // applications test for locale names instead of Language IDs / LCIDs. // // Primary language IDs. // // WARNING: This pattern is broken and not followed for all languages. // Serbian, Bosnian & Croatian are a few examples. // // WARNING: There are > 6000 human languages. The PRIMARYLANGID construct // cannot support all languages your application may encounter. // Please use Language Names, such as "en". // // WARNING: Some languages may have more than one PRIMARYLANGID. Please // use Locale Names, such as "en-FJ". // // WARNING: Some languages do not have assigned LANGIDs. Please use // Locale Names, such as "tlh-Piqd". // // It is recommended that applications test for locale names or actual LCIDs. // // Note that the LANG, SUBLANG construction is not always consistent. // The named locale APIs (eg GetLocaleInfoEx) are recommended. // // ** DEPRECATED ** DEPRECATED ** DEPRECATED ** DEPRECATED ** DEPRECATED **