1

我正在使用 .resx 资源文件进行全球化项目。如果用户选择的语言没有 resx 文件,我有一些后备逻辑。有没有办法找到与提供的文化具有相同语言但不同地区的文化?

4

2 回答 2

3

特定于一种语言而不是特定文化的资源应该在它们自己的文件中,例如,如果您有以下资源文件:

Resources.resx
Resources.en.resx
Resources.fr.resx
Resources.fr-FR.resx

(中的语言不变字符串、中的Resources.resx法语字符串Resources.fr.resx和中的特定于法国的法语字符串Resources.fr-FR.resx

并且用户的文化是fr-CA(加拿大法语),那么它将按以下顺序使用以下文件中的资源:

Resources.fr.resx
Resources.resx

这是默认的资源行为。

于 2013-08-20T14:12:52.990 回答
1

如果我理解正确,那么您正在寻找具有相同语言的文化

var culture = new CultureInfo("fr");
var sameLanguageCultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures)
    .Where(x => x.ThreeLetterISOLanguageName == culture.ThreeLetterISOLanguageName && x.Name != culture.Name)
    .ToArray();

foreach (var c in sameLanguageCultures)
{
    Console.WriteLine(c.Name);
}

这将输出

FR-FR
FR-BE
FR-CA
FR-CH
FR-LU
FR-MC

如果我错了,请说清楚。

于 2013-08-20T14:21:11.797 回答