Share via


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:

CustomRequestCultureProvider beklendiği gibi çalışmıyor

sınıfı üç RequestLocalizationOptions varsayılan sağlayıcıya sahiptir:

, 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");
        }));
    

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-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ış 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ı