Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ı olanlarla 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 edinmek için
Debuggünlük düzeyinde günlüğe kaydedilen yerelleştirme günlük iletilerini kontrol edin.
Tavsiye
"CookieRequestCultureProvider kullanırken, yerelleştirme cookie değerinin içindeki kültürlerle birlikte tek tırnak işaretlerinin kullanılmadığını doğrulayın." Örneğin, c='en-UK'|uic='en-US' geçerliyken cookie geçersiz c=en-UK|uic=en-US bir değerdir.
Kaynaklar ve sınıf kitaplıkları sorunları
ASP.NET Core varsayılan olarak sınıf kitaplıklarının ResourceLocationAttribute aracılığıyla kaynak dosyalarını bulmasına olanak tanıyan bir yol sağlar.
Sınıf kitaplıklarıyla ilgili yaygın sorunlar şunlardır:
- Bir sınıf kitaplığında ResourceLocationAttribute öğesinin eksik olması, kaynakların ResourceManagerStringLocalizerFactory tarafından keşfedilmesini engeller.
- 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ının yaygın nedenlerinden biri, listede ilk sağlayıcı olmamasıdır RequestCultureProviders. 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 RootNamespace açıklanan özniteliğini kullanın.
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-namekullanı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ış Kaynağı Kullan; 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