我们正在使用Kendo UI ASP.NET MVC包装器来呈现我们的网格。我已经按照this article中的描述进行了本地化工作,但我遇到的问题是,如果浏览器文化被解析为语言中立(只是语言级别,例如" fr"而不是& #34; fr-FR")本地化不起作用,网格呈现为" en-US"。
在这种情况下,是否有一种简单的方法可以使包装器使用本地化?
我想我可以以某种方式强制文化,在最坏的情况下用额外的资源编译Kendo dll,但我想先问一下。
感谢您的任何指示!
答案 0 :(得分:0)
好的,所以我现在有了一个解决方案 - 我已经制作了一个文化切换器,我用一个围绕网格构建代码的using语句包装。
namespace Kendo.Mvc.UI
{
public class KendoCultureSwitcher : IDisposable
{
private readonly CultureInfo _culture;
private readonly List<string> _cultures = new List<string>()
{
"bg-BG",
"cs-CZ",
"da-DK",
"de-DE",
"es-ES",
"fr-FR",
"it-IT",
"nl-NL",
"pl-PL",
"pt-PT", // Note before pt-BR
"pt-BR",
"ro-RO",
"ru-RU",
"sv-SE",
"tr-TR",
"uk-UA",
"zh-CN"
};
public KendoCultureSwitcher()
{
_culture = CultureInfo.CurrentUICulture;
var currentCultureName = _culture.ToString();
if (!_cultures.Contains(currentCultureName, StringComparer.OrdinalIgnoreCase))
{
var switchCulture = _cultures.FirstOrDefault(c => c.StartsWith(currentCultureName, StringComparison.OrdinalIgnoreCase));
if (switchCulture != null)
{
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(switchCulture);
}
}
}
public void Dispose()
{
if (Thread.CurrentThread.CurrentUICulture != _culture)
{
Thread.CurrentThread.CurrentUICulture = _culture;
}
}
}
}