windows - "Neutral"、 "Neutral(Default)"和 "Neutral(Sys. Default)"之间的区别?

标签 windows visual-studio visual-c++ user-interface internationalization

我想将一个应用程序分发到许多不同的国家,所以我必须将多语言字符串嵌入到它的资源中。

Visual Studio 提供了日文、英文、中文等世界主流语言的列表,但除此之外,还有其他三种选择:

  1. "Neutral";

  2. "Neutral(Default)";

  3. "Neutral(Sys. Default)".

它们之间有什么区别?

最佳答案

假设您在这里谈论 native 资源(托管资源是另一种野兽)

如果用户运行的是带有 MUI 包的英文版 Windows,默认语言是简体中文,然后通过 istream 打开一个需要本地日语线程的文件,那么这些语言 ID 在不同的时间可能会有用。 .

很多情况下资源加载器没有首选语言(例如 CString::LoadString/LoadStringW)。调用者指定其中一个中性标志,并希望 FindResourceEx 能找到足够接近的东西。如果资源文件中存在完全匹配(即使对于中性语言),则返回资源(呃,我猜 LoadStringW 是中性语言的一个坏例子,LoadIcon 可能更好),如果找不到完全匹配并且未指定语言然后启动复杂的回退过程。 Here是 XP 版和 here是 Vista 版本。

有时保持中立是值得的,如果你的资源在全局范围内被审查为不具有攻击性并且与属于世界各地某个地方实体的东西不太相似(尤其是地方党旗,请参阅纳粹使用的卐字符号),您可以跨所有语言共享资源并节省一些空间。但是,一旦团队切换到本地化的附属 dll 作为默认资源源(请参阅 AfxSetResourceHandle),坚持使用中性资源就会变得更加困难。哦,全局审查很昂贵。

引用: Format for LANGUAGE Statement in .RES Files

关于windows - "Neutral"、 "Neutral(Default)"和 "Neutral(Sys. Default)"之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043624/

相关文章:

visual-studio - 什么是Microsoft Warbird(在VS2015编译器中)

windows - 如何从命令提示符终止进程及其父进程

python - 用python检测关机事件

python - 将 python 脚本编译为独立程序

node.js - 控制台窗口不再出现在我的 Visual Studio Node 控制台应用程序中

c++ - 使用函数而不是巨大的 if 语句向下转换指针

c# - System.Security.SecurityException : The source was not found, 但无法搜索部分或所有事件日志。无法访问的日志:安全

visual-studio - 测试管理器但没有 TFS 访问权限

c# - VS 2012 没有列出 Microsoft.Office.Interop 程序集,但它可以在 GAC 中找到

visual-c++ - Visual C++ 2010 和 Lapack、Blas 库