【发布时间】:2017-02-21 22:23:25
【问题描述】:
我尝试在 asp.net core 1.1 中创建 IStringLocalizer 的实现,以便为我的整个项目使用每种语言的单个资源文件(而不是每种语言的每页一个资源文件......)。而且我找不到如何在这里获取请求语言以返回具有良好文化的值。
我可能在实现它的方式上迷路了,但是关于这个主题的文档很差。有人可以告诉我如何在这里获得良好的文化(用户的一个 eq 请求用户语言):
public class CustomLocalizer : IStringLocalizer
{
private readonly CultureInfo _currentCulture;
public IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures)
{
ResourceManager rm = new ResourceManager(typeof(MyResources));
foreach(DictionaryEntry value in rm.GetResourceSet(_currentCulture, false, true))
{
yield return new LocalizedString((string)value.Key, (string)value.Value);
}
}
public CustomLocalizer(CultureInfo culture = null)
{
_currentCulture = culture ?? CultureInfo.DefaultThreadCurrentUICulture;
}
public IStringLocalizer WithCulture(CultureInfo culture)
{
return new CustomLocalizer(culture);
}
LocalizedString IStringLocalizer.this[string name]
{
get
{
ResourceManager rm = new ResourceManager(typeof(MyResources));
return new LocalizedString(name, rm.GetString(name, _currentCulture));
}
}
LocalizedString IStringLocalizer.this[string name, params object[] arguments]
{
get
{
ResourceManager rm = new ResourceManager(typeof(MyResources));
return new LocalizedString(name, rm.GetString(name, _currentCulture));
}
}
}
【问题讨论】:
标签: c# asp.net-mvc localization asp.net-core