当浏览器的语言设置为ZH-TW时,TL;DR:.NET 6拒绝呈现MVC页面. 他说: 当我的ASP.NET Core 6 MVC应用程序呈现一个页面时,如果用户将浏览器语言设置为Chinese (Traditional)(ZH-TW),它将显示Chinese (Simplified)(ZH-CN),并且CurrentCulture名称显示为ZH. 他说: 我有以下语言资源文件: 他说:

  • 字符串.ZH-CHS.resx
  • Strings.ZH-CHT.resx
  • Strings.ZH-cn.resx
  • Strings.ZH-Hans.resx
  • Strings.ZH-Hant.resx
  • Strings.ZH-TW.resx
  • Strings.ZH.resx 他说: (我已判断这些文件中是否有正确的翻译.) 他说: 为了定义在执行语言 Select 时应该使用哪些资源文件,我的Configure方法包含以下代码: 他说:
CultureInfo[] allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
string location = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
var supportedCultures = allCultures.Where(c => (Directory.Exists(Path.Combine(location, c.Name)) || c.Name.StartsWith("ZH-")) && c.LCID != 127).ToList();
 
// ***added here***
 
app.UseRequestLocalization(new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture("en-US"),
    SupportedCultures = supportedCultures,
    SupportedUICultures = supportedCultures
});

他说: 调试时,supportedCultures列表包括具有以下名称的CultureInfo个对象: 他说:

  • ZH
  • ZH-Hans
  • ZH-Hant
  • ZH-Hant-TW   In an effort to avoid the selection defaulting to the first matching language in the list, I have added this code to the ***added here*** line above:  
supportedCultures.Reverse();

他说: 如何让.Net识别浏览器正在请求ZH-TW区域性?

推荐答案

这是另一个ICU问题,因为zh-TWnot an ISO standard name,AllCultures不会包含它,zh-TW不会与zh-Hant-TW匹配.

我可以找到两个解决方案:

  1. 手动添加zh-TW

    supportedCultures.Add(new CultureInfo("zh-TW"));
    
  2. 使用NLS代替ICU,https://stackoverflow.com/a/77192077/6196568

Csharp相关问答推荐

ASP.NET Core 8 Cors标题未显示

利用.NET 8中的AddStandardResilienceDeliveries和AddStandardHedgingDeliveries实现Resiliency

Microsoft. SQLServer. Types(106.1000.6)在try 从用户定义的类型检索值时引发异常

如何修改中间件或其注册以正确使用作用域服务?

为什么在ANTLR4中会出现不匹配的输入错误?""

在FilePath中搜索一个词,并根据First Match从左到右提取文件路径

C#EF Core WHERE IN LINQ FROM LIST WITH.CONTAINS不返回任何内容

Thad.Sept()vs Task.Delay().Wait()

当前的文化决定了错误的文化

集合表达式没有目标类型

如何在VS代码中为C#DotNet配置.json选项以调试内部终端的控制台应用程序

HttpRequestMessage.SetPolicyExecutionContext不会将上下文传递给策略

Blazor:搜索框在第一次搜索时不搜索

如何使用ODP.NET C#设置Oracle会话时间长度限制

我应该为C#12中的主构造函数参数创建私有属性吗?

C#System.Commandline:如何向命令添加参数以便向其传递值?

C#中使用ReadOnlySpan的泛型类型推理

Xamarin.Forms中具有类似AspectFill的图像zoom 的水平滚动视图

使用LibraryImport在多个dll中导入相同的函数

在Visual Studio 2022中查找Xamarin模板时遇到问题