xml*_*lmx 3 windows user-interface internationalization visual-studio visual-c++
我想将应用程序分发到许多不同的国家,因此我必须将多语言字符串嵌入到其资源中。
Visual Studio 提供了世界主流语言的列表,如日语、英语、中文等,但除此之外,还有其他三种选择:
“中性的”;
“中性(默认)”;
“中性(系统。默认)”。
它们之间有什么区别?
假设您在这里谈论本机资源(托管资源是另一种野兽)
如果用户运行带有 MUI 包的英文版 Windows,默认语言为简体中文,然后通过istream打开需要本地日语线程的文件,则这些语言 ID 在不同时间可能很有用。
在很多情况下,资源加载器没有首选语言(例如 CString::LoadString/LoadStringW)。调用者指定其中一个中性标志,并希望 FindResourceEx 能找到足够接近的东西。如果资源文件中有完全匹配(即使是中性语言),则返回资源(呃,我猜 LoadStringW 是中性语言的一个坏例子,LoadIcon 可能更好),如果没有找到完全匹配并且未指定语言,然后启动复杂的回退过程。这里是 XP 版,这里是 Vista 版。
有时保持中立是值得的,如果您的资源在全球范围内被审查为不具有攻击性,并且与属于世界各地当地实体之一的东西不太相似(尤其是当地党旗,请参阅纳粹使用的卐字符号),您可以跨所有语言共享资源并节省一些空间。但是,一旦团队切换到本地化的卫星 dll 作为默认资源源(请参阅 AfxSetResourceHandle),坚持使用中性资源就会变得更加困难。哦,全球审查是昂贵的。