是否有 .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
(最后一行为空串)
我的申请将被翻译成多种语言。
我可以包含各种支持语言的字符串(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
(最后一行为空串)