Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Oleh Hisham Bin Ateya
Artikel ini menyediakan instruksi tentang cara mendiagnosis masalah pelokalan aplikasi ASP.NET Core.
Masalah konfigurasi lokalisasi
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 lokalisasi tidak diterapkan.
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc();
}
Jalur sumber daya pelokalan tidak ditemukan
Kebudayaan yang Didukung pada RequestCultureProvider tidak sesuai dengan yang telah terdaftar sebelumnya
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
Debugtingkat log) untuk rincian lebih lanjut tentang sumber daya yang hilang.
Petunjuk / Saran
Saat menggunakan CookieRequestCultureProvider, pastikan tanda kutip tunggal tidak digunakan dengan budaya terkait 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:
- Tidak adanya ResourceLocationAttribute dalam pustaka kelas mencegah ResourceManagerStringLocalizerFactory menemukan sumber daya.
- Penamaan file sumber daya. Untuk informasi selengkapnya, lihat bagian Masalah penamaan file sumber daya .
- Mengubah namespace akar pustaka kelas. Untuk informasi selengkapnya, lihat bagian Masalah namespace akar.
CustomRequestCultureProvider tidak berfungsi seperti yang diharapkan
Kelas RequestLocalizationOptions ini memiliki tiga penyedia default:
- QueryStringRequestCultureProvider
- CookieRequestCultureProvider
- AcceptLanguageHeaderRequestCultureProvider
CustomRequestCultureProvider memungkinkan Anda untuk menyesuaikan bagaimana kultur lokal 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 akar
Ketika namespace akar sebuah rakitan berbeda dari nama rakitan, pelokalan tidak berfungsi secara otomatis. Untuk menghindari masalah ini, gunakan RootNamespace atribut , yang dijelaskan dalam Globalisasi dan pelokalan di ASP.NET Core.
Peringatan
Masalah namespace akar dapat terjadi ketika nama proyek bukan pengidentifikasi .NET yang valid. Misalnya, my-project-name.csproj menggunakan namespace akar my_project_name dan nama rakitan my-project-name, yang menghasilkan kesalahan ini.
Sumber daya dan tindakan build
Jika Anda menggunakan file sumber daya untuk pelokalan, penting agar mereka memiliki tindakan kompilasi yang sesuai. Gunakan Sumber Daya Tersemat; jika tidak, ResourceStringLocalizer tidak dapat menemukan sumber daya ini.
Pengaturan ulang 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