如何在 Visual C 中确定用户的语言?
我一直在msdn上搜索,没有直接的答案。
有没有办法简单地获取用户的语言?我现在不想加载任何资源或任何东西,我只想获取他们的语言。有没有简单的方法可以做到这一点?
我正在使用 Visual C++,并且我没有使用 MFC 或类似的东西。
I've been searching msdn forever now without a straight answer.
Is there a way to simply get the user's language? I don't want to load any resources or anything at this point, I just want to get their language. Is there ANY simple way to do this?
I'm using visual C++,and I'm not using MFC or anything like that.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
GetUserDefaultUILanguage 怎么样?
警告:切勿将用户的区域设置误认为是他们的UI 语言。那里已经有足够多的损坏的应用程序了。
What about GetUserDefaultUILanguage?
Word of caution: Never mistake the user's locale for their UI language. There are already enough broken applications out there.
GetUserDefaultLangID
可能就是你所追求的。话又说回来,您可能真的在获取用户首选UILanguages
。GetUserDefaultLangID
may be what you're after. Then again, you may really be afterGetUserPreferredUILanguages
.GetUserDefaultLCID 或 GetUserDefaultLocaleName 将返回 LCID/区域设置名称用户的默认区域设置。
然后,您可以使用 GetLocaleInfo 或在 Vista 上 GetLocaleInfoEx 获取语言环境的显示名称(
LOCALE_SENGLISHDISPLAYNAME
表示英文名称,LOCALE_SLOCALIZEDDISPLAYNAME
表示本地化名称)。GetUserDefaultLCID or GetUserDefaultLocaleName on Vista will return the LCID/locale name of the user's default locale.
You can then use GetLocaleInfo or GetLocaleInfoEx on Vista to get the display name of the locale (either
LOCALE_SENGLISHDISPLAYNAME
for the english name orLOCALE_SLOCALIZEDDISPLAYNAME
for the localized name).这里是调用下面的API的方法。
LCID lcinfo = GetUserDefaultLCID();
GetUserDefaultLCID 函数检索用户默认区域设置标识符。在单用户系统上,返回值与 GetSystemDefaultLCID 返回的值相同。
LCID 是 32 位值的 Win32 区域设置标识符,将语言和排序标识符与预定义的区域设置标识符相结合。
LOCALE_SYSTEM_DEFAULT:- 标识系统默认区域设置;在更高版本的 Windows 上,可以通过控制面板的默认语言设置进行更改。
LOCALE_USER_DEFAULT:- 标识当前用户的区域设置;可以通过控制面板默认区域设置进行更改。
应用程序可以通过分别调用 GetSystemDefaultLCID() 和 GetUserDefaultLCID() 函数来检索这两个预定义的区域设置标识符。同时,线程区域设置是在应用程序线程的基础上维护的,并使用 SetThreadLocale() 和 GetThreadLocale() 来访问该值。
注意:最初,线程区域设置的值设置为用户默认区域设置的值。
Here is the way by calling below API.
LCID lcinfo = GetUserDefaultLCID();
The GetUserDefaultLCID function retrieves the user default locale identifier. On single-user systems, the return value is the same as that returned by GetSystemDefaultLCID.
LCID is the Win32 locale identifier of 32-bit value, combining language and sorting identifiers with predefined locale identifiers are.
LOCALE_SYSTEM_DEFAULT :- which identifies the system default locale; on later versions of Windows, it can be changed via the Control Panel's Default Language setting.
LOCALE_USER_DEFAULT :- which identifies the locale of the current user; it can be changed via the Control Panel default locale setting.
An application can retrieve these two predefined locale identifiers by calling the GetSystemDefaultLCID() and GetUserDefaultLCID() functions, respectively. While, The Thread Locale is maintained on application thread basis and uses SetThreadLocale() and GetThreadLocale() to access the value.
Note: Initially, the value of the thread locale is set to the value of the user's default locale.