System.Resources.NeutralResourcesLanguageAttribute sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

Masaüstü uygulamalarında özniteliği, NeutralResourcesLanguageAttribute bir uygulamanın varsayılan kültürünü ve kaynaklarının konumunu kaynak yöneticisine bildirir. Varsayılan olarak, kaynaklar ana uygulama derlemesine eklenir ve özniteliğini aşağıdaki gibi kullanabilirsiniz. Bu deyim, İngilizcenin (Birleşik Devletler) uygulamanın varsayılan kültürü olduğunu belirtir.

[assembly: NeutralResourcesLanguage("en-US")]
<Assembly:NeutralResourcesLanguage("en-US")>

Öznitelik deyiminde NeutralResourcesLanguageAttribute bir UltimateResourceFallbackLocation numaralandırma değeri sağlayarak varsayılan kültürün kaynaklarını nerede ResourceManager bulabileceğini belirtmek için özniteliğini de kullanabilirsiniz. Bu en yaygın olarak kaynakların bir uydu derlemesinde bulunduğunu belirtmek için yapılır. Örneğin, aşağıdaki deyim İngilizcenin (Birleşik Devletler) uygulamanın varsayılan veya nötr kültürü olduğunu ve kaynaklarının bir uydu derlemesinde bulunduğunu belirtir. ResourceManager nesnesi bunları en-US adlı bir alt dizinde arar.

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
<Assembly:NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>

İpucu

Uygulamanızın varsayılan kültürünü tanımlamak için her zaman özniteliğini kullanmanızı NeutralResourcesLanguageAttribute öneririz.

özniteliği iki rol gerçekleştirir:

  • Varsayılan kültürün kaynakları uygulamanın ana derlemesine eklenmişse ve ResourceManager varsayılan kültürle aynı kültüre ait kaynakları almak zorundaysa, ResourceManager uydu derlemesi aramak yerine otomatik olarak ana derlemede bulunan kaynakları kullanır. Bu, her zamanki derleme araştırmasını atlar, yüklediğiniz ilk kaynak için arama performansını artırır ve çalışma kümenizi azaltabilir. Kaynak dosyalarını araştırmak için işlem ResourceManager kullanımları için bkz. Kaynakları Paketleme ve Dağıtma.

  • Varsayılan kültürün kaynakları ana uygulama derlemesi yerine bir uydu derlemesinde bulunuyorsa, NeutralResourcesLanguageAttribute özniteliği çalışma zamanının kaynakları yükleyebileceği kültürü ve dizini belirtir.

Windows 8.x Store uygulamaları

Sınıfı kullanılarak ResourceManager kaynakları yüklenen ve alınan Windows 8.x Store uygulamalarında özniteliği, NeutralResourcesLanguageAttribute başarısız bir araştırma durumunda kaynakları kullanılan nötr kültürü tanımlar. Kaynakların konumunu belirtmez. Varsayılan olarak, ResourceManager varsayılan kültürün kaynaklarını bulmak için uygulamanın paket kaynak dizini (PRI) dosyasını kullanır. Özniteliği tarafından tanımlanan nötr kültür, bu etkinin NeutralResourcesLanguageAttribute benzetimini yapmak için kullanıcı arabirimi dil listesinin sonuna eklenir.

Windows Çalışma Zamanı Windows.ApplicationModel.Resources.ResourceLoader sınıfını veya Windows.ApplicationModel.Resources.Core ad alanında türleri kullanarak kaynakları yükler ve alırsanız, NeutralResourcesLanguageAttribute öznitelik yoksayılır.

Örnekler

Aşağıdaki örnek, özniteliğin NeutralResourcesLanguageAttribute varsayılan veya geri dönüş kültürünü tanımlamak için kullanımını göstermek için basit bir "Merhaba Dünya" uygulaması kullanır. İngilizce (en), İngilizce (Birleşik Devletler) (en-US) ve Fransızca (Fransa) (fr-FR) kültürleri için ayrı kaynak dosyalarının oluşturulmasını gerektirir. Aşağıda, İngilizce kültürü için ExampleResources.txt adlı bir metin dosyasının içeriği gösterilmektedir.

# Resources for the default (en) culture.
Greeting=Hello

Kaynak dosyasını bir uygulamada kullanmak için Kaynak Dosya Oluşturucusunu (Resgen.exe) kullanarak dosyayı metin (.txt) biçiminden ikili (.resources) biçimine aşağıdaki gibi dönüştürmelisiniz:

resgen ExampleResources.txt

Uygulama derlendiğinde ikili kaynak dosyası ana uygulama derlemesine eklenir.

Aşağıda, İngilizce (Birleşik Devletler) kültürü için kaynaklar sağlayan ExampleResources.en-US.txt adlı bir metin dosyasının içeriği gösterilmektedir.

# Resources for the en-US culture.
Greeting=Hi

Metin dosyası, komut satırındaki Kaynak Dosya Oluşturucu (ResGen.exe) kullanılarak aşağıdaki gibi ikili kaynaklar dosyasına dönüştürülebilir:

resgen ExampleResources.en-US.txt ExampleResources.en-US.resources

İkili kaynak dosyası daha sonra Derleme Bağlayıcısı (Al.exe) kullanılarak bir derlemede derlenmeli ve aşağıdaki komutu vererek uygulama dizininin en-US alt dizinine yerleştirilmelidir:

al /t:lib /embed:ExampleResources.en-US.resources /culture:en-US /out:en-us\Example.resources.dll

Aşağıda, Fransızca (Fransa) kültürü için kaynaklar sağlayan ExampleResources.fr-FR.txt adlı bir metin dosyasının içeriği gösterilmektedir.

# Resources for the fr-FR culture.
Greeting=Bonjour

Metin dosyası, komut satırında ResGen.exe kullanılarak aşağıdaki gibi ikili kaynak dosyasına dönüştürülebilir:

resgen ExampleResources.fr-FR.txt ExampleResources.fr-FR.resources

İkili kaynaklar dosyası daha sonra Derleme Bağlayıcısı kullanılarak bir derlemede derlenmeli ve aşağıdaki komutu vererek uygulama dizininin fr-FR alt dizinine yerleştirilmelidir:

al /t:lib /embed:ExampleResources.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll

Aşağıdaki örnek, geçerli kültürü ayarlayan, kullanıcının adını soran ve yerelleştirilmiş bir dize görüntüleyen yürütülebilir kodu sağlar.

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Threading;

[assembly: NeutralResourcesLanguageAttribute("en")]
public class Example
{
    public static void Main()
    {
        // Select the current culture randomly to test resource fallback.
        string[] cultures = { "de-DE", "en-us", "fr-FR" };
        Random rnd = new Random();
        int index = rnd.Next(0, cultures.Length);
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultures[index]);
        Console.WriteLine("The current culture is {0}",
                          CultureInfo.CurrentUICulture.Name);

        // Retrieve the resource.
        ResourceManager rm = new ResourceManager("ExampleResources",
                                                 typeof(Example).Assembly);
        string greeting = rm.GetString("Greeting");

        Console.Write("Enter your name: ");
        string name = Console.ReadLine();
        Console.WriteLine("{0} {1}!", greeting, name);
    }
}
Imports System.Globalization
Imports System.Resources
Imports System.Threading 

<Assembly:NeutralResourcesLanguageAttribute("en")>

Module Example
   Public Sub Main()
      ' Select the current culture randomly to test resource fallback.
      Dim cultures() As String = { "de-DE", "en-us", "fr-FR" }
      Dim rnd As New Random()
      Dim index As Integer = rnd.Next(0, cultures.Length)
      Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultures(index))      
      Console.WriteLine("The current culture is {0}", 
                        CultureInfo.CurrentUICulture.Name)       

      ' Retrieve the resource.
      Dim rm As New ResourceManager("ExampleResources" , GetType(Example).Assembly)
      Dim greeting As String = rm.GetString("Greeting")
      
      Console.Write("Enter your name: ")
      Dim name As String = Console.ReadLine()
      Console.WriteLine("{0} {1}", greeting, name)
   End Sub
End Module

Visual Basic'te aşağıdaki komut kullanılarak derlenebilir:

vbc Example.vb /resource:ExampleResources.resources

veya C# dilinde aşağıdaki komutu kullanarak:

csc Example.cs /resource:ExampleResources.resources