NLS(National Language Support)
Background(背景)
Data Type(数据类型)
typedef WORD LANGID;
typedef DWORD LCID;
typedef DWORD LCTYPE;
Usage(使用)
Each locale has a unique identifier, a 32-bit value that consists of a language identifier and a sort order identifier. The locale identifier is a standard international numeric abbreviation and has the components necessary to uniquely identify one of the installed operating system-defined locales.
The following illustration shows the format of the bits in a locale identifier.
+-------------+---------+-------------------------+
| Reserved | Sort ID | Language ID |
+-------------+---------+-------------------------+
31 20 19 16 15 0 bit
The following illustration shows the format of the bits in a language identifier.
+-------------------------+-------------------------+
| SubLanguage ID | Primary Language ID |
+-------------------------+-------------------------+
15 10 9 0 bit
Get LCID(locale indentifier)
LCID GetThreadLocale(void);
BOOL SetThreadLocale ( LCID Locale );
Compose LCID
DWORD MAKELCID(
WORD wLanguageID,
WORD wSortID
);
for sort order identifier, please refer to
link.
Compose LANGID
WORD MAKELANGID(
USHORT usPrimaryLanguage,
USHORT usSubLanguage
);
for languange identifier constants and strings, please refer to link
Example:
SetThreadLocale(MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_GERMAN_PHONE_BOOK));
Extract Sort Identifier
WORD SORTIDFROMLCID(
LCID lcid
);
Extract Language Identifer
WORD LANGIDFROMLCID(
LCID lcid
);
Extract Primary language identfier
WORD PRIMARYLANGID(
WORD lgid
);
Extract a sublanguage identifier
WORD SUBLANGID(
WORD lgid
);