文件资源中的语言 ID

问题描述 投票:0回答:1

我使用 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

c# winapi
1个回答
0
投票

要从您检索的名称(即相关语言的“显示名称”)中获取语言 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
指令。

© www.soinside.com 2019 - 2024. All rights reserved.