c# - 为什么“de-IT”是本地有效的 CultureInfo 而不是生产?
问题描述
我正在验证一种新文化,国家/地区部分来自用户选择,需要检查,所以我使用以下代码:
string language = submittedCulture.TwoLetterISOLanguageName; // de
string countryCode = GetIso3166Country(model.Country); // submitted Italy and countryCode IT
string cultureString = string.IsNullOrEmpty(countryCode)
? language
: $"{language}-{countryCode}";
bool validCulture = cultureString.TryParseCultureInfo(out CultureInfo newCulture);
这TryParseCultureInfo
是一个简单的扩展方法,使用CultureInfo.GetCultureInfo
:
public static bool TryParseCultureInfo(this string stringValue, out CultureInfo value)
{
value = null;
if (stringValue == null)
{
return false;
}
try
{
value = CultureInfo.GetCultureInfo(stringValue);
return true;
}
catch (CultureNotFoundException)
{
return false;
}
}
如果我在本地测试它,一切都会按预期工作。我得到了一种文化"de-IT"
,因此验证成功,我将解析重定向 URL 作为下一步。但是在生产(实际上是 UAT)上它失败了,不支持文化。
是否需要安装每种文化?如果我尝试“it-IT”,它也适用于生产,所以看起来问题不是意大利,而是“de-IT”不存在。为什么行为如此不同,是什么原因造成的,我该怎么做才能在本地和生产中获得相同的行为?
是否可以选择CultureAndRegionInfoBuilder
在应用启动时创建这种文化,或者最好的解决方案是什么?编辑:我试过了,但你需要管理权限,这是不可能的。
那么,即使(尚未)支持这种文化,规避这个问题的最佳方法是什么?
解决方案
推荐阅读
- html - 继承模板时以编程方式更改 html 标记
- highcharts - 根据 x 和 y 开始、结束值为每个区域填充颜色
- r - 使用 grid.grab() 在 R 中保存输出图不起作用
- linux-kernel - kzalloc 整数数组 vs kmalloc 和 for 循环中的零元素
- javascript - 我可以为这个 SVG 旋钮设置动画吗?
- dart - 为什么飞镖允许非未来返回异步?
- rest - RESTful 服务。不同的响应和请求模式
- java - 以降序对列表模型进行排序 Java
- jupyter-notebook - 从 ananconda 提示符运行 juptyer 笔记本时出现以下错误
- c++ - C++ 函数重载 char 调用而不是 double