Jon*_*nas 5 c++ winapi internationalization
有没有在Win32 API中的一些方法来转换一个三个字母的语言代码,通过返回GetLocaleInfo()与LOCALE_SABBREVLANGNAME指定到相应的LANGID或LCID?也就是说,与GetLocaleInfo()正常情况"反向"进行?
我要做的是解析资源DLL正在使用什么样的语言,到目前为止,没有涉及DLL的任何内容,使用格式的dll名称nameLNG.dll,其中LNG是三个字母的语言代码,似乎假设存在这样的函数,这是最简单的方法.
如果这不容易做到,我想Plan B就是给我们的语言DLL一个版本信息资源,在那里指定他们各自的文化,然后在应用程序中,阅读他们使用的文化.
不幸的是,没有直接的 Win32 API 可以为您提供包含 3 个字母缩写的 LANGID。
看来CLanguageSupport今天是你的朋友了:-) 它已经实现了你的 B 计划,根据版本信息资源的内容查找 LANGID。
您正在寻找的代码片段是 int 函数
LANGID CLanguageSupport::GetLangIdFromFile(LPCTSTR pszFilename)
Run Code Online (Sandbox Code Playgroud)
当然,缺点是版本信息和 DLL 名称可能不匹配。但在测试过程中你很快就会发现它。如果您让appTranslator等工具为您创建 DLL,那么您一定是安全的。