Atualizei um projeto do .Net Core 2.2 para o .Net Core 3.0.
Depois de tentar corrigir todos os avisos e erros, agora estou tentando financiar uma solução para este aviso:
'IStringLocalizer.WithCulture(CultureInfo)' is obsolete: 'This method is obsolete.
Use `CurrentCulture` and `CurrentUICulture` instead.'
Estou usando isso para alterar o idioma do site por usuário conectado. Eu tenho essa implementação para alterar a cultura do site por usuário:
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];
}
}
E esta é a classe dummy que apenas contém o .resx
arquivo para as traduções:
// dummy class for grouping localization resources
public class PageResources
{
}
Não consegui encontrar nada na web que se refira a como resolver esse aviso, exceto nesta discussão no github que parece não ter solução ainda.
Alguém mais se deparou com esse aviso e encontrou uma solução para ele?
fonte
CurrentUICulture
porqueCurrentCulture
parece não ter efeitoStringLocalizer
. Se estiver usando em um aplicativo Web, você podeservices.Configure<RequestLocalizationOptions>
ajustar o comportamento para detectar o idioma de solicitação do usuário atual, mas esteja ciente dos padrões da Microsoft (cabeçalhos, cookies, o que for) para detecção automática de idioma. Por esse motivo, prefiro me ajustarRequestCultureProviders
ao meu próprio mecanismo conhecido para detectar o idioma do usuário.