【发布时间】:2019-10-10 06:15:05
【问题描述】:
我已将一个项目从 .Net Core 2.2 升级到 .Net Core 3.0。
在尝试修复所有警告和错误后,我现在正试图找到解决此警告的方法:
'IStringLocalizer.WithCulture(CultureInfo)' is obsolete: 'This method is obsolete.
Use `CurrentCulture` and `CurrentUICulture` instead.'
我正在使用它来更改每个登录用户的网站语言。 我有这个实现来改变每个用户的网站文化:
public class CultureLocalizer : ICultureLocalizer
{
private readonly IStringLocalizer localizer;
public CultureLocalizer(IStringLocalizerFactory factory)
{
var type = typeof(Resources.PageResources);
var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName);
localizer = factory.Create("PageResources", assemblyName.Name);
}
// if we have formatted string we can provide arguments
// e.g.: @Localizer.Text("Hello {0}", User.Name)
public LocalizedString Get(string key, params string[] arguments)
{
return arguments == null ? localizer[key] : localizer[key, arguments];
}
public LocalizedString Get(Enum key, params string[] arguments)
{
return arguments == null ? localizer[key.ToString()] : localizer[key.ToString(), arguments];
}
public LocalizedString Get(CultureInfo culture, string key, params string[] arguments)
{
// This is obsolete
return arguments == null ? localizer.WithCulture(culture)[key] : localizer.WithCulture(culture)[key, arguments];
}
public LocalizedString Get(CultureInfo culture, Enum key, params string[] arguments)
{
// This is obsolete
return arguments == null ? localizer.WithCulture(culture)[key.ToString()] : localizer.WithCulture(culture)[key.ToString(), arguments];
}
}
这是一个虚拟类,它只保存.resx 文件用于翻译:
// dummy class for grouping localization resources
public class PageResources
{
}
我在网上找不到任何关于如何解决此警告的内容,除了这个似乎还没有解决方案的 discussion on github。
有没有其他人偶然发现了这个警告并找到了解决方案?
【问题讨论】:
-
你有没有想过这个问题?阅读接受的答案,我不确定这如何解决我认为您所问的问题。就我而言,我需要编写自己的
ViewLocalizer,所以我从微软在 Github 上的实现开始,它仍然有WithCulture方法,所以我想知道我应该如何解决它。
标签: c# asp.net-core .net-core asp.net-core-mvc asp.net-core-3.0