是否有 .net 函数来枚举语言后备文件扩展名

Is there a .net function to enumerate the language fallback file extensions

我的申请将被翻译成多种语言。

我可以包含各种支持语言的字符串(strings.fr-BE.resx、strings.nl.resx 等)。

我还有一些外部文件(myfile.nl.txt 等)也需要以相同的方式获取,包括找不到时的回退。

显然,我可以编写一个相当简单的函数来从所选语言 (MyFile.fr-BE.tx -> MyFile.fr.txt -> MyFile.txt),但想知道 .net 框架是否公开了此机制的任何部分,因此我可以重新使用现有约定。

没有我知道的内置内容,但是一旦您知道 Parent property of CultureInfo:

就很容易构建
public static class CultureInfoExtensions
{
    public static IEnumerable<CultureInfo> WithParents(this CultureInfo culture)
    {
        while (true)
        {
            yield return culture;
            if (culture.Parent == culture) yield break;
            culture = culture.Parent;
        }

    }
}

和测试:

var test = new CultureInfo("fr-BE");
foreach(var culture in test.WithParents())
{
    Console.WriteLine(culture);
}

产量:

    fr-BE
    fr

(最后一行为空串)