我想将应用程序分发到许多不同的国家,因此我必须将多语言字符串嵌入其资源中。
Visual Studio提供了世界上主流语言的列表,例如日语,英语,中文等。但是,除了这些之外,还有其他三种选择:
它们之间有什么区别?
最佳答案
假设您在这里谈论本地资源(托管资源是另一种野兽)
如果用户运行带有MUI包的英文版Windows,默认语言为“简体中文”,然后打开一个希望通过istream在本地找到日语线程的文件,则这些语言ID在不同时间可能很有用。
在许多情况下,资源加载器没有首选语言(例如CString::LoadString/LoadStringW)。调用者指定了中性标志之一,并希望FindResourceEx能够找到足够接近的东西。如果在资源文件中存在完全匹配(甚至对于中性语言),则返回资源(呃,我猜LoadStringW是中性语言的不好例子,LoadIcon可能更好),如果找不到精确匹配,并且未指定语言,然后开始复杂的回退过程。 Here是XP版本,而here是Vista版本。
有时,保持中立是有好处的,如果您的资源在全局范围内被审查为不具攻击性并且与世界各地的一个本地实体(特别是当地的政党旗帜,请参见纳粹使用的十字记号)不太相似,那么您可以跨所有语言共享资源并节省一些空间。但是一旦团队切换到本地化的人造dll作为默认资源来源,则坚持中立资源就变得更加困难(请参阅AfxSetResourceHandle)。哦,全局审查很昂贵。
引用:
Format for LANGUAGE Statement in .RES Files