- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我将一个资源的所有翻译都放在一个可执行文件中。有效地:
STRINGTABLE
LANGUAGE LANG_ENGLISH, LANG_ENGLISH_US
BEGIN
IDSTR_HELLO "Hello"
END
STRINGTABLE
LANGUAGE LANG_SPANISH, LANG_SPANISH_PANAMA
BEGIN
IDSTR_HELLO "Hola"
END
// ... more languages ...
我正在尝试使用 FindResourceEx 找到(最)合适的一个给了一个 LANGID。 LANGID 由语言和子语言组成。例如,我可能拥有巴拿马使用的西类牙语 (LANGUAGE_SPANISH, SUBLANG_SPANISH_PANAMA
) 和墨西哥使用的西类牙语 (LANGUAGE_SPANISH, SUBLANG_SPANISH_MEXICAN
) 的资源。当所需的 langid 与其中一个资源完全匹配时,一切都很好。
如果我使用 FindResourceEx 尝试查找第三种西类牙语的资源,比如 (LANG_SPANISH, SUBLANG_SPANISH_COSTA_RICA
),查找将失败,因为我没有专门针对哥斯达黎加的资源.在这种情况下,我想“回退”到主要语言的任何风格。
我读到一些建议将子语言设置为 SUBLANG_NEUTRAL
应该匹配具有相同主要语言的任何资源:
HRSRC handle = FindResourceEx(NULL, RT_STRING, MAKEINTRESOURCE(IDSTR_HELLO), langid);
if (handle == NULL) {
fallback_langid = MAKELANGID(PRIMARYLANGID(langid), SUBLANG_NEUTRAL);
handle = FindResourceEx(NULL, RT_STRING, MAKEINTRESOURCE(IDSTR_HELLO), fallback_langid);
}
不幸的是,这不起作用。也不会将子语言设置为 SUBLANG_DEFAULT
。 (似乎中性和默认子语言只有在主要语言也是中性或默认时才有意义。)
我有哪些选择?有没有办法枚举资源并自己比较 LANGID 中的主要语言?我一直在查看各种类似 EnumResource 的函数,但其中大多数似乎都特定于使用 MUI。我有意不使用 MUI,出于各种原因,包括将所有翻译都放在一个二进制文件中的要求。
最佳答案
如果您不能使用 EnumResourceLanguages,我会感到很惊讶没有 MUI 文件。当然,如果一切都失败了,也许您可以为每种主要语言创建一个包含默认子语言的表。或者您的表可以为每个主要/子语言对设置一个默认值。您可以将此表存储在您的代码或自定义资源中。
关于c++ - FindResourceEx 和后备语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28867224/
我将一个资源的所有翻译都放在一个可执行文件中。有效地: STRINGTABLE LANGUAGE LANG_ENGLISH, LANG_ENGLISH_US BEGIN IDSTR_HELLO
我正在使用 Windows API 用 C 语言开发多语言 Win32 程序。它将允许用户选择界面的语言。根据MSDN documentation , 我需要使用 FindResourceEx() +
我是一名优秀的程序员,十分优秀!