我使用 Visual Studio C#。我需要从文件资源中获取语言 ID 和字符集 ID。我可以从“FileVersionInfo”获取语言:
public static string getFileLang(string file)
{
FileVersionInfo moduleVersionInfo = FileVersionInfo.GetVersionInfo(file);
return moduleVersionInfo.Language;
}
但它返回字符串值,如“English(USA)”。如何以十六进制数获取文件的语言 ID 和字符集 ID?
https://learn.microsoft.com/en-us/windows/win32/menurc/varfileinfo-block
要从您检索的名称(即相关语言的“显示名称”)中获取语言 ID(“LCID”)值,您需要循环遍历系统的已知区域性并测试与
DisplayName
的匹配
每种文化的领域;如果找到,那么 LCID
字段(int
)将是您想要的答案:
public static int getFileLCID(string file)
{
int LCID = 0;
FileVersionInfo moduleVersionInfo = FileVersionInfo.GetVersionInfo(file);
string dispName = moduleVersionInfo.Language;
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
foreach (CultureInfo test in cultures)
{
if (dispName == test.DisplayName) return test.LCID;
}
return 0; // Not found!
}
请注意,您需要在
using System.Globalization;
类的源代码中使用 CultureInfo
指令。