Saya telah memutakhirkan proyek dari .Net Core 2.2 ke .Net Core 3.0.
Setelah mencoba memperbaiki semua peringatan dan kesalahan, saya sekarang mencoba untuk mendanai solusi untuk peringatan ini:
'IStringLocalizer.WithCulture(CultureInfo)' is obsolete: 'This method is obsolete.
Use `CurrentCulture` and `CurrentUICulture` instead.'
Saya menggunakan ini untuk mengubah bahasa situs web per pengguna yang masuk. Saya memiliki implementasi ini untuk mengubah budaya situs web per pengguna:
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];
}
}
Dan ini adalah kelas dummy yang hanya menampung .resx
file untuk terjemahan:
// dummy class for grouping localization resources
public class PageResources
{
}
Saya tidak dapat menemukan apa pun di web yang merujuk pada cara mengatasi peringatan ini kecuali untuk diskusi tentang github yang tampaknya belum memiliki solusi.
Adakah orang lain yang menemukan peringatan ini dan menemukan solusi untuknya?
sumber
CurrentUICulture
karenaCurrentCulture
tampaknya tidak berpengaruhStringLocalizer
. Jika menggunakan dalam aplikasi web, Anda dapat menggunakanservices.Configure<RequestLocalizationOptions>
untuk menyesuaikan perilaku untuk mendeteksi bahasa permintaan pengguna saat ini, tetapi perhatikan standar Microsoft - header, cookie, apa pun - untuk deteksi bahasa otomatis. Untuk alasan ini saya lebih suka menyesuaikan diriRequestCultureProviders
dengan mekanisme yang saya ketahui sendiri untuk mendeteksi bahasa pengguna.