Memecahkan masalah pelokalan ASP.NET Core
Oleh Hisham Bin Ateya
Artikel ini menyediakan instruksi tentang cara mendiagnosis masalah pelokalan aplikasi ASP.NET Core.
Masalah konfigurasi pelokalan
Urutan middleware pelokalan
Aplikasi mungkin tidak melokalisasi karena middleware pelokalan tidak diurutkan seperti yang diharapkan.
Untuk mengatasi masalah ini, pastikan middleware pelokalan terdaftar sebelum middleware MVC. Jika tidak, middleware pelokalan tidak diterapkan.
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc();
}
Jalur sumber daya pelokalan tidak ditemukan
Budaya yang Didukung di RequestCultureProvider tidak cocok dengan terdaftar sekali
Masalah penamaan file sumber daya
ASP.NET Core memiliki aturan dan panduan yang telah ditentukan sebelumnya untuk penamaan file sumber daya pelokalan, yang dijelaskan dalam Globalisasi dan pelokalan di ASP.NET Core.
Sumber daya hilang
Penyebab umum sumber daya yang tidak ditemukan meliputi:
- Nama sumber daya salah eja dalam file sumber daya .NET XML (
.resx
) atau permintaan localizer. - Sumber daya hilang dari file sumber daya untuk beberapa bahasa, tetapi ada di bahasa lain.
- Jika Anda masih mengalami masalah, periksa pesan log pelokalan (dicatat di
Debug
tingkat log) untuk detail selengkapnya tentang sumber daya yang hilang.
Tip
Saat menggunakan CookieRequestCultureProvider, verifikasi tanda kutip tunggal tidak digunakan dengan budaya di dalam nilai pelokalan cookie . Misalnya, c='en-UK'|uic='en-US'
adalah nilai yang tidak cookie valid, sementara c=en-UK|uic=en-US
valid.
Masalah sumber daya dan pustaka kelas
ASP.NET Core secara default menyediakan cara untuk memungkinkan pustaka kelas menemukan file sumber daya mereka melalui ResourceLocationAttribute.
Masalah umum dengan pustaka kelas meliputi:
- ResourceLocationAttribute Kehilangan di pustaka kelas mencegah ResourceManagerStringLocalizerFactory menemukan sumber daya.
- Penamaan file sumber daya. Untuk informasi selengkapnya, lihat bagian Masalah penamaan file sumber daya.
- Mengubah namespace layanan akar pustaka kelas. Untuk informasi selengkapnya, lihat bagian Masalah namespace layanan akar.
CustomRequestCultureProvider
tidak berfungsi seperti yang diharapkan
Kelas RequestLocalizationOptions ini memiliki tiga penyedia default:
- QueryStringRequestCultureProvider
- CookieRequestCultureProvider
- AcceptLanguageHeaderRequestCultureProvider
Memungkinkan CustomRequestCultureProvider Anda untuk menyesuaikan bagaimana budaya pelokalan disediakan. CustomRequestCultureProvider digunakan ketika penyedia default tidak memenuhi kebutuhan Anda.
Alasan umum penyedia kustom tidak berfungsi dengan baik adalah bahwa penyedia tersebut bukan penyedia pertama dalam RequestCultureProviders daftar. Untuk mengatasi masalah ini:
Sisipkan penyedia kustom pada posisi nol dalam RequestCultureProviders daftar:
options.AddInitialRequestCultureProvider( new CustomRequestCultureProvider(async context => { // My custom request culture logic return new ProviderCultureResult("en"); }));
Sisipkan penyedia kustom pada posisi nol dalam RequestCultureProviders daftar:
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context => { // My custom request culture logic return new ProviderCultureResult("en"); }));
- AddInitialRequestCultureProvider Gunakan metode ekstensi untuk mengatur penyedia kustom sebagai penyedia awal.
Masalah namespace layanan akar
Ketika namespace layanan akar rakitan berbeda dari nama rakitan, pelokalan tidak berfungsi secara default. Untuk menghindari masalah ini, gunakan RootNamespace
atribut , yang dijelaskan dalam Globalisasi dan pelokalan di ASP.NET Core.
Peringatan
Masalah namespace layanan akar dapat terjadi ketika nama proyek bukan pengidentifikasi .NET yang valid. Misalnya, my-project-name.csproj
menggunakan namespace my_project_name
layanan akar dan nama my-project-name
rakitan , yang menghasilkan kesalahan ini.
Sumber daya dan tindakan build
Jika Anda menggunakan file sumber daya untuk pelokalan, penting bagi mereka untuk memiliki tindakan build yang sesuai. Gunakan Sumber Daya Tersemat; jika tidak, ResourceStringLocalizer
sumber daya ini tidak dapat ditemukan.
Penimpaan lokasi menggunakan panel "Sensor" di alat pengembang
Saat menggunakan penimpaan lokasi menggunakan panel Sensor di Google Chrome atau alat pengembang Microsoft Edge, bahasa fallback diatur ulang setelah prarender. Hindari mengatur bahasa menggunakan panel Sensor saat pengujian. Atur bahasa menggunakan pengaturan bahasa browser.
Untuk informasi selengkapnya, lihat Blazor Pelokalan tidak berfungsi dengan InteractiveServer (dotnet/aspnetcore
#53707).
Masalah GitHub dengan tips pemecahan masalah yang bermanfaat
ASP.NET Core
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk