Bagikan melalui


Metode System.Resources.ResourceManager.GetString

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

Properti IgnoreCase menentukan apakah perbandingan name dengan nama sumber daya tidak peka huruf besar/kecil (default) atau peka huruf besar/kecil.

Catatan

Metode ini GetString dapat melemparkan lebih banyak pengecualian daripada yang tercantum. Salah satu alasan ini mungkin terjadi adalah jika metode yang dipanggil metode ini melemparkan pengecualian. Misalnya, FileLoadException pengecualian dapat dilemparkan jika kesalahan dibuat menyebarkan atau menginstal rakitan satelit, atau SerializationException pengecualian mungkin dilemparkan jika jenis yang ditentukan pengguna melemparkan pengecualian yang ditentukan pengguna saat jenis dideserialisasi.

metode GetString(String)

Aplikasi desktop

Di aplikasi desktop, sumber daya yang dikembalikan dilokalkan untuk budaya UI utas saat ini, seperti yang didefinisikan oleh CultureInfo.CurrentUICulture properti . Jika sumber daya belum dilokalkan untuk budaya tersebut, manajer sumber daya menyelidiki sumber daya dengan mengikuti langkah-langkah yang diuraikan di bagian "Proses Fallback Sumber Daya" dari artikel Mengemas dan Menyebarkan Sumber Daya . Jika tidak ada sekumpulan sumber daya lokal yang dapat digunakan yang ditemukan, resource manager akan kembali pada sumber daya budaya default. Jika resource manager tidak dapat memuat kumpulan sumber daya budaya default, metode akan memberikan MissingManifestResourceException pengecualian atau, jika set sumber daya diharapkan berada di rakitan satelit, pengecualian MissingSatelliteAssemblyException . Jika resource manager dapat memuat set sumber daya yang sesuai tetapi tidak dapat menemukan sumber daya bernama name, metode mengembalikan null.

Aplikasi Windows 8.x

Penting

ResourceManager Meskipun kelas didukung di aplikasi Windows 8.x, kami tidak merekomendasikan penggunaannya. Gunakan kelas ini hanya saat Anda mengembangkan proyek Pustaka Kelas Portabel yang dapat digunakan dengan aplikasi Windows 8.x. Untuk mengambil sumber daya dari aplikasi Windows 8.x, gunakan kelas Windows.ApplicationModel.Resources.ResourceLoader sebagai gantinya.

Di aplikasi Windows 8.x, GetString(String) metode mengembalikan nilai name sumber daya string, yang dilokalkan untuk pengaturan budaya UI pemanggil saat ini. Daftar budaya berasal dari daftar bahasa UI pilihan sistem operasi. Jika resource manager tidak dapat mencocokkan name, metode mengembalikan null.

Contoh

Contoh berikut menggunakan GetString metode untuk mengambil sumber daya khusus budaya. Ini terdiri dari sumber daya yang dikompilasi dari file .txt untuk budaya Inggris (en), Prancis (Prancis) (fr-FR), dan Rusia (Rusia) (ru-RU). Contohnya mengubah budaya saat ini dan budaya UI saat ini menjadi Bahasa Inggris (Amerika Serikat), Prancis (Prancis), Rusia (Rusia), dan Swedia (Swedia). Kemudian memanggil GetString metode untuk mengambil string yang dilokalkan, yang ditampilkan bersama dengan hari dan bulan saat ini. Perhatikan bahwa output menampilkan string yang dilokalkan yang sesuai kecuali ketika budaya UI saat ini adalah Swedia (Swedia). Karena sumber daya bahasa Swedia tidak tersedia, aplikasi ini menggunakan sumber daya budaya default, yaitu bahasa Inggris. Contoh ini memerlukan file sumber daya berbasis teks yang tercantum dalam tabel berikut. Masing-masing memiliki satu sumber daya string bernama DateStart.

Kultur Nama file Nama sumber daya Nilai sumber daya
id-ID DateStrings.txt DateStart Hari ini adalah
fr-FR DateStrings.fr-FR.txt DateStart Aujourd'hui, c'est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

Anda dapat menggunakan file batch berikut untuk mengkompilasi contoh C#. Untuk Visual Basic, ubah csc ke vbc, dan ubah ekstensi file kode sumber dari .cs ke .vb.

resgen DateStrings.txt
csc showdate.cs /resource:DateStrings.resources

md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources

md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources

Berikut adalah kode sumber untuk contoh (ShowDate.vb untuk versi Visual Basic atau ShowDate.cs untuk versi C#).

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

public class Example
{
   public static void Main()
   {
      string[] cultureNames = [ "en-US", "fr-FR", "ru-RU", "sv-SE" ];
      ResourceManager rm = new ResourceManager("DateStrings",
                                               typeof(Example).Assembly);

      foreach (var cultureName in cultureNames) {
         CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
         Thread.CurrentThread.CurrentCulture = culture;
         Thread.CurrentThread.CurrentUICulture = culture;

         Console.WriteLine("Current UI Culture: {0}",
                           CultureInfo.CurrentUICulture.Name);
         string dateString = rm.GetString("DateStart");
         Console.WriteLine("{0} {1:M}.\n", dateString, DateTime.Now);
      }
   }
}
// The example displays output similar to the following:
//       Current UI Culture: en-US
//       Today is February 03.
//
//       Current UI Culture: fr-FR
//       Aujourd'hui, c'est le 3 février
//
//       Current UI Culture: ru-RU
//       Сегодня февраля 03.
//
//       Current UI Culture: sv-SE
//       Today is den 3 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguage("en")>

Module Example
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "fr-FR", "ru-RU", "sv-SE" }
      Dim rm As New ResourceManager("DateStrings",
                                    GetType(Example).Assembly)
      
      For Each cultureName In cultureNames
         Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
         Thread.CurrentThread.CurrentCulture = culture 
         Thread.CurrentThread.CurrentUICulture = culture

         Console.WriteLine("Current UI Culture: {0}", 
                           CultureInfo.CurrentUICulture.Name)
         Dim dateString As String = rm.GetString("DateStart")
         Console.WriteLine("{0} {1:M}.", dateString, Date.Now)                           
         Console.WriteLine()
      Next                                           
   End Sub
End Module
' The example displays output similar to the following:
'       Current UI Culture: en-US
'       Today is February 03.
'       
'       Current UI Culture: fr-FR
'       Aujourd'hui, c'est le 3 février
'       
'       Current UI Culture: ru-RU
'       Сегодня февраля 03.
'       
'       Current UI Culture: sv-SE
'       Today is den 3 februari.

metode GetString(String, CultureInfo)

Aplikasi desktop

Di aplikasi desktop, jika culture adalah null, GetString(String, CultureInfo) metode menggunakan budaya UI saat ini yang diperoleh dari CultureInfo.CurrentUICulture properti .

Sumber daya yang dikembalikan dilokalkan untuk budaya yang ditentukan oleh culture parameter . Jika sumber daya belum dilokalkan untuk culture, manajer sumber daya memeriksa sumber daya dengan mengikuti langkah-langkah yang diuraikan di bagian "Proses Fallback Sumber Daya" dari topik Pengemasan dan Penyebaran Sumber Daya . Jika tidak ada sekumpulan sumber daya yang dapat digunakan yang ditemukan, resource manager akan kembali pada sumber daya budaya default. Jika resource manager tidak dapat memuat kumpulan sumber daya budaya default, metode akan memberikan MissingManifestResourceException pengecualian atau, jika set sumber daya diharapkan berada di rakitan satelit, pengecualian MissingSatelliteAssemblyException . Jika resource manager dapat memuat set sumber daya yang sesuai tetapi tidak dapat menemukan sumber daya bernama name, metode mengembalikan null.

Aplikasi Windows 8.x

Penting

ResourceManager Meskipun kelas didukung di aplikasi Windows 8.x, kami tidak merekomendasikan penggunaannya. Gunakan kelas ini hanya saat Anda mengembangkan proyek Pustaka Kelas Portabel yang dapat digunakan dengan aplikasi Windows 8.x. Untuk mengambil sumber daya dari aplikasi Windows 8.x, gunakan kelas Windows.ApplicationModel.Resources.ResourceLoader sebagai gantinya.

Di aplikasi Windows 8.x, GetString(String, CultureInfo) metode mengembalikan nilai name sumber daya string, yang dilokalkan untuk budaya yang ditentukan oleh culture parameter . Jika sumber daya tidak dilokalkan untuk culture budaya, pencarian menggunakan seluruh daftar fallback bahasa Windows 8, dan berhenti setelah melihat budaya default. Jika resource manager tidak dapat mencocokkan name, metode mengembalikan null.

Contoh

Contoh berikut menggunakan GetString(String, CultureInfo) metode untuk mengambil sumber daya khusus budaya. Contoh budaya default adalah bahasa Inggris (en), dan mencakup rakitan satelit untuk budaya Prancis (Prancis) (fr-FR) dan Rusia (Rusia) (ru-RU). Contoh mengubah budaya saat ini dan budaya UI saat ini menjadi Rusia (Rusia) sebelum memanggil GetString(String, CultureInfo). Kemudian memanggil GetString metode dan DateTime.ToString(String, IFormatProvider) metode dan meneruskan CultureInfo objek yang mewakili budaya Prancis (Prancis) dan Swedia (Swedia) ke setiap metode. Dalam output, bulan dan hari dalam sebulan serta string yang mendahuluinya muncul dalam bahasa Prancis, karena GetString metode ini dapat mengambil sumber daya bahasa Prancis. Namun, ketika budaya Swedia (Swedia) digunakan, bulan dan hari dalam sebulan muncul di Swedia, meskipun string yang mendahuluinya adalah dalam bahasa Inggris. Ini karena manajer sumber daya tidak dapat menemukan sumber daya bahasa Swedia yang dilokalkan, sehingga mengembalikan sumber daya untuk budaya bahasa Inggris default sebagai gantinya.

Contoh ini memerlukan file sumber daya berbasis teks yang tercantum dalam tabel berikut. Masing-masing memiliki satu sumber daya string bernama DateStart.

Kultur Nama file Nama sumber daya Nilai sumber daya
id-ID DateStrings.txt DateStart Hari ini adalah
fr-FR DateStrings.fr-FR.txt DateStart Aujourd'hui, c'est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

Anda dapat menggunakan file batch berikut untuk mengkompilasi contoh Visual Basic. Untuk mengkompilasi di C#, ubah vbc ke csc, dan ubah ekstensi file kode sumber dari .vb ke .cs.

resgen DateStrings.txt
vbc showdate.vb /resource:DateStrings.resources

md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources

md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources

Berikut adalah kode sumber untuk contoh (ShowDate.vb untuk versi Visual Basic atau ShowDate.cs untuk versi C#).

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

public class Example2
{
    public static void Main()
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");

        string[] cultureNames = [ "fr-FR", "sv-SE" ];
        ResourceManager rm = new ResourceManager("DateStrings",
                                                 typeof(Example).Assembly);

        foreach (var cultureName in cultureNames)
        {
            CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
            string dateString = rm.GetString("DateStart", culture);
            Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
                                               DateTime.Now.ToString("M", culture));
            Console.WriteLine();
        }
    }
}
// The example displays output similar to the following:
//       French (France): Aujourd'hui, c'est le 7 février.
//
//       Swedish (Sweden): Today is den 7 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading

Module Example2
    Public Sub Main()
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU")
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU")

        Dim cultureNames() As String = {"fr-FR", "sv-SE"}
        Dim rm As New ResourceManager("DateStrings",
                                    GetType(Example).Assembly)

        For Each cultureName In cultureNames
            Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
            Dim dateString As String = rm.GetString("DateStart", culture)
            Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
                                            Date.Now.ToString("M", culture))
            Console.WriteLine()
        Next
    End Sub
End Module
' The example displays output similar to the following:
'       French (France): Aujourd'hui, c'est le 7 février.
'       
'       Swedish (Sweden): Today is den 7 februari.