什么是语言中立,用户默认LANGID和系统默认LANGID?

什么是语言中立,用户默认LANGID和系统默认LANGID?

问题描述:

从MSDN有关FormatMessage功能:什么是语言中立,用户默认LANGID和系统默认LANGID?

如果在零传递,FormatMessage会查找LANGIDs在 下列顺序的消息:

  • 中性语言
  • 主题LANGID,基于线程的语言环境值
  • 用户默认LANGID,基于用户的默认语言环境值
  • 系统默认LANGID,基于系统默认区域值
  • 美国英语

但零是中性语言已经,因为值为语言中立为0 ...

LCID lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL); // 0 

什么是语言中和?任何电脑都一样吗?如果“是”,那么它是en-US

又是什么系统默认LANGID?它与屏幕上的相同吗?

enter image description here

而且什么是用户默认LANGID?这三个本地化之间有什么区别?它们的值存储在Windows操作系统设置中的位置?

+0

相关/可能的重复:[什么'语言中立'是关于MAKELANGID?](http://*.com/questions/3234736/what-does-language-neutral-mean-with-regard-to -makelangid) – NathanOliver

+0

我没有在你的链接中看到我的问题上的明确ansewer。零(即0)与LCID lang = MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL)相同;即,零变量是“语言中立”。这三个本地化之间的区别是什么?他们的价值存储在哪里? –

+0

Opps。抱歉。我实际上正在查看从该答案到[本页]的链接(https://msdn.microsoft.com/en-us/library/ms534732(VS.85).aspx),其中有:*类型:LANGID 可选。指定要使用的语言的十六位值。默认值是LANG_NEUTRAL,这是用户的默认语言。* – NathanOliver

如果说语言中立的代替中性语言为的FormatMessage MSDN文档可能会更容易理解。 Windows MUI资源可以是语言特定的或语言中立的(您可以了解有关此主题here的更多信息)。使用dwLanguageId=0调用FormatMessage会告诉Windows尝试从语言中立资源中加载给定的dwMessageID的字符串。如果该字符串不存在于与语言无关的资源中,Windows会尝试使用LANGID(线程缺省值,用户缺省值,系统缺省值1033)的记录顺序从语言特定的资源加载该字符串。这有点不寻常,因为不考虑进程默认的LANGID。

用户默认 LANGID是你从呼叫GetUserDefaultUILanguage回来。您可以在控制面板中更改它(对于Windows 8.1:控制面板\时钟,语言和区域\语言)。 GetSystemDefaultUILanguage返回系统默认值 LANGID。我希望您可以在您发布的屏幕上更改它,但我不确定上部或下部按钮是否正确。恐怕我不知道这些设置的存储位置。

+0

感谢您的答复,** Jenszcz **。我现在了解它。即使我将我在屏幕上指向的设置切换到英语(美国)并重新加载我的电脑,“GetUserDefaultUILanguage”和“GetSystemDefaultUILanguage”始终会为我的电脑返回“1049”。 –

+0

@AndreyBushman,您可能需要使用您发布的屏幕上的上部按钮来更改_system default_ locale(对不起,我无法正确读取西里尔文)。我会尝试自己,但目前我无法重新启动机器...。可能您应该首先更改_user default_语言:[本文](https://msdn.microsoft.com/en-us/library/windows/desktop/dd374098(v=vs.85).aspx)有更多信息系统默认和用户默认语言。不幸的是,它没有俄文翻译,可以帮助您在控制面板中找到合适的位置。 :-( – Jenszcz