J'ai mis à niveau un projet de .Net Core 2.2 vers .Net Core 3.0.
Après avoir essayé de corriger tous les avertissements et erreurs, j'essaie maintenant de financer une solution à cet avertissement:
'IStringLocalizer.WithCulture(CultureInfo)' is obsolete: 'This method is obsolete.
Use `CurrentCulture` and `CurrentUICulture` instead.'
J'utilise ceci pour changer la langue du site Web par l'utilisateur connecté. J'ai cette implémentation pour changer la culture du site Web par utilisateur:
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];
}
}
Et ceci est la classe factice qui ne contient que le .resx
fichier pour les traductions:
// dummy class for grouping localization resources
public class PageResources
{
}
Je n'ai rien trouvé sur le Web qui se réfère à la façon de résoudre cet avertissement, à l'exception de cette discussion sur github qui ne semble pas encore avoir de solution.
Quelqu'un d'autre est-il tombé sur cet avertissement et y a-t-il trouvé une solution?
la source
CurrentUICulture
car ilCurrentCulture
semble n'avoir aucun effetStringLocalizer
. Si vous utilisez dans une application Web, vous pouvez utiliserservices.Configure<RequestLocalizationOptions>
pour ajuster le comportement pour détecter la langue de la demande de l'utilisateur actuel, mais soyez conscient des valeurs par défaut de Microsoft - en-têtes, cookies, peu importe - pour la détection automatique de la langue. Pour cette raison, je préfère m'adapterRequestCultureProviders
à mon propre mécanisme connu pour détecter la langue de l'utilisateur.