如何在使用不同 .NET 版本的应用程序中支持计算机上的所有区域性?

How to support all cultures on machine in applications using different .NET versions?

提问人:Suchishma Tata 提问时间:11/14/2023 最后编辑:Denis MichealSuchishma Tata 更新时间:11/15/2023 访问量:53

问:

我有 2 个应用程序,Application1 使用 .NET 4,Application2 使用 .NET 6,我正在尝试使用 获取所有机器支持的区域性,但是在同一台机器上运行的两个应用程序中获取的区域性存在差异,在使用 .NET 4 的 Application1 中,我看到更多的区域性,在使用 .NET 6 的 Application2 中,我看到的区域性更少。但是,我需要 Application1 中支持的所有区域性才能在 Application2 中得到支持。有没有办法实现这一目标?CultureInfo.GetCultures(CultureTypes.AllCultures)

我在 Application2 中使用此逻辑将支持的区域性添加到中,是否有任何方法可以在不使用此获取区域性逻辑的情况下隐式获取所有支持的区域性?RequestLocalizationOptions options.AddSupportedCultures()Program.cs

我尝试添加所需的语言,但我不想使用该解决方案,因为每次需要添加语言时,我都需要修改支持的列表,我想找到一种方法来读取机器上所有支持的区域性,我想知道是否有任何方法可以在不使用此获取区域性逻辑的情况下隐式获取所有支持的区域性?appsettings.json

C# asp.net-core-localization

评论

0赞 JonasH 11/14/2023
你到底想做什么?为什么你期望文化列表永远不会改变?“在计算机上受支持”是什么意思?与 .net 框架相比,区域性列表在 .Net 6 中的行为不同,如 中所述,这可能是您需要处理的问题。CultureTypes.AllCultures
0赞 Ralf 11/14/2023
文化有两个来源。Windows 自己的机制和 ICU 提供的机制是独立于平台的(在 Net Core 世界中)。在不同的系统上,两个来源可以(并且将)有所不同。我已经无法理解您对说“所有文化”的期望。所有文化是什么?对此没有全局定义。如果你需要它在系统之间的传输,那么就不要这样做。您不能指望特定的区域性会存在于不同的系统上。
0赞 Magnus 11/14/2023
出于好奇,你能举一个例子来说明一种文化存在于一种文化中,而另一种文化却不存在吗?
0赞 Suchishma Tata 11/17/2023
@JonasH我知道 .net6 和 .net 框架中的文化列表行为不同,我很好奇是否有办法从 .net 6 应用程序中的 CultureTypes.AllCultures 访问 .net 框架的文化列表,感谢您的回复
0赞 Suchishma Tata 11/17/2023
@Ralf 在我的上下文中,我所说的“所有区域性”是指我从 CultureTypes.AllCultures 获得的区域性列表,我希望在同一系统上运行时支持 .net 6 应用程序中 .net 框架中 CultureTypes.AllCultures 返回的所有区域性

答: 暂无答案