Aracılığıyla paylaş


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ı 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 Debug gü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:

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

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ı