ASP.NET Çekirdek yerelleştirme sorunlarını giderme
Tarafından Hisham Bin Ateya
Bu makalede, ASP.NET Core uygulama yerelleştirme sorunlarını tanılama yönergeleri sağlanır.
Yerelleştirme yapılandırma sorunları
Yerelleştirme ara yazılım sırası
Yerelleştirme ara yazılımı beklendiği gibi sıralanmadığından uygulama yerelleştirilmeyebilir.
Bu sorunu çözmek için yerelleştirme ara yazılımının MVC ara yazılımından önce kaydedildiğinden emin olun. Aksi takdirde, yerelleştirme ara yazılımı uygulanmaz.
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc();
}
Yerelleştirme kaynakları yolu bulunamadı
RequestCultureProvider'da Desteklenen Kültürler kayıtlı bir kez ile eşleşmiyor
Kaynak dosyası adlandırma sorunları
ASP.NET Core, ASP.NET Core'da Genelleştirme ve yerelleştirme bölümünde açıklanan yerelleştirme kaynakları dosya adlandırması için önceden tanımlanmış kurallar ve yönergelere sahiptir.
Eksik kaynaklar
Kaynakların bulunmamasının yaygın nedenleri şunlardır:
- Kaynak adları .NET XML kaynak dosyasında (
.resx
) veya yerelleştirici isteğinde yanlış yazılmış. - Kaynak, bazı diller için kaynak dosyasında eksik, ancak diğer dillerde var.
- Sorun yaşamaya devam ediyorsanız, eksik kaynaklar hakkında daha fazla bilgi için yerelleştirme günlük iletilerini (günlük düzeyinde günlüğe kaydedildi
Debug
) denetleyin.
İpucu
kullanırken CookieRequestCultureProvider, tek tırnak işaretlerinin yerelleştirme cookie değerinin içindeki kültürlerle kullanılmadığını doğrulayın. Örneğin, c='en-UK'|uic='en-US'
geçerliyken c=en-UK|uic=en-US
geçersiz cookie bir değerdir.
Kaynaklar ve sınıf kitaplıkları sorunları
ASP.NET Core varsayılan olarak sınıf kitaplıklarının aracılığıyla ResourceLocationAttributekaynak dosyalarını bulmasına izin vermek için bir yol sağlar.
Sınıf kitaplıklarıyla ilgili yaygın sorunlar şunlardır:
- Bir sınıf kitaplığında öğesinin ResourceLocationAttribute eksik olmaması, kaynakların bulunmasını engeller ResourceManagerStringLocalizerFactory .
- Kaynak dosya adlandırma. Daha fazla bilgi için Kaynak dosyası adlandırma sorunları bölümüne bakın.
- Sınıf kitaplığının kök ad alanını değiştirme. Daha fazla bilgi için Kök ad alanı sorunları bölümüne bakın.
CustomRequestCultureProvider
beklendiği gibi çalışmıyor
sınıfı üç RequestLocalizationOptions varsayılan sağlayıcıya sahiptir:
- QueryStringRequestCultureProvider
- CookieRequestCultureProvider
- AcceptLanguageHeaderRequestCultureProvider
, CustomRequestCultureProvider yerelleştirme kültürünün nasıl sağlandığını özelleştirmenizi sağlar. CustomRequestCultureProvider, varsayılan sağlayıcılar gereksinimlerinizi karşılamadığında kullanılır.
Özel sağlayıcının düzgün çalışmaması için yaygın nedenlerden biri, listenin ilk sağlayıcısı RequestCultureProviders olmamasıdır. Bu sorunu çözmek için:
Özel sağlayıcıyı listeye sıfır RequestCultureProviders konumunda ekleyin:
options.AddInitialRequestCultureProvider( new CustomRequestCultureProvider(async context => { // My custom request culture logic return new ProviderCultureResult("en"); }));
Özel sağlayıcıyı listeye sıfır RequestCultureProviders konumunda ekleyin:
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context => { // My custom request culture logic return new ProviderCultureResult("en"); }));
- Özel sağlayıcıyı AddInitialRequestCultureProvider ilk sağlayıcı olarak ayarlamak için uzantı yöntemini kullanın.
Kök ad alanı sorunları
Bir derlemenin kök ad alanı derleme adından farklı olduğunda, yerelleştirme varsayılan olarak çalışmaz. Bu sorunu önlemek için ASP.NET Core'da Genelleştirme ve yerelleştirme bölümünde açıklanan özniteliğini kullanınRootNamespace
.
Uyarı
Projenin adı geçerli bir .NET tanımlayıcısı olmadığında kök ad alanı sorunu oluşabilir. Örneğin, my-project-name.csproj
kök ad alanını my_project_name
ve derleme adını my-project-name
kullanır ve bu da bu hatayla sonuçlanır.
Kaynaklar ve derleme eylemi
Yerelleştirme için kaynak dosyaları kullanıyorsanız, uygun bir derleme eylemine sahip olmaları önemlidir. Katıştırılmış Kaynak'ı kullanın; aksi takdirde, ResourceStringLocalizer
bu kaynaklar bulunamaz.
Geliştirici araçlarında "Algılayıcılar" bölmesini kullanarak konum geçersiz kılma
Google Chrome veya Microsoft Edge geliştirici araçlarındaki Algılayıcılar bölmesini kullanarak konum geçersiz kılmayı kullanırken, geri dönüş dili ön kayıt sonrasında sıfırlanır. Test sırasında Algılayıcılar bölmesini kullanarak dili ayarlamaktan kaçının. Tarayıcının dil ayarlarını kullanarak dili ayarlayın.
Daha fazla bilgi için bkz Blazor . Yerelleştirme InteractiveServer ile çalışmıyor (dotnet/aspnetcore
#53707).
Yararlı sorun çözme ipuçlarıyla ilgili GitHub sorunları
- Lütfen paylaşılan dosyalar hakkında daha fazla bilgi ekleyin (
dotnet/AspNetCore.Docs
#28674 - Blazor Yerelleştirme InteractiveServer (
dotnet/aspnetcore
#53707) ile çalışmıyor ("Algılayıcılar" bölmesini kullanarak konum geçersiz kılma)
ASP.NET Core
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin