ResourceManager ResourceManager ResourceManager ResourceManager Class

定義

実行時にカルチャ固有のリソースにアクセスする便利な手段を提供するリソース マネージャーを表します。 Represents a resource manager that provides convenient access to culture-specific resources at run time.

public ref class ResourceManager
[System.Runtime.InteropServices.ComVisible(true)]
[Serializable]
public class ResourceManager
type ResourceManager = class
Public Class ResourceManager
継承
ResourceManagerResourceManagerResourceManagerResourceManager
派生
属性
ComVisibleAttribute SerializableAttribute

次の例では、明示的なカルチャおよび暗黙の現在の UI カルチャを使用して、メイン アセンブリとサテライト アセンブリからの文字列リソースを取得する方法を示します。The following example demonstrates how to use an explicit culture and the implicit current UI culture to obtain string resources from a main assembly and a satellite assembly. 詳細については、「ディレクトリの場所のサテライト アセンブリしないインストールで、グローバル アセンブリ キャッシュ」セクションを参照してください、サテライト アセンブリの作成トピック。For more information, see the "Directory Locations for Satellite Assemblies Not Installed in the Global Assembly Cache" section of the Creating Satellite Assemblies topic.

この例を実行します。To run this example:

  1. App ディレクトリでは、次のリソース文字列を含む rmc.txt という名前のファイルを作成します。In the app directory, create a file named rmc.txt that contains the following resource strings:

    
    day=Friday  
    year=2006  
    holiday="Cinco de Mayo"  
    
  2. 使用して、リソース ファイル ジェネレーター rmc.txt 入力ファイルから次のように、rmc.resources リソース ファイルを生成します。Use the Resource File Generator to generate the rmc.resources resource file from the rmc.txt input file as follows:

    resgen rmc.txt  
    
  3. アプリ ディレクトリのサブディレクトリを作成し、"ES-MX"という名前です。Create a subdirectory of the app directory and name it "es-MX". これは、次の 3 つの手順で作成するサテライト アセンブリのカルチャ名です。This is the culture name of the satellite assembly that you will create in the next three steps.

  4. 次のリソース文字列を含む ES-MX のディレクトリに rmc.es-MX.txt という名前のファイルを作成します。Create a file named rmc.es-MX.txt in the es-MX directory that contains the following resource strings:

    
    day=Viernes  
    year=2006  
    holiday="Cinco de Mayo"  
    
  5. 使用して、リソース ファイル ジェネレーター rmc.es MX.txt 入力ファイルから次のように、rmc.es MX.resources リソース ファイルを生成します。Use the Resource File Generator to generate the rmc.es-MX.resources resource file from the rmc.es-MX.txt input file as follows:

    resgen rmc.es-MX.txt  
    
  6. この例のファイル名が rmc.vb または rmc.cs のどちらであると仮定します。Assume that the filename for this example is rmc.vb or rmc.cs. 次のソース コードをファイルにコピーします。Copy the following source code into a file. それをコンパイルし、メイン アセンブリのリソース ファイル、rmc.resources を実行可能アセンブリに埋め込みます。Then compile it and embed the main assembly resource file, rmc.resources, in the executable assembly. Visual Basic コンパイラを使用している場合、構文です。If you are using the Visual Basic compiler, the syntax is:

    vbc rmc.vb /resource:rmc.resources  
    

    C# コンパイラの対応する構文です。The corresponding syntax for the C# compiler is:

    csc /resource:rmc.resources rmc.cs  
    
  7. 使用して、アセンブリ リンカーサテライト アセンブリを作成します。Use the Assembly Linker to create a satellite assembly. アプリのベース名が rmc の場合は、サテライト アセンブリの名前は rmc.resources.dll である必要があります。If the base name of the app is rmc, the satellite assembly name must be rmc.resources.dll. ES-MX のディレクトリにサテライト アセンブリを作成する必要があります。The satellite assembly should be created in the es-MX directory. ES-MX が現在のディレクトリの場合は、このコマンドを使用します。If es-MX is the current directory, use this command:

    al /embed:rmc.es-MX.resources /c:es-MX /out:rmc.resources.dll   
    
  8. 取得して、埋め込まれたリソース文字列を表示する rmc.exe を実行します。Run rmc.exe to obtain and display the embedded resource strings.

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

class Example 
{
    public static void Main() 
    {
    string day;
    string year;
    string holiday;
    string celebrate = "{0} will occur on {1} in {2}.\n";

    // Create a resource manager. 
    ResourceManager rm = new ResourceManager("rmc", 
                             typeof(Example).Assembly);

    Console.WriteLine("Obtain resources using the current UI culture.");

    // Get the resource strings for the day, year, and holiday 
    // using the current UI culture. 
    day  = rm.GetString("day");
    year = rm.GetString("year");
    holiday = rm.GetString("holiday");
    Console.WriteLine(celebrate, holiday, day, year);

    // Obtain the es-MX culture.
    CultureInfo ci = new CultureInfo("es-MX");

    Console.WriteLine("Obtain resources using the es-MX culture.");

   // Get the resource strings for the day, year, and holiday 
   // using the specified culture. 
    day  = rm.GetString("day", ci);
    year = rm.GetString("year", ci);
    holiday = rm.GetString("holiday", ci);
// ---------------------------------------------------------------
// Alternatively, comment the preceding 3 code statements and 
// uncomment the following 4 code statements:
// ----------------------------------------------------------------
// Set the current UI culture to "es-MX" (Spanish-Mexico).
//    Thread.CurrentThread.CurrentUICulture = ci;

// Get the resource strings for the day, year, and holiday 
// using the current UI culture. Use those strings to 
// display a message. 
//    day  = rm.GetString("day");
//    year = rm.GetString("year");
//    holiday = rm.GetString("holiday");
// ---------------------------------------------------------------

// Regardless of the alternative that you choose, display a message 
// using the retrieved resource strings.
    Console.WriteLine(celebrate, holiday, day, year);
    }
}
/*
This example displays the following output:

   Obtain resources using the current UI culture.
   "5th of May" will occur on Friday in 2006.
   
   Obtain resources using the es-MX culture.
   "Cinco de Mayo" will occur on Viernes in 2006.
*/
Imports System.Resources
Imports System.Reflection
Imports System.Threading
Imports System.Globalization

Class Example
    Public Shared Sub Main() 
        Dim day As String
        Dim year As String
        Dim holiday As String
        Dim celebrate As String = "{0} will occur on {1} in {2}." & vbCrLf

        ' Create a resource manager. 
        Dim rm As New ResourceManager("rmc", GetType(Example).Assembly)

        Console.WriteLine("Obtain resources using the current UI culture.")

        ' Get the resource strings for the day, year, and holiday 
        ' using the current UI culture. 
        day = rm.GetString("day")
        year = rm.GetString("year")
        holiday = rm.GetString("holiday")
        Console.WriteLine(celebrate, holiday, day, year)

        ' Obtain the es-MX culture.
        Dim ci As New CultureInfo("es-MX")

        Console.WriteLine("Obtain resources using the es-MX culture.")

        ' Get the resource strings for the day, year, and holiday 
        ' using the es-MX culture.  
        day = rm.GetString("day", ci)
        year = rm.GetString("year", ci)
        holiday = rm.GetString("holiday", ci)

        ' ---------------------------------------------------------------
        ' Alternatively, comment the preceding 3 code statements and 
        ' uncomment the following 4 code statements:
        ' ----------------------------------------------------------------
        ' Set the current UI culture to "es-MX" (Spanish-Mexico).
        '    Thread.CurrentThread.CurrentUICulture = ci
        ' Get the resource strings for the day, year, and holiday 
        ' using the current UI culture. 
        '    day  = rm.GetString("day")
        '    year = rm.GetString("year")
        '    holiday = rm.GetString("holiday")
        ' ---------------------------------------------------------------

        ' Regardless of the alternative that you choose, display a message 
        ' using the retrieved resource strings.
        Console.WriteLine(celebrate, holiday, day, year)
    End Sub 
End Class
' This example displays the following output:
'Obtain resources using the current UI culture.
'"5th of May" will occur on Friday in 2006.
'
'Obtain resources using the es-MX culture.
'"Cinco de Mayo" will occur on Viernes in 2006.

注釈

重要

このクラスのメソッドを信頼されていないデータを指定して呼び出すことには、セキュリティ上のリスクが伴います。Calling methods from this class with untrusted data is a security risk. このクラスのメソッドの呼び出しは、信頼されたデータだけを指定して実行してください。Call the methods from this class only with trusted data. 詳しくは、「Data Validation」(データの入力規則) を参照してください。For more information, see Data Validation.

ResourceManagerクラスをアセンブリに埋め込まれているバイナリ .resources ファイルまたはスタンドアロンの .resources ファイルからリソースを取得します。The ResourceManager class retrieves resources from a binary .resources file that is embedded in an assembly or from a standalone .resources file. ローカライズされたアプリとでローカライズされたリソースが配置されている場合サテライト アセンブリカルチャに固有のリソースを検索する、ローカライズされたリソースが存在しないと、リソースをサポートしているときにフォールバック リソースを提供しています。シリアル化します。If an app has been localized and localized resources have been deployed in satellite assemblies, it looks up culture-specific resources, provides resource fallback when a localized resource does not exist, and supports resource serialization.

デスクトップ アプリでのリソース作成および管理の詳細については、Windows 8.x ストアWindows 8.x Storeアプリは、次のセクションを参照してください。For more information about creating and managing resources in desktop apps and Windows 8.x ストアWindows 8.x Store apps, see the following sections:

デスクトップ アプリDesktop Apps

デスクトップ アプリの場合、ResourceManagerクラスは、バイナリ リソース (.resources) ファイルからリソースを取得します。For desktop apps, the ResourceManager class retrieves resources from binary resource (.resources) files. 言語コンパイラでは通常、またはアセンブリ リンカー (AL.exe)をアセンブリにこれらのリソース ファイルを埋め込みます。Typically, a language compiler or the Assembly Linker (AL.exe) embeds these resource files in an assembly. 使用することも、ResourceManagerリソースを呼び出すことによって、アセンブリに埋め込まれていない .resources ファイルから直接取得するオブジェクト、CreateFileBasedResourceManagerメソッド。You can also use a ResourceManager object to retrieve resources directly from a .resources file that is not embedded in an assembly, by calling the CreateFileBasedResourceManager method.

注意事項

によって明示的にリリースされるまで、リソースがロックされたままであるために、xcopy による配置では、ASP.NET アプリで、スタンドアロン .resources ファイルを使用して中断されます、ReleaseAllResourcesメソッド。Using standalone .resources files in an ASP.NET app will break XCOPY deployment, because the resources remain locked until they are explicitly released by the ReleaseAllResources method. ASP.NET アプリケーションでリソースをデプロイする場合は、サテライト アセンブリに .resources ファイルをコンパイルする必要があります。If you want to deploy resources with your ASP.NET apps, you should compile your .resources files into satellite assemblies.

リソース ベースのアプリでは、1 つの .resources ファイルには、カルチャに固有のリソースが見つからない場合に使われるリソースの既定のカルチャのリソースが含まれています。In a resource-based app, one .resources file contains the resources of the default culture whose resources are used if no culture-specific resources can be found. たとえば、アプリの既定のカルチャが英語 (en) の場合は、英語リソースは英語 (米国) (EN-US) またはフランス語 (フランス) (FR-FR) などの特定のカルチャのローカライズされたリソースが見つからないときに使用されます。For example, if an app's default culture is English (en), the English language resources are used whenever localized resources cannot be found for a specific culture, such as English (United States) (en-US) or French (France) (fr-FR). 通常、既定のカルチャのリソースは、メイン アプリケーション アセンブリに埋め込まれているし、他のカルチャのローカライズされたリソースがサテライト アセンブリに埋め込まれています。Typically, the resources for the default culture are embedded in the main app assembly, and resources for other localized cultures are embedded in satellite assemblies. サテライト アセンブリには、リソースのみが含まれます。Satellite assemblies contain only resources. メインのアセンブリとの拡張機能として、同じルート ファイル名がある。 resources.dll します。They have the same root file name as the main assembly and an extension of .resources.dll. アプリのアセンブリがグローバル アセンブリ キャッシュに登録されていない場合は、サテライト アセンブリは、アセンブリのカルチャに対応する名前のアプリのサブディレクトリに格納されます。For apps whose assemblies are not registered in the global assembly cache, satellite assemblies are stored in an app subdirectory whose name corresponds to the assembly's culture.

リソースの作成Creating Resources

リソース ベースのアプリを開発する際に、テキスト ファイル (拡張子が .txt または .restext ファイル) または XML ファイル (.resx 拡張子を持つファイル) でリソース情報を格納します。When you develop a resource-based app, you store resource information in text files (files that have a .txt or .restext extension) or XML files (files that have a .resx extension). テキストまたは使用する XML ファイルをコンパイルし、リソース ファイル ジェネレーター (Resgen.exe)バイナリ .resources ファイルを作成します。You then compile the text or XML files with the Resource File Generator (Resgen.exe) to create a binary .resources file. コンパイラ オプションを使用して、実行可能ファイルまたはライブラリで、結果として得られる .resources ファイルを埋め込むことができますし、/resourcesの c# および Visual Basic コンパイラ、またはを埋め込むことができますをサテライト アセンブリを使用して、します。You can then embed the resulting .resources file in an executable or library by using a compiler option such as /resources for the C# and Visual Basic compilers, or you can embed it in a satellite assembly by using the . Visual Studio プロジェクトに .resx ファイルを含めると、Visual Studio は、コンパイル、および既定の埋め込みを処理し、ビルド プロセスの一部として自動的にローカライズされたリソース。If you include a .resx file in your Visual Studio project, Visual Studio handles the compilation and embedding of default and localized resources automatically as part of the build process.

理想的がアプリを作成するすべての言語のリソースをサポートするか、少なくとも意味のある各言語のサブセットの。Ideally, you should create resources for every language your app supports, or at least for a meaningful subset of each language. バイナリ .resources ファイルの名前が名前付け規則に従うbasename.cultureName.resources、場所basenameはアプリの名前または詳細のレベルに応じて、クラスの名前。The binary .resources file names follow the naming convention basename.cultureName.resources, where basename is the name of the app or the name of a class, depending on the level of detail you want. CultureInfo.Nameプロパティの使用を判断cultureNameします。The CultureInfo.Name property is used to determine cultureName. アプリの既定のカルチャのリソースに名前を付けるbasename.resources します。A resource for the app's default culture should be named basename.resources.

たとえば、いくつかのリソースのアセンブリは MyResources ベースの名前を持つリソース ファイルがあるとします。For example, suppose that an assembly has several resources in a resource file that has the base name MyResources. これらのリソース ファイルが日本 (日本語) のカルチャをドイツのカルチャでは、簡体字中国語カルチャの MyResources.zh-CHS.resources MyResources.de.resources の MyResources.ja JP.resources などの名前とMyResources.fr BE.resources のフランス語 (ベルギー) のカルチャ。These resource files should have names such as MyResources.ja-JP.resources for the Japan (Japanese) culture, MyResources.de.resources for the German culture, MyResources.zh-CHS.resources for the simplified Chinese culture, and MyResources.fr-BE.resources for the French (Belgium) culture. 既定のリソース ファイルは、MyResources.resources を名前必要があります。The default resource file should be named MyResources.resources. カルチャ固有のリソース ファイルは、各カルチャのサテライト アセンブリに通常パッケージ化されます。The culture-specific resource files are commonly packaged in satellite assemblies for each culture. 既定のリソース ファイルは、アプリのメイン アセンブリに埋め込まれる必要があります。The default resource file should be embedded in the app's main assembly.

プライベートとしてマークするリソースを利用できるは常にそれらをマークするパブリックとして他のアセンブリによってアクセスできるようにできます。Note that allows resources to be marked as private, but you should always mark them as public so they can be accessed by other assemblies. (サテライト アセンブリにコードが含まれていないためプライベートとしてマークされているリソースは任意のメカニズムを通じてアプリで使用します。)(Because a satellite assembly contains no code, resources that are marked as private are unavailable to your app through any mechanism.)

作成の詳細については、パッケージ化、および、リソースのデプロイ記事を参照して、リソース ファイルの作成サテライト アセンブリの作成、およびパッケージ化と配置リソースします。For more information about creating, packaging, and deploying resources, see the articles Creating Resource Files, Creating Satellite Assemblies, and Packaging and Deploying Resources.

ResourceManager オブジェクトをインスタンス化します。Instantiating a ResourceManager Object

インスタンス化する、ResourceManager埋め込みの .resources ファイルからそのクラス コンス トラクターのオーバー ロードの 1 つを呼び出してリソースを取得するオブジェクトです。You instantiate a ResourceManager object that retrieves resources from an embedded .resources file by calling one of its class constructor overloads. これを密に結合をResourceManagerローカライズされたサテライト アセンブリに .resources ファイルの特定の .resources ファイルと、関連付けられたすべてのオブジェクト。This tightly couples a ResourceManager object with a particular .resources file and with any associated localized .resources files in satellite assemblies.

2 つの最もよく呼び出されたコンス トラクターは次のとおりです。The two most commonly called constructors are:

  • ResourceManager(String, Assembly) 2 つの指定した情報に基づいてリソースを検索する: .resources ファイル、および既定の .resources ファイルが存在するアセンブリの基本名。ResourceManager(String, Assembly) looks up resources based on two pieces of information that you supply: the base name of the .resources file, and the assembly in which the default .resources file resides. ベース名には、そのカルチャまたは拡張機能のない、.resources ファイルの名前空間とルート名が含まれています。The base name includes the namespace and root name of the .resources file, without its culture or extension. Visual Studio 環境で作成した .resources ファイルの操作を行いますが、通常、コマンドラインからコンパイルされる .resources ファイルには、名前空間の名前が含まれていないことに注意してください。Note that .resources files that are compiled from the command line typically do not include a namespace name, whereas .resources files that are created in the Visual Studio environment do. たとえば、MyCompany.StringResources.resources という名前のリソース ファイルは、ResourceManagerという名前の静的メソッドからコンス トラクターが呼び出されますExample.Main、次のコードをインスタンス化します、ResourceManagerからリソースを取得できます。リソース ファイル:For example, if a resource file is named MyCompany.StringResources.resources and the ResourceManager constructor is called from a static method named Example.Main, the following code instantiates a ResourceManager object that can retrieve resources from the .resources file:

    ResourceManager rm = new ResourceManager("MyCompany.StringResources", 
                                             typeof(Example).Assembly);
    
    Dim rm As New ResourceManager("MyCompany.StringResources",
                                  GetType(Example).Assembly)
    
  • ResourceManager(Type) 型のオブジェクトからの情報に基づいて、サテライト アセンブリにリソースを検索します。ResourceManager(Type) looks up resources in satellite assemblies based on information from a type object. 型の完全修飾名は、ファイル名拡張子なしの .resources ファイルのベース名に対応します。The type's fully qualified name corresponds to the base name of the .resources file without its file name extension. Visual Studio リソース デザイナーを使用して作成されたデスクトップ アプリでは、Visual Studio は、の完全修飾名は .resources ファイルのルート名と同じラッパー クラスを作成します。In desktop apps that are created by using the Visual Studio Resource Designer, Visual Studio creates a wrapper class whose fully qualified name is the same as the root name of the .resources file. MyCompany.StringResources.resources という名前のリソース ファイルは、という名前のラッパー クラスがある場合などMyCompany.StringResources、次のコードをインスタンス化、 ResourceManager .resources ファイルからリソースを取得できるオブジェクト。For example, if a resource file is named MyCompany.StringResources.resources and there is a wrapper class named MyCompany.StringResources, the following code instantiates a ResourceManager object that can retrieve resources from the .resources file:

    ResourceManager rm = new ResourceManager(typeof(MyCompany.StringResources));
    
    Dim rm As New ResourceManager(GetType(MyCompany.StringResources))
    

コンス トラクターの呼び出しを作成し、有効な場合は、適切なリソースが見つからないResourceManagerオブジェクト。If the appropriate resources cannot be found, the constructor call creates a valid ResourceManager object. ただし、リソースを取得しようとするがスローされます、MissingManifestResourceException例外。However, the attempt to retrieve a resource throws a MissingManifestResourceException exception. 例外に対処する方法については、次を参照してください。、 MissingManifestResourceException の処理と MissingSatelliteAssembly 例外この記事で後述する「します。For information about dealing with the exception, see the Handling MissingManifestResourceException and MissingSatelliteAssembly Exceptions section later in this article.

次の例では、インスタンス化する方法を示しています、ResourceManagerオブジェクト。The following example shows how to instantiate a ResourceManager object. 実行可能ファイル ShowTime.exe という名前のソース コードが含まれています。It contains the source code for an executable named ShowTime.exe. 次のテキスト ファイルを 1 つの文字列リソースを含む Strings.txt という名前も含まれていますTimeHeader:。It also includes the following text file named Strings.txt that contains a single string resource, TimeHeader:

TimeHeader=The current time is  

バッチ ファイルを使用するには、リソース ファイルを生成し、実行可能ファイルに埋め込むことです。You can use a batch file to generate the resource file and embed it into the executable. C# コンパイラを使用して、実行可能ファイルを生成するバッチ ファイルを次に示します。Here's the batch file to generate an executable by using the C# compiler:


resgen strings.txt  
csc ShowTime.cs /resource:strings.resources  

Visual Basic コンパイラでは、次のバッチ ファイルを使用できます。For the Visual Basic compiler, you can use the following batch file:


resgen strings.txt  
vbc ShowTime.vb /resource:strings.resources  
using System;
using System.Resources;

public class Example
{
   public static void Main()
   {
      ResourceManager rm = new ResourceManager("Strings", 
                               typeof(Example).Assembly);
      string timeString = rm.GetString("TimeHeader");
      Console.WriteLine("{0} {1:T}", timeString, DateTime.Now);   
   }
}
// The example displays output like the following:
//        The current time is 2:03:14 PM
Imports System.Resources

Module Example
   Public Sub Main()
      Dim rm As New ResourceManager("Strings", GetType(Example).Assembly)
      Dim timeString As String = rm.GetString("TimeHeader")
      Console.WriteLine("{0} {1:T}", timeString, Date.Now)   
   End Sub
End Module
' The example displays output similar to the following:
'       The current time is 2:03:14 PM

ResourceManager およびカルチャ固有のリソースResourceManager and Culture-Specific Resources

この記事で説明したようにローカライズされたアプリにデプロイするリソースが必要ですPackaging and Deploying Resourcesします。A localized app requires resources to be deployed, as discussed in the article Packaging and Deploying Resources. 取得する対象のリソースは、現在のスレッドに基づくアセンブリが正しく構成されている場合、resource manager を決定しますThread.CurrentUICultureプロパティ。If the assemblies are properly configured, the resource manager determines which resources to retrieve based on the current thread's Thread.CurrentUICulture property. (そのプロパティも返されます、現在のスレッド UI カルチャ)。たとえば、アプリをコンパイルした場合は、既定で 2 つのサテライト アセンブリでは、フランス語とロシア語の言語リソースを使用して、メイン アセンブリで英語の言語リソースとThread.CurrentUICultureFR-FR に設定されて、リソース マネージャーの取得、フランス語リソース。(That property also returns the current thread's UI culture.) For example, if an app is compiled with default English language resources in the main assembly and with French and Russian language resources in two satellite assemblies, and the Thread.CurrentUICulture property is set to fr-FR, the resource manager retrieves the French resources.

設定することができます、CurrentUICultureプロパティ明示的または暗黙的にします。You can set the CurrentUICulture property explicitly or implicitly. 設定する方法を決定する方法、ResourceManagerオブジェクトのカルチャに基づいてリソースを取得します。The way you set it determines how the ResourceManager object retrieves resources based on culture:

  • 明示的に設定する場合、Thread.CurrentUICultureプロパティ、リソース マネージャーを常に特定のカルチャをユーザーのブラウザーまたはオペレーティング システムの言語に関係なく、そのカルチャのリソースを取得します。If you explicitly set the Thread.CurrentUICulture property to a specific culture, the resource manager always retrieves the resources for that culture, regardless of the user's browser or operating system language. 既定の言語の英語リソースでコンパイルされるアプリと英語 (米国)、フランス語 (フランス)、およびロシア語 (ロシア) リソースを含む 3 つのサテライト アセンブリを検討してください。Consider an app that is compiled with default English language resources and three satellite assemblies that contain resources for English (United States), French (France), and Russian (Russia). 場合、CurrentUICultureプロパティが、FR-FR、ResourceManagerオブジェクトは常にフランス語 (フランス) リソースを取得、場合でも、ユーザーのオペレーティング システムの言語がフランス語ではありません。If the CurrentUICulture property is set to fr-FR, the ResourceManager object always retrieves the French (France) resources, even if the user's operating system language is not French. プロパティを明示的に設定する前に、目的の動作は、このことを確認します。Make sure that this is the desired behavior before you set the property explicitly.

    、ASP.NET アプリで設定する必要があります、Thread.CurrentUICultureプロパティを明示的になっていないため、サーバーの設定が着信クライアント要求を一致する可能性があります。In ASP.NET apps, you must set the Thread.CurrentUICulture property explicitly, because it is unlikely that the setting on the server will match incoming client requests. ASP.NET アプリを設定できる、Thread.CurrentUICultureプロパティ、ユーザーのブラウザーを明示的に使用する言語。An ASP.NET app can set the Thread.CurrentUICulture property explicitly to the user's browser accept language.

    明示的に設定、Thread.CurrentUICultureプロパティは、そのスレッドの現在の UI カルチャを定義します。Explicitly setting the Thread.CurrentUICulture property defines the current UI culture for that thread. アプリで他のスレッドの現在の UI カルチャには影響しません。It does not affect the current UI culture of any other threads in an app.

  • アプリケーション ドメイン内のすべてのスレッド UI カルチャを設定するには割り当てることで、 CultureInfo 、静的なカルチャを表すオブジェクトCultureInfo.DefaultThreadCurrentUICultureプロパティ。You can set the UI culture of all threads in an app domain by assigning a CultureInfo object that represents that culture to the static CultureInfo.DefaultThreadCurrentUICulture property.

  • 現在の UI カルチャが明示的に設定しないと、現在のアプリケーション ドメインの既定のカルチャを定義していない場合、CultureInfo.CurrentUICultureプロパティは、Windows によって暗黙的に設定GetUserDefaultUILanguage関数。If you do not explicitly set the current UI culture and you do not define a default culture for the current app domain, the CultureInfo.CurrentUICulture property is set implicitly by the Windows GetUserDefaultUILanguage function. この関数は、によって、Multilingual User Interface (MUI)、これにより、既定の言語を設定するユーザーに提供されます。This function is provided by the Multilingual User Interface (MUI), which enables the user to set the default language. UI 言語が、ユーザーが設定されていない場合の既定値はオペレーティング システムのリソースの言語は、システムにインストールされた言語です。If the UI language is not set by the user, it defaults to the system-installed language, which is the language of operating system resources.

次の単純な"Hello world"の例では、現在の UI カルチャが明示的に設定します。The following simple "Hello world" example sets the current UI culture explicitly. 次の 3 つのカルチャのリソースが含まれています: 英語 (米国) または EN-US、フランス語 (フランス)、または FR-FR、やロシア語 (ロシア) RU-RU です。It contains resources for three cultures: English (United States) or en-US, French (France) or fr-FR, and Russian (Russia) or ru-RU. Greetings.txt をという名前のテキスト ファイルでは、EN-US でリソースが含まれています。The en-US resources are contained in a text file named Greetings.txt:

HelloString=Hello world!  

Greetings.fr をという名前のテキスト ファイルに含まれる、FR-FR のリソースに入っています。The fr-FR resources are contained in a text file named Greetings.fr-FR.txt:

HelloString=Salut tout le monde!  

Greetings.ru をという名前のテキスト ファイルに含まれる RU-RU リソースに格納します。The ru-RU resources are contained in a text file named Greetings.ru-RU.txt:

HelloString=Всем привет!  

次の例では、(Visual Basic バージョンの Example.vb) または Example.cs c# バージョンのソース コードに示します。Here's the source code for the example (Example.vb for the Visual Basic version or Example.cs for the C# version):

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

public class Example
{
   public static void Main()
   {
      // Create array of supported cultures
      string[] cultures = {"en-CA", "en-US", "fr-FR", "ru-RU" };
      Random rnd = new Random();
      int cultureNdx = rnd.Next(0, cultures.Length);
      CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
      ResourceManager rm = new ResourceManager("Greetings", typeof(Example).Assembly);
      try {
         CultureInfo newCulture = new CultureInfo(cultures[cultureNdx]);
         Thread.CurrentThread.CurrentCulture = newCulture;
         Thread.CurrentThread.CurrentUICulture = newCulture;
         string greeting = String.Format("The current culture is {0}.\n{1}",
                                         Thread.CurrentThread.CurrentUICulture.Name,
                                         rm.GetString("HelloString"));
         Console.WriteLine(greeting);
      }
      catch (CultureNotFoundException e) {
         Console.WriteLine("Unable to instantiate culture {0}", e.InvalidCultureName);
      }
      finally {
         Thread.CurrentThread.CurrentCulture = originalCulture;
         Thread.CurrentThread.CurrentUICulture = originalCulture;
      }
   }
}
// The example displays output like the following:
//       The current culture is ru-RU.
//       Всем привет!
Imports System.Globalization
Imports System.Resources
Imports System.Threading

Module Example
   Sub Main()
      ' Create array of supported cultures
      Dim cultures() As String = {"en-CA", "en-US", "fr-FR", "ru-RU" }
      Dim rnd As New Random()
      Dim cultureNdx As Integer = rnd.Next(0, cultures.Length)
      Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
      Dim rm As New ResourceManager("Greetings", GetType(Example).Assembly)
      Try
         Dim newCulture As New CultureInfo(cultures(cultureNdx))
         Thread.CurrentThread.CurrentCulture = newCulture
         Thread.CurrentThread.CurrentUICulture = newCulture
         Dim greeting As String = String.Format("The current culture is {0}.{1}{2}",
                                                Thread.CurrentThread.CurrentUICulture.Name,
                                                vbCrLf, rm.GetString("HelloString"))

         Console.WriteLine(greeting)
      Catch e As CultureNotFoundException
         Console.WriteLine("Unable to instantiate culture {0}", e.InvalidCultureName)
      Finally
         Thread.CurrentThread.CurrentCulture = originalCulture
         Thread.CurrentThread.CurrentUICulture = originalCulture
      End Try
   End Sub
End Module
' The example displays output like the following:
'       The current culture is ru-RU.
'       Всем привет!

この例をコンパイルするには、次のコマンドを含み、コマンド プロンプトから実行バッチ (.bat) ファイルを作成します。To compile this example, create a batch (.bat) file that contains the following commands and run it from the command prompt. C# を使用している場合は、指定cscの代わりにvbcExample.csの代わりにExample.vbします。If you're using C#, specify csc instead of vbc and Example.cs instead of Example.vb.

resgen Greetings.txt   
vbc Example.vb /resource:Greetings.resources  

resgen Greetings.fr-FR.txt  
Md fr-FR  
al /embed:Greetings.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll  

resgen Greetings.ru-RU.txt  
Md ru-RU  
al /embed:Greetings.ru-RU.resources /culture:ru-RU /out:ru-RU\Example.resources.dll  

リソースの取得Retrieving Resources

呼び出す、GetObject(String)GetString(String)特定のリソースにアクセスするメソッド。You call the GetObject(String) and GetString(String) methods to access a specific resource. 呼び出すことも、GetStream(String)文字列以外のリソースをバイト配列として取得するメソッド。You can also call the GetStream(String) method to retrieve non-string resources as a byte array. 既定では、リソースがローカライズされているアプリでこれらのメソッドを返しますの呼び出しを行ったスレッドの現在の UI カルチャで決定するカルチャのリソース。By default, in an app that has localized resources, these methods return the resource for the culture determined by the current UI culture of the thread that made the call. 前のセクションを参照してください。 ResourceManager とカルチャ固有のリソース、スレッドの現在の UI カルチャを定義する方法の詳細についてはします。See the previous section, ResourceManager and Culture-Specific Resources, for more information about how the current UI culture of a thread is defined. リソース マネージャーは、現在のスレッド UI カルチャのリソースを見つけることができない場合、は、指定したリソースを取得するフォールバック プロセスが使用されます。If the resource manager cannot find the resource for the current thread's UI culture, it uses a fallback process to retrieve the specified resource. リソース マネージャーが、ローカライズされたリソースを見つけられない場合は、既定のカルチャのリソースが使用されます。If the resource manager cannot find any localized resources, it uses the resources of the default culture. リソース フォールバック規則の詳細については、この記事の「リソース フォールバック プロセス」セクションを参照してください。 Packaging and Deploying Resourcesします。For more information about resource fallback rules, see the "Resource Fallback Process" section of the article Packaging and Deploying Resources.

注意

.Resources ファイルが指定されている場合、ResourceManagerクラスのコンス トラクターが見つからない場合、リソースを取得しようとすると、スロー、MissingManifestResourceExceptionまたはMissingSatelliteAssemblyException例外。If the .resources file specified in the ResourceManager class constructor cannot be found, the attempt to retrieve a resource throws a MissingManifestResourceException or MissingSatelliteAssemblyException exception. 例外に対処する方法については、次を参照してください。、 MissingManifestResourceException の処理と MissingSatelliteAssemblyException 例外このトピックで後述します。For information about dealing with the exception, see the Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions section later in this topic.

次の例では、GetStringカルチャに固有のリソースを取得します。The following example uses the GetString method to retrieve culture-specific resources. 英語 (en)、フランス語 (フランス) (FR-FR)、およびロシア語 (ロシア) (RU-RU) の .txt ファイルからコンパイルされたリソースのカルチャ。It consists of resources compiled from .txt files for the English (en), French (France) (fr-FR), and Russian (Russia) (ru-RU) cultures. 例は、英語 (米国)、フランス語 (フランス)、ロシア語 (ロシア)、およびスウェーデン語 (スウェーデン) を現在のカルチャと現在の UI カルチャを変更します。The example changes the current culture and current UI culture to English (United States), French (France), Russian (Russia), and Swedish (Sweden). 呼び出して、GetStringメソッドをおよび現在の日付と月が表示されますが、ローカライズされた文字列を取得します。It then calls the GetString method to retrieve the localized string, which it displays along with the current day and month. スウェーデン語 (スウェーデン) が現在の UI カルチャの場合を除き、適切なローカライズされた文字列が表示に注意してください。Notice that the output displays the appropriate localized string except when the current UI culture is Swedish (Sweden). スウェーデン語の言語リソースが利用できないため、アプリは代わりに既定のカルチャは英語のリソースを使用します。Because Swedish language resources are unavailable, the app instead uses the resources of the default culture, which is English.

例では、次の表に記載されたテキスト ベースのリソース ファイルが必要です。The example requires the text-based resource files listed in following table. という名前の 1 つの文字列リソースを持つ各DateStartします。Each has a single string resource named DateStart.

cultureCulture ファイル名File name リソース名Resource name リソースの値Resource value
en-USen-US DateStrings.txtDateStrings.txt DateStart 今日がToday is
fr-FRfr-FR DateStrings.fr ファイルに格納DateStrings.fr-FR.txt DateStart Aujourd'hui、c'est leAujourd'hui, c'est le
ru-RUru-RU DateStrings.ru-RU.txtDateStrings.ru-RU.txt DateStart СегодняСегодня

次の例では、(Visual Basic バージョンの ShowDate.vb) または ShowDate.cs c# バージョンのコードのソース コードに示します。Here's the source code for the example (ShowDate.vb for the Visual Basic version or ShowDate.cs for the C# version of the code).

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.

この例をコンパイルするには、次のコマンドを含み、コマンド プロンプトから実行するバッチ ファイルを作成します。To compile this example, create a batch file that contains the following commands and run it from the command prompt. C# を使用している場合は、指定cscの代わりにvbcshowdate.csの代わりにshowdate.vbします。If you're using C#, specify csc instead of vbc and showdate.cs instead of showdate.vb.


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  

現在の UI カルチャ以外の特定のカルチャのリソースを取得する 2 つの方法はあります。There are two ways to retrieve the resources of a specific culture other than the current UI culture:

  • 呼び出すことができます、 GetString(String, CultureInfo)GetObject(String, CultureInfo)、またはGetStream(String, CultureInfo)特定カルチャのリソースを取得するメソッド。You can call the GetString(String, CultureInfo), GetObject(String, CultureInfo), or GetStream(String, CultureInfo) method to retrieve a resource for a specific culture. ローカライズされたリソースが見つからない場合、リソース マネージャーは、適切なリソースを検索するリソース フォールバック プロセスを使用します。If a localized resource cannot be found, the resource manager uses the resource fallback process to locate an appropriate resource.

  • 呼び出すことができます、GetResourceSetメソッドを取得する、ResourceSet特定のカルチャのリソースを表すオブジェクト。You can call the GetResourceSet method to obtain a ResourceSet object that represents the resources for a particular culture. メソッドの呼び出しで、ローカライズされたリソースを検索することがない場合、親カルチャのリソース マネージャーがプローブするかどうかや、かどうかだけにフォールバックの既定のカルチャのリソースを指定できます。In the method call, you can determine whether the resource manager probes for parent cultures if it is unable to find localized resources, or whether it simply falls back to the resources of the default culture. 使用することができますし、ResourceSetメソッド名、(そのカルチャのローカライズ版) のリソースにアクセスする、または、セット内のリソースを列挙します。You can then use the ResourceSet methods to access the resources (localized for that culture) by name, or to enumerate the resources in the set.

MissingManifestResourceException および MissingSatelliteAssemblyException 例外の処理Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions

特定のリソースを取得しようとするが、リソース マネージャーが見つからないことは、リソースとない既定のカルチャが定義されている、または既定のカルチャのリソースが存在することはできません、resource manager をスローするMissingManifestResourceException例外場合、メイン アセンブリにリソースを検索するが必要ですが、MissingSatelliteAssemblyExceptionサテライト アセンブリにリソースを検索することが必要な場合。If you try to retrieve a specific resource, but the resource manager cannot find that resource and either no default culture has been defined or the resources of the default culture cannot be located, the resource manager throws a MissingManifestResourceException exception if it expects to find the resources in the main assembly or a MissingSatelliteAssemblyException if it expects to find the resources in a satellite assembly. など、リソース取得メソッドを呼び出すときに、例外がスローされたことに注意してください。GetStringまたはGetObject、いないときにインスタンス化すると、ResourceManagerオブジェクト。Note that the exception is thrown when you call a resource retrieval method such as GetString or GetObject, and not when you instantiate a ResourceManager object.

次の条件下では、通常、例外がスローされます。The exception is typically thrown under the following conditions:

  • 適切なリソース ファイルまたはサテライト アセンブリが存在しません。The appropriate resource file or satellite assembly does not exist. リソース マネージャーには、アプリの既定のリソースをメイン アプリケーション アセンブリに埋め込むことが必要ですが、これらが存在しません。If the resource manager expects the app's default resources to be embedded in the main app assembly, they are absent. 場合、NeutralResourcesLanguageAttribute属性は、アプリの既定のリソースがサテライト アセンブリに存在する、アセンブリが見つからないことを示します。If the NeutralResourcesLanguageAttribute attribute indicates that the app's default resources reside in a satellite assembly, that assembly cannot be found. アプリをコンパイルするときに、リソースがメイン アセンブリに埋め込まれているか、必要に応じてサテライト アセンブリが生成され、適切にという名前を確認します。When you compile your app, make sure that resources are embedded in the main assembly or that the necessary satellite assembly is generated and is named appropriately. その名前がフォームを実行する必要がありますappName。 resources.dll、およびそれをカルチャが含まれているリソースを含む名前のディレクトリに配置する必要があります。Its name should take the form appName.resources.dll, and it should be located in a directory named after the culture whose resources it contains.

  • アプリは、既定値または定義されたニュートラル カルチャがありません。Your app doesn't have a default or neutral culture defined. 追加、NeutralResourcesLanguageAttribute属性をソース コード ファイルまたはプロジェクトの情報ファイル (Visual Basic アプリの AssemblyInfo.vb) または c# アプリの AssemblyInfo.cs ファイル。Add the NeutralResourcesLanguageAttribute attribute to a source code file or to the project information file (AssemblyInfo.vb for a Visual Basic app or AssemblyInfo.cs for a C# app) file.

  • baseNameパラメーター、ResourceManager(String, Assembly)コンス トラクターが .resources ファイルの名前を指定していません。The baseName parameter in the ResourceManager(String, Assembly) constructor does not specify the name of a .resources file. 名前には、リソース ファイルの完全修飾名前空間がないファイル名拡張子を含める必要があります。The name should include the resource file's fully qualified namespace but not its file name extension. 通常、Visual Studio で作成されるリソース ファイルは、名前空間の名前が作成され、コマンド プロンプトでコンパイルされたリソース ファイルはありません。Typically, resource files that are created in Visual Studio include namespace names, but resource files that are created and compiled at the command prompt do not. コンパイルし、次のユーティリティを実行して、埋め込みの .resources ファイルの名前を指定できます。You can determine the names of embedded .resources files by compiling and running the following utility. これは、メイン アセンブリまたはコマンド ライン パラメーターとしてのサテライト アセンブリの名前を指定するコンソール アプリです。This is a console app that accepts the name of a main assembly or satellite assembly as a command-line parameter. 文字列として指定する必要がありますが表示されます、baseNameパラメーター、リソース マネージャーでは、リソースを正しく特定できるようにします。It displays the strings that should be provided as the baseName parameter so that the resource manager can correctly identify the resource.

    using System;
    using System.IO;
    using System.Reflection;
    using System.Resources;
    
    public class Example
    {
       public static void Main()
       {
          if (Environment.GetCommandLineArgs().Length == 1) { 
             Console.WriteLine("No filename.");
             return;
          }
          
          string filename = Environment.GetCommandLineArgs()[1].Trim();
          // Check whether the file exists.
          if (! File.Exists(filename)) {
             Console.WriteLine("{0} does not exist.", filename);
             return;
          }   
          
          // Try to load the assembly.
          Assembly assem = Assembly.LoadFrom(filename);
          Console.WriteLine("File: {0}", filename);
             
          // Enumerate the resource files.
          string[] resNames = assem.GetManifestResourceNames();
          if (resNames.Length == 0)
             Console.WriteLine("   No resources found.");
    
          foreach (var resName in resNames)
             Console.WriteLine("   Resource: {0}", resName.Replace(".resources", ""));
    
          Console.WriteLine();
       }
    }
    
    Imports System.IO
    Imports System.Reflection
    Imports System.Resources
     
    Module Example
       Public Sub Main()
          If Environment.GetCommandLineArgs.Length = 1 Then 
             Console.WriteLine("No filename.")
             Exit Sub
          End If
          Dim filename As String = Environment.GetCommandLineArgs(1).Trim()
          ' Check whether the file exists.
          If Not File.Exists(filename) Then
             Console.WriteLine("{0} does not exist.", filename)
             Exit Sub
          End If   
          
          ' Try to load the assembly.
          Dim assem As Assembly = Assembly.LoadFrom(filename)
          Console.WriteLine("File: {0}", filename)
             
          ' Enumerate the resource files.
          Dim resNames() As String = assem.GetManifestResourceNames()
          If resNames.Length = 0 Then
             Console.WriteLine("   No resources found.")
          End If
          For Each resName In resNames
             Console.WriteLine("   Resource: {0}", resName.Replace(".resources", ""))
          Next
          Console.WriteLine()
       End Sub
    End Module
    

アプリケーションの現在のカルチャを明示的に変更する場合も覚えておいてください、resource manager での値に基づいてリソース セットを取得する、CultureInfo.CurrentUICultureプロパティ、および not、CultureInfo.CurrentCultureプロパティ。If you are changing the current culture of your application explicitly, you should also remember that the resource manager retrieves a resource set based on the value of the CultureInfo.CurrentUICulture property, and not the CultureInfo.CurrentCulture property. 通常、1 つの値を変更する場合変更する必要も、その他。Typically, if you change one value, you should also change the other.

リソースのバージョン管理Resource Versioning

アプリの既定のリソースを含むメイン アセンブリはアプリのサテライト アセンブリは別であるために、サテライト アセンブリを再デプロイしなくても、メイン アセンブリの新しいバージョンをリリースできます。Because the main assembly that contains an app's default resources is separate from the app's satellite assemblies, you can release a new version of your main assembly without redeploying the satellite assemblies. 使用する、SatelliteContractVersionAttribute既存のサテライト アセンブリを使用して、メインのアセンブリの新しいバージョンでそれらを再デプロイがリソース マネージャーに指示する属性You use the SatelliteContractVersionAttribute attribute to use existing satellite assemblies and instruct the resource manager not to redeploy them with a new version of your main assembly,

サテライト アセンブリのバージョン管理サポートの詳細については、記事を参照してください。のリソースの取得します。For more information about versioning support for satellite assemblies, see the article Retrieving Resources.

<satelliteassemblies > 構成ファイルのノード<satelliteassemblies> Configuration File Node

展開を行い、web サイト (HREF .exe ファイル) から実行される実行可能ファイルに対して、ResourceManagerオブジェクトは、アプリのパフォーマンスが低下することができます、web 経由でサテライト アセンブリをプローブ可能性があります。For executables that are deployed and run from a website (HREF .exe files), the ResourceManager object may probe for satellite assemblies over the web, which can hurt your app's performance. パフォーマンスの問題を排除するために、アプリをデプロイしたサテライト アセンブリへのプローブを制限できます。To eliminate the performance problem, you can limit this probing to the satellite assemblies that you have deployed with your app. 作成するを<satelliteassemblies>を指定し、アプリの特定のカルチャのセットを展開したアプリの構成ファイル内のノード、ResourceManagerオブジェクトはそのノードが表示されていない任意のカルチャのプローブしようとはしないでください。To do this, you create a <satelliteassemblies> node in your app's configuration file to specify that you have deployed a specific set of cultures for your app, and that the ResourceManager object should not try to probe for any culture that is not listed in that node.

注意

作成に代わる、<satelliteassemblies>ノードは、使用する、 ClickOnce 配置マニフェスト機能します。The preferred alternative to creating a <satelliteassemblies> node is to use the ClickOnce Deployment Manifest feature.

アプリの構成ファイルで、次のようなセクションを作成します。In your app's configuration file, create a section similar to the following:

<?xml version ="1.0"?>  
<configuration>  
    <satelliteassemblies>  
        <assembly name="MainAssemblyName, Version=versionNumber, Culture=neutral, PublicKeyToken=null|yourPublicKeyToken">  
            <culture>cultureName1</culture>  
            <culture>cultureName2</culture>  
            <culture>cultureName3</culture>  
        </assembly>  
    </satelliteassemblies>  
</configuration>  

次のように、この構成情報を編集します。Edit this configuration information as follows:

  • 1 つ以上指定<assembly>ノードを展開すると、各メイン アセンブリの各ノードが完全修飾アセンブリ名を指定します。Specify one or more <assembly> nodes for each main assembly that you deploy, where each node specifies a fully qualified assembly name. 代わりに、メイン アセンブリの名前を指定MainAssemblyNameを指定し、 VersionPublicKeyToken、およびCulture属性をメイン アセンブリに対応する値。Specify the name of your main assembly in place of MainAssemblyName, and specify the Version, PublicKeyToken, and Culture attribute values that correspond to your main assembly.

    Version属性は、アセンブリのバージョン番号を指定します。For the Version attribute, specify the version number of your assembly. たとえば、アセンブリの最初のリリースでは、バージョン番号は 1.0.0.0 可能性があります。For example, the first release of your assembly might be version number 1.0.0.0.

    PublicKeyToken属性、キーワードを指定するnull厳密な名前でアセンブリに署名していない場合は、アセンブリに署名した場合、公開キー トークンを指定します。For the PublicKeyToken attribute, specify the keyword null if you have not signed your assembly with a strong name, or specify your public key token if you have signed your assembly.

    Culture属性、キーワードを指定するneutralメイン アセンブリを指定して、ResourceManagerクラスのみで表示されているカルチャを探すために、<culture>ノード。For the Culture attribute, specify the keyword neutral to designate the main assembly and cause the ResourceManager class to probe only for the cultures listed in the <culture> nodes.

    完全修飾アセンブリ名の詳細については、記事を参照してください。アセンブリ名します。For more information about fully qualified assembly names, see the article Assembly Names. 厳密な名前付きアセンブリの詳細については、記事を参照してください。の作成と using strong-named Assembliesします。For more information about strong-named assemblies, see the article Creating and Using Strong-Named Assemblies.

  • 1 つ以上指定<culture>"FR-FR"などの特定のカルチャ名、または"fr"などのニュートラル カルチャ名を持つノード。Specify one or more <culture> nodes with a specific culture name, such as "fr-FR", or a neutral culture name, such as "fr".

下に表示されない任意のアセンブリにリソースが必要なかどうか、<satelliteassemblies>ノード、ResourceManagerクラスの標準のプローブ規則を使用するカルチャをプローブします。If resources are needed for any assembly not listed under the <satelliteassemblies> node, the ResourceManager class probes for cultures using standard probing rules.

Windows 8.x ストアWindows 8.x Store アプリ Apps

重要

ただし、ResourceManagerクラスではサポートされてWindows 8.x ストアWindows 8.x Storeアプリ、その用途をようお勧めできません。Although the ResourceManager class is supported in Windows 8.x ストアWindows 8.x Store apps, we do not recommend its use. このクラスを使用して開発する場合にのみポータブル クラス ライブラリPortable Class Libraryで使用できるプロジェクトWindows 8.x ストアWindows 8.x Storeアプリ。Use this class only when you develop ポータブル クラス ライブラリPortable Class Library projects that can be used with Windows 8.x ストアWindows 8.x Store apps. リソースを取得するWindows 8.x ストアWindows 8.x Store、アプリを使用して、 Windows.ApplicationModel.Resources.ResourceLoaderクラスの代わりにします。To retrieve resources from Windows 8.x ストアWindows 8.x Store apps, use the Windows.ApplicationModel.Resources.ResourceLoader class instead.

Windows 8.x ストアWindows 8.x Store 、アプリ、ResourceManagerクラスは、パッケージ リソース インデックス (PRI) ファイルからリソースを取得します。For Windows 8.x ストアWindows 8.x Store apps, the ResourceManager class retrieves resources from package resource index (PRI) files. 単一の PRI ファイル (アプリケーション パッケージの PRI ファイル) には、既定のカルチャおよびすべてのリソースが含まれています。 ローカライズ カルチャ。A single PRI file (the application package PRI file) contains the resources for both the default culture and any localized cultures. MakePRI ユーティリティを使用して、XML リソース (.resw) 形式では、1 つまたは複数のリソース ファイルから PRI ファイルを作成します。You use the MakePRI utility to create a PRI file from one or more resource files that are in XML resource (.resw) format. Visual Studio は、Visual Studio プロジェクトに含まれているリソースの作成および PRI ファイルを自動的にパッケージ化のプロセスを処理します。For resources that are included in a Visual Studio project, Visual Studio handles the process of creating and packaging the PRI file automatically. .NET Framework を使用することができますし、ResourceManagerクラス ライブラリのアプリのリソースにアクセスします。You can then use the .NET Framework ResourceManager class to access the app's or library's resources.

インスタンス化することができます、ResourceManagerオブジェクト、Windows 8.x ストアWindows 8.x Storeデスクトップ アプリの場合と同じ方法でアプリ。You can instantiate a ResourceManager object for a Windows 8.x ストアWindows 8.x Store app in the same way that you do for a desktop app.

取得するリソースの名前を渡すことによって、特定のカルチャのリソースにアクセスすることができますし、GetString(String)メソッド。You can then access the resources for a particular culture by passing the name of the resource to be retrieved to the GetString(String) method. 既定では、このメソッドは、呼び出しを行ったスレッドの現在の UI カルチャで決定するカルチャのリソースを返します。By default, this method returns the resource for the culture determined by the current UI culture of the thread that made the call. リソースの名前を渡すことによって、特定のカルチャのリソースを取得することも、CultureInfoがリソースを取得するカルチャを表すオブジェクトをGetString(String, CultureInfo)メソッド。You can also retrieve the resources for a specific culture by passing the name of the resource and a CultureInfo object that represents the culture whose resource is to be retrieved to the GetString(String, CultureInfo) method. 現在の UI カルチャまたは指定したカルチャのリソースが見つからない場合、resource manager は、適切なリソースを特定する UI 言語フォールバック リストを使用します。If the resource for the current UI culture or the specified culture cannot be found, the resource manager uses a UI language fallback list to locate a suitable resource.

コンストラクター

ResourceManager() ResourceManager() ResourceManager() ResourceManager()

ResourceManager クラスの新しいインスタンスを既定値で初期化します。 Initializes a new instance of the ResourceManager class with default values.

ResourceManager(String, Assembly) ResourceManager(String, Assembly) ResourceManager(String, Assembly) ResourceManager(String, Assembly)

指定したアセンブリ内で指定したルート名を持つファイルに含まれているリソースを検索する ResourceManager クラスの新しいインスタンスを初期化します。 Initializes a new instance of the ResourceManager class that looks up resources contained in files with the specified root name in the given assembly.

ResourceManager(String, Assembly, Type) ResourceManager(String, Assembly, Type) ResourceManager(String, Assembly, Type) ResourceManager(String, Assembly, Type)

指定した ResourceSet クラスを使用して、指定したアセンブリ内で指定したルート名を持つファイルに含まれるリソースを検索する ResourceManager クラスの新しいインスタンスを初期化します。 Initializes a new instance of the ResourceManager class that uses a specified ResourceSet class to look up resources contained in files with the specified root name in the given assembly.

ResourceManager(Type) ResourceManager(Type) ResourceManager(Type) ResourceManager(Type)

指定した型オブジェクトの情報に基づいて、サテライト アセンブリでリソースを検索する ResourceManager クラスの新しいインスタンスを初期化します。 Initializes a new instance of the ResourceManager class that looks up resources in satellite assemblies based on information from the specified type object.

フィールド

BaseNameField BaseNameField BaseNameField BaseNameField

ResourceManager がリソースを検索するリソース ファイルのルート名を指定します。 Specifies the root name of the resource files that the ResourceManager searches for resources.

HeaderVersionNumber HeaderVersionNumber HeaderVersionNumber HeaderVersionNumber

ResourceManager の現在の実装が解釈および作成できるリソース ファイル ヘッダーのバージョンを指定します。 Specifies the version of resource file headers that the current implementation of ResourceManager can interpret and produce.

MagicNumber MagicNumber MagicNumber MagicNumber

リソース ファイルを識別するために使用する番号を保持します。 Holds the number used to identify resource files.

MainAssembly MainAssembly MainAssembly MainAssembly

リソースを含むメイン アセンブリを指定します。 Specifies the main assembly that contains the resources.

ResourceSets ResourceSets ResourceSets ResourceSets

カルチャから ResourceSet オブジェクトへの割り当てを返す Hashtable を格納します。 Contains a Hashtable that returns a mapping from cultures to ResourceSet objects.

プロパティ

BaseName BaseName BaseName BaseName

ResourceManager がリソースを検索するリソース ファイルのルート名を取得します。 Gets the root name of the resource files that the ResourceManager searches for resources.

FallbackLocation FallbackLocation FallbackLocation FallbackLocation

既定のフォールバック リソースの取得元の場所を取得または設定します。 Gets or sets the location from which to retrieve default fallback resources.

IgnoreCase IgnoreCase IgnoreCase IgnoreCase

リソース マネージャーが GetString(String) メソッドと GetObject(String) メソッドで大文字と小文字を区別しないリソースの検索を許可しているかどうかを示す値を取得または設定します。 Gets or sets a value that indicates whether the resource manager allows case-insensitive resource lookups in the GetString(String) and GetObject(String) methods.

ResourceSetType ResourceSetType ResourceSetType ResourceSetType

ResourceSet オブジェクトの構築にリソース マネージャーが使用するリソース セット オブジェクトの型を取得します。 Gets the type of the resource set object that the resource manager uses to construct a ResourceSet object.

方法

CreateFileBasedResourceManager(String, String, Type) CreateFileBasedResourceManager(String, String, Type) CreateFileBasedResourceManager(String, String, Type) CreateFileBasedResourceManager(String, String, Type)

リソースのアセンブリ マニフェストではなく特定のディレクトリを検索する ResourceManager オブジェクトを返します。 Returns a ResourceManager object that searches a specific directory instead of an assembly manifest for resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。 Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。 Serves as the default hash function.

(Inherited from Object)
GetNeutralResourcesLanguage(Assembly) GetNeutralResourcesLanguage(Assembly) GetNeutralResourcesLanguage(Assembly) GetNeutralResourcesLanguage(Assembly)

指定したアセンブリで NeutralResourcesLanguageAttribute 属性の値を取得して、メイン アセンブリの既定のリソースのカルチャ固有の情報を返します。 Returns culture-specific information for the main assembly's default resources by retrieving the value of the NeutralResourcesLanguageAttribute attribute on a specified assembly.

GetObject(String) GetObject(String) GetObject(String) GetObject(String)

指定した文字列以外のリソースの値を返します。 Returns the value of the specified non-string resource.

GetObject(String, CultureInfo) GetObject(String, CultureInfo) GetObject(String, CultureInfo) GetObject(String, CultureInfo)

指定されたカルチャ用にローカライズされている指定された文字列以外のリソースの値を取得します。 Gets the value of the specified non-string resource localized for the specified culture.

GetResourceFileName(CultureInfo) GetResourceFileName(CultureInfo) GetResourceFileName(CultureInfo) GetResourceFileName(CultureInfo)

指定した CultureInfo オブジェクトのリソース ファイルの名前を生成します。 Generates the name of the resource file for the given CultureInfo object.

GetResourceSet(CultureInfo, Boolean, Boolean) GetResourceSet(CultureInfo, Boolean, Boolean) GetResourceSet(CultureInfo, Boolean, Boolean) GetResourceSet(CultureInfo, Boolean, Boolean)

特定のカルチャのリソース セットを取得します。 Retrieves the resource set for a particular culture.

GetSatelliteContractVersion(Assembly) GetSatelliteContractVersion(Assembly) GetSatelliteContractVersion(Assembly) GetSatelliteContractVersion(Assembly)

指定したアセンブリの SatelliteContractVersionAttribute 属性で指定されたバージョンを返します。 Returns the version specified by the SatelliteContractVersionAttribute attribute in the given assembly.

GetStream(String) GetStream(String) GetStream(String) GetStream(String)

指定したリソースからアンマネージ メモリ ストリーム オブジェクトを返します。 Returns an unmanaged memory stream object from the specified resource.

GetStream(String, CultureInfo) GetStream(String, CultureInfo) GetStream(String, CultureInfo) GetStream(String, CultureInfo)

指定したカルチャを使用し、指定したリソースからアンマネージ メモリ ストリーム オブジェクトを返します。 Returns an unmanaged memory stream object from the specified resource, using the specified culture.

GetString(String) GetString(String) GetString(String) GetString(String)

指定されている文字列リソースの値を返します。 Returns the value of the specified string resource.

GetString(String, CultureInfo) GetString(String, CultureInfo) GetString(String, CultureInfo) GetString(String, CultureInfo)

指定したカルチャにローカライズされている文字列リソースの値を返します。 Returns the value of the string resource localized for the specified culture.

GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。 Gets the Type of the current instance.

(Inherited from Object)
InternalGetResourceSet(CultureInfo, Boolean, Boolean) InternalGetResourceSet(CultureInfo, Boolean, Boolean) InternalGetResourceSet(CultureInfo, Boolean, Boolean) InternalGetResourceSet(CultureInfo, Boolean, Boolean)

リソース セットを検索するための実装を提供します。 Provides the implementation for finding a resource set.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。 Creates a shallow copy of the current Object.

(Inherited from Object)
ReleaseAllResources() ReleaseAllResources() ReleaseAllResources() ReleaseAllResources()

リソース マネージャーに、すべての ResourceSet オブジェクトの Close() メソッドを呼び出し、すべてのリソースを解放するように指示します。 Tells the resource manager to call the Close() method on all ResourceSet objects and release all resources.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。 Returns a string that represents the current object.

(Inherited from Object)

適用対象

スレッド セーフ

この型はスレッド セーフです。 This type is thread safe.

こちらもご覧ください