ResourceManager.GetString メソッド

定義

指定したカルチャまたは現在の UI カルチャの指定した文字列リソースを返します。

オーバーロード

GetString(String)

指定されている文字列リソースの値を返します。

GetString(String, CultureInfo)

指定したカルチャにローカライズされている文字列リソースの値を返します。

GetString(String)

指定されている文字列リソースの値を返します。

public:
 System::String ^ GetString(System::String ^ name);
public:
 virtual System::String ^ GetString(System::String ^ name);
public string GetString (string name);
public virtual string? GetString (string name);
public virtual string GetString (string name);
member this.GetString : string -> string
abstract member GetString : string -> string
override this.GetString : string -> string
Public Function GetString (name As String) As String
Public Overridable Function GetString (name As String) As String

パラメーター

name
String

取得するリソースの名前。

戻り値

String

呼び出し元の現在の UI カルチャのためにローカライズされたリソースの値、または、リソース セットで null が見つからない場合は name

例外

name パラメーターが null です。

指定されたリソースの値が文字列ではありません。

使用できるリソースのセットが見つからず、既定のカルチャ用のリソースもありません。 この例外の処理方法の詳細については、ResourceManager クラスのトピックの MissingManifestResourceException 例外と MissingSatelliteAssemblyException 例外の処理に関するセクションを参照してください。

既定のカルチャのリソースがサテライト アセンブリに存在し、そのサテライト アセンブリが見つかりませんでした。 この例外の処理方法の詳細については、ResourceManager クラスのトピックの MissingManifestResourceException 例外と MissingSatelliteAssemblyException 例外の処理に関するセクションを参照してください。

次の例では、GetString メソッドを使用して、カルチャ固有のリソースを取得します。 これは、英語 (en)、フランス語 (フランス) (fr-FR)、およびロシア語 (ロシア) (ru-RU) の .txt ファイルからコンパイルされたリソースで構成されます。 例では、現在のカルチャと現在の UI カルチャを、英語 (米国)、フランス語 (フランス)、ロシア語 (ロシア)、およびスウェーデン語 (スウェーデン) に変更します。 それから、GetString メソッドを呼び出して、ローカライズされた文字列を取得します。この文字列は現在の日付と月と一緒に表示されます。 現在の UI カルチャがスウェーデン語 (スウェーデン) である場合を除き、適切なローカライズされた文字列が出力に表示されることに注意してください。 スウェーデン語の言語リソースが利用できないため、アプリは代わりに既定のカルチャである英語のリソースを使用します。 例には、次の表に記載されたテキスト ベースのリソース ファイルが必要です。 それぞれには DateStart という名前の唯一の文字列リソースがあります。

カルチャ ファイル名 リソース名 リソースの値
ja-JP DateStrings.txt DateStart Today is
fr-FR DateStrings.fr-FR.txt DateStart Aujourd'hui, c'est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

次のバッチ ファイルを使用して、C# の例をコンパイルできます。 Visual Basic の場合は、 cscvbcに変更し、さらにソース コード ファイルの拡張子を .cs から .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

例のソース コードを次に示します (Visual Basic バージョンの場合は ShowDate.vb、C# バージョンの場合は ShowDate.cs)。

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

[assembly:NeutralResourcesLanguage("en")]

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.

注釈

デスクトップ アプリ

デスクトップ アプリでは、返されるリソースは、プロパティで定義されているように、現在のスレッドの UI カルチャ用に CultureInfo.CurrentUICulture ローカライズされます。 リソースがそのカルチャ用にローカライズされていない場合、リソース マネージャーは、リソースの パッケージ化とデプロイ に関する記事の「リソース フォールバック プロセス」セクションで説明されている手順に従って、リソースをプローブします。 ローカライズされたリソースの使用可能なセットが見つからない場合、リソース マネージャーは既定のカルチャのリソースにフォールバックします。 リソース マネージャーが既定のカルチャのリソース セットを読み込めない場合、メソッドは例外を MissingManifestResourceException スローするか、リソース セットがサテライト アセンブリに存在することが予想される場合は例外を MissingSatelliteAssemblyException スローします。 リソース マネージャーが適切なリソース セットを読み込むことができるが、名前の付いた nameリソースが見つからない場合、メソッドは返します null

このプロパティは IgnoreCase 、リソース名との比較 name で大文字と小文字を区別しない (既定) か、大文字と小文字を区別するかを決定します。

注意事項

このメソッドは、一覧よりも多くの例外をスローする可能性があります。 これが発生する理由の 1 つは、このメソッドが呼び出すメソッドが例外をスローした場合です。 たとえば、サテライト アセンブリの FileLoadException 配置またはインストール中にエラーが発生した場合に例外がスローされる場合や SerializationException 、型が逆シリアル化されたときにユーザー定義型がユーザー定義例外をスローした場合に例外がスローされる場合があります。

Windows 8.x アプリ

重要

ResourceManagerクラスは Windows 8.x アプリでサポートされていますが、その使用はお勧めしません。 このクラスは、Windows 8.x アプリで使用できるポータブル クラス ライブラリ プロジェクトを開発する場合にのみ使用します。 Windows 8.x アプリからリソースを取得するには、Windowsを使用します。代わりに ApplicationModel.Resources.ResourceLoader クラス。

Windows 8.x アプリでは、メソッドはGetString(String)、呼び出し元の現在の name UI カルチャ設定用にローカライズされた文字列リソースの値を返します。 カルチャの一覧は、オペレーティング システムの優先 UI 言語リストから派生します。 リソース マネージャーが一致 nameしない場合、メソッド nullは .

スレッド セーフ

GetString(String)このメソッドはスレッド セーフです。

こちらもご覧ください

適用対象

GetString(String, CultureInfo)

指定したカルチャにローカライズされている文字列リソースの値を返します。

public:
 virtual System::String ^ GetString(System::String ^ name, System::Globalization::CultureInfo ^ culture);
public virtual string GetString (string name, System.Globalization.CultureInfo culture);
public virtual string? GetString (string name, System.Globalization.CultureInfo? culture);
abstract member GetString : string * System.Globalization.CultureInfo -> string
override this.GetString : string * System.Globalization.CultureInfo -> string
Public Overridable Function GetString (name As String, culture As CultureInfo) As String

パラメーター

name
String

取得するリソースの名前。

culture
CultureInfo

リソースのローカライズ先のカルチャを表すオブジェクト。

戻り値

String

指定されたカルチャのためにローカライズされたリソースの値、または、リソース セットで name が見つからない場合は null

例外

name パラメーターが null です。

指定されたリソースの値が文字列ではありません。

使用できるリソースのセットが見つからず、既定のカルチャ用のリソースもありません。 この例外の処理方法の詳細については、ResourceManager クラスのトピックの MissingManifestResourceException 例外と MissingSatelliteAssemblyException 例外の処理に関するセクションを参照してください。

既定のカルチャのリソースがサテライト アセンブリに存在し、そのサテライト アセンブリが見つかりませんでした。 この例外の処理方法の詳細については、ResourceManager クラスのトピックの MissingManifestResourceException 例外と MissingSatelliteAssemblyException 例外の処理に関するセクションを参照してください。

次の例では、GetString(String, CultureInfo) メソッドを使用して、カルチャ固有のリソースを取得します。 この例の既定のカルチャは英語 (en) で、フランス語 (フランス) (fr-FR) とロシア語 (ロシア) (ru-RU) カルチャのサテライト アセンブリが含まれています。 この例では、呼び出す GetString(String, CultureInfo)前に、現在のカルチャと現在の UI カルチャをロシア語 (ロシア) に変更します。 次に、メソッドとメソッドをGetStringDateTime.ToString(String, IFormatProvider)呼び出し、フランス語 (フランス) カルチャとスウェーデン語 (スウェーデン) カルチャを表すオブジェクトを各メソッドに渡CultureInfoします。 このメソッドはフランス語の言語リソースを取得できるため GetString 、出力では、月の月と日、およびその前の文字列がフランス語で表示されます。 ただし、スウェーデン語 (スウェーデン) カルチャを使用する場合、その月の月と日はスウェーデン語で表示されますが、その前の文字列は英語です。 これは、リソース マネージャーがローカライズされたスウェーデン語の言語リソースを見つけることができないため、代わりに既定の英語カルチャのリソースが返されるためです。

例には、次の表に記載されたテキスト ベースのリソース ファイルが必要です。 それぞれには DateStart という名前の唯一の文字列リソースがあります。

カルチャ ファイル名 リソース名 リソースの値
ja-JP DateStrings.txt DateStart Today is
fr-FR DateStrings.fr-FR.txt DateStart Aujourd'hui, c'est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

次のバッチ ファイルを使用して、Visual Basicの例をコンパイルできます。 C# でコンパイルするには、ソース コード ファイル.vb``.csの拡張子を csc.に変更vbcします。

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

例のソース コードを次に示します (Visual Basic バージョンの場合は ShowDate.vb、C# バージョンの場合は ShowDate.cs)。

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

[assembly:NeutralResourcesLanguage("en")]

public class Example
{
   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

<Assembly:NeutralResourcesLanguage("en")>

Module Example
   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.

注釈

デスクトップ アプリ

デスクトップ アプリの場合culture、メソッドはnullGetString(String, CultureInfo)プロパティから取得した現在の UI カルチャをCultureInfo.CurrentUICulture使用します。

返されるリソースは、パラメーターで指定されたカルチャ用に culture ローカライズされます。 リソースがローカライズ cultureされていない場合、リソース マネージャーは、「リソースの パッケージ化とデプロイ 」トピックの「リソース フォールバック プロセス」セクションで説明されている手順に従って、リソースをプローブします。 使用可能なリソースのセットが見つからない場合、リソース マネージャーは既定のカルチャのリソースにフォールバックします。 リソース マネージャーが既定のカルチャのリソース セットを読み込めない場合、メソッドは例外を MissingManifestResourceException スローするか、リソース セットがサテライト アセンブリに存在することが予想される場合は例外を MissingSatelliteAssemblyException スローします。 リソース マネージャーが適切なリソース セットを読み込むことができるが、名前の付いた nameリソースが見つからない場合、メソッドは返します null

このプロパティは IgnoreCase 、リソース名との比較 name で大文字と小文字を区別しない (既定) か、大文字と小文字を区別するかを決定します。

注意事項

このメソッドは、一覧よりも多くの例外をスローする可能性があります。 これが発生する理由の 1 つは、このメソッドが呼び出すメソッドが例外をスローした場合です。 たとえば、サテライト アセンブリの FileLoadException 配置またはインストール中にエラーが発生した場合に例外がスローされる場合や SerializationException 、型が逆シリアル化されたときにユーザー定義型がユーザー定義例外をスローした場合に例外がスローされる場合があります。

Windows 8.x アプリ

重要

ResourceManagerクラスは Windows 8.x アプリでサポートされていますが、その使用はお勧めしません。 このクラスは、Windows 8.x アプリで使用できるポータブル クラス ライブラリ プロジェクトを開発する場合にのみ使用します。 Windows 8.x アプリからリソースを取得するには、Windowsを使用します。代わりに ApplicationModel.Resources.ResourceLoader クラス。

Windows 8.x アプリでは、このメソッドは、GetString(String, CultureInfo)パラメーターで指定されたカルチャにローカライズされた文字列リソースの値nameculture返します。 リソースがカルチャにローカライズcultureされていない場合、検索ではWindows 8言語フォールバック リスト全体が使用され、既定のカルチャを調べてから停止します。 リソース マネージャーが一致 nameしない場合、メソッド nullは .

スレッド セーフ

この GetString(String, CultureInfo) メソッドはスレッド セーフです。

こちらもご覧ください

適用対象