Bagikan melalui


Kelas System.Resources.NeutralResourcesLanguageAttribute

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Di aplikasi desktop, atribut menginformasikan NeutralResourcesLanguageAttribute manajer sumber daya tentang budaya default aplikasi dan lokasi sumber dayanya. Secara default, sumber daya disematkan di perakitan aplikasi utama, dan Anda dapat menggunakan atribut sebagai berikut. Pernyataan ini menentukan bahwa bahasa Inggris (Amerika Serikat) adalah budaya default aplikasi.

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

Anda juga dapat menggunakan NeutralResourcesLanguageAttribute atribut untuk menunjukkan di mana ResourceManager dapat menemukan sumber daya budaya default dengan memberikan UltimateResourceFallbackLocation nilai enumerasi dalam pernyataan atribut. Ini paling umum dilakukan untuk menunjukkan bahwa sumber daya berada di perakitan satelit. Misalnya, pernyataan berikut menentukan bahwa bahasa Inggris (Amerika Serikat) adalah budaya default atau netral aplikasi dan bahwa sumber dayanya berada di perakitan satelit. Objek ResourceManager akan mencarinya dalam subdirektori bernama en-US.

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

Tip

Kami menyarankan agar Anda selalu menggunakan NeutralResourcesLanguageAttribute atribut untuk menentukan budaya default aplikasi Anda.

Atribut melakukan dua peran:

  • Jika sumber daya budaya default disematkan dalam perakitan utama aplikasi dan ResourceManager harus mengambil sumber daya yang termasuk dalam budaya yang sama dengan budaya default, ResourceManager secara otomatis menggunakan sumber daya yang terletak di perakitan utama alih-alih mencari perakitan satelit. Ini melewati pemeriksaan rakitan yang biasa, meningkatkan performa pencarian untuk sumber daya pertama yang Anda muat, dan dapat mengurangi set kerja Anda. Lihat Mengemas dan Menyebarkan Sumber Daya untuk proses ResourceManager yang digunakan untuk memeriksa file sumber daya.

  • Jika sumber daya budaya default terletak di rakitan satelit daripada di perakitan aplikasi utama, NeutralResourcesLanguageAttribute atribut menentukan budaya dan direktori tempat runtime dapat memuat sumber daya.

Aplikasi Bursa Windows 8.x

Di aplikasi Windows 8.x Store yang sumber dayanya dimuat dan diambil dengan menggunakan ResourceManager kelas , NeutralResourcesLanguageAttribute atribut menentukan budaya netral yang sumber dayanya digunakan jika terjadi pemeriksaan gagal. Ini tidak menentukan lokasi sumber daya. Secara default, ResourceManager menggunakan file indeks sumber daya paket (PRI) aplikasi untuk menemukan sumber daya budaya default. Budaya netral yang didefinisikan oleh NeutralResourcesLanguageAttribute atribut ditambahkan ke akhir daftar bahasa UI untuk mensimulasikan efek ini.

Jika Anda memuat dan mengambil sumber daya dengan menggunakan kelas Windows RuntimeWindows.ApplicationModel.Resources.ResourceLoader atau jenis di namespace Windows.ApplicationModel.Resources.Core , NeutralResourcesLanguageAttribute atribut diabaikan.

Contoh

Contoh berikut menggunakan aplikasi "Halo Dunia" sederhana untuk mengilustrasikan penggunaan NeutralResourcesLanguageAttribute atribut untuk menentukan budaya default atau fallback. Ini membutuhkan pembuatan file sumber daya terpisah untuk budaya Inggris (en), Inggris (Amerika Serikat) (en-AS), dan Prancis (Prancis) (fr-FR). Berikut ini menunjukkan konten file teks bernama ExampleResources.txt untuk budaya Inggris.

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

Untuk menggunakan file sumber daya dalam aplikasi, Anda harus menggunakan Resource File Generator (Resgen.exe) untuk mengonversi file dari format teksnya (.txt) ke format biner (.resources) sebagai berikut:

resgen ExampleResources.txt

Saat aplikasi dikompilasi, file sumber daya biner akan disematkan di perakitan aplikasi utama.

Berikut ini memperlihatkan konten file teks bernama ExampleResources.en-US.txt yang menyediakan sumber daya untuk budaya Bahasa Inggris (Amerika Serikat).

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

File teks dapat dikonversi ke file sumber daya biner dengan menggunakan Resource File Generator (ResGen.exe) di baris perintah sebagai berikut:

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

File sumber daya biner kemudian harus dikompilasi ke dalam rakitan dengan menggunakan Assembly Linker (Al.exe) dan ditempatkan di subdirektori en-US direktori aplikasi dengan mengeluarkan perintah berikut:

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

Berikut ini menunjukkan konten file teks bernama ExampleResources.fr-FR.txt yang menyediakan sumber daya untuk budaya Prancis (Prancis).

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

File teks dapat dikonversi ke file sumber daya biner dengan menggunakan ResGen.exe di baris perintah sebagai berikut:

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

File sumber daya biner kemudian harus dikompilasi ke dalam rakitan dengan menggunakan Assembly Linker dan ditempatkan di subdirektori fr-FR direktori aplikasi dengan mengeluarkan perintah berikut:

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

Contoh berikut menyediakan kode yang dapat dieksekusi yang mengatur budaya saat ini, meminta nama pengguna, dan menampilkan string yang dilokalkan.

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

Ini dapat dikompilasi dengan menggunakan perintah berikut di Visual Basic:

vbc Example.vb /resource:ExampleResources.resources

atau dengan menggunakan perintah berikut di C#:

csc Example.cs /resource:ExampleResources.resources