SharePoint ソリューションのローカライズ
アプリケーションを世界中で使用できるように準備するプロセスをローカライズと呼びます。 ローカライズでは、リソースを特定のカルチャに翻訳します。 詳細については、「アプリケーションのグローバライズとローカライズ」を参照してください。 このトピックでは、SharePoint ソリューションをローカライズする方法の概要について説明します。
ソリューションをローカライズするには、ハードコーディングされた文字列をコードから削除してリソース ファイルに抽出します。 リソース ファイルとは、.resx 拡張子を持つ XML ベースのファイルです。 リソース ファイルには、ソリューションで使用される文字列の翻訳されたバージョンが含まれています。 詳細については、「Resources in Applications (アプリケーションのリソース)」を参照してください。
注意
SharePoint ソリューションのリソース ファイルに追加するのは文字列リソースだけです。 リソース エディターでは文字列以外のリソースも追加できますが、文字列以外のリソースは SharePoint に配置されません。
リソース ファイル
リソース ファイルには、既定のリソース ファイル、言語に依存しないリソース ファイル、および言語固有のリソース ファイルの 3 種類があります。
リソース ファイルの種類 |
説明 |
---|---|
既定値 |
フォールバック リソースとも呼ばれます。既定のリソース ファイルには、既定のカルチャ (英語など) にローカライズされた文字列が含まれます。 これらは、指定された言語のローカライズされたリソース ファイルが見つからない場合に使用されます。 既定のリソースは、独立したファイルを持たず、メイン アプリケーション アセンブリに格納されます。 |
言語に依存しないリソース ファイル |
特定の言語にはローカライズされているが特定のカルチャにはローカライズされていない文字列を含むリソース ファイル (たとえば、フランス語の場合は "fr")。 |
言語固有のリソース ファイル |
特定の言語とカルチャにローカライズされた文字列を含むリソース ファイル (たとえば、フランス語 (カナダ) の場合は "fr-CA")。 |
詳細については、「ローカリゼーション用リソースの階層編成」を参照してください。
Visual Studio SharePoint プロジェクトで既定のリソース ファイルを指定するには、リソース ファイルを追加するときに、[リソースの追加] ダイアログ ボックスのカルチャの一覧で [インバリアント言語 (Invariant 国)] を選択します。
Visual Studio SharePoint ソリューションのローカライズ
ソリューションをローカライズする際には、そのソリューションでユーザーに表示されるすべてのテキスト情報を考慮に入れる必要があります。 たとえば、情報メッセージ、エラー メッセージ、および UI 文字列を翻訳して、リソース ファイルに配置する必要があります。
リソース ファイルでは、すべての文字列に一意の識別子があります。 翻訳した文字列に対しては、各リソース ファイルで同じ識別子を使用する必要があります。 たとえば、既定のリソース ファイルの最初の文字列の識別子が "String1" だった場合は、言語固有のリソース ファイルの最初の文字列の識別子も "String1" にします。
Visual Studio SharePoint アプリケーションでは、フィーチャー、ASPX ページ マークアップ、およびコードの 3 つの領域をローカライズするのが一般的です。 以降の説明では、SharePoint ソリューションをドイツ語と日本語にローカライズする場合を想定しています。 既定の言語は英語です。
フィーチャーのローカライズ
フィーチャーをローカライズするには、ハードコーディングされたフィーチャーのタイトルと説明を、ローカライズされたリソース ファイルに含まれている翻訳済みのタイトルと文字列を参照する式に置き換える必要があります。 この変更は、Visual Studio のフィーチャー デザイナーで行います。 詳細については、「方法: フィーチャーをローカライズする」を参照してください。
英語のフィーチャーをドイツ語と日本語にローカライズするには、プロジェクトに 3 つのリソース ファイル プロジェクト項目 (英語用、ドイツ語用、および日本語用) を追加します。 フィーチャー リソース ファイルは、ASPX マークアップやコードのローカライズには使用できません。これらにはまた別のリソース ファイルが必要です。
フィーチャー リソース ファイルを作成したら、そこに翻訳済みの文字列を追加します。 ローカライズされた文字列にアクセスするには次の形式の式を使用します。
$Resources:String ID
Visual Studio のフィーチャー リソースの名前は常に Resources です。 インバリアント言語以外の言語を選択した場合は、リソース ファイル名にカルチャ ID が追加されます。たとえば、インバリアント言語 (既定) のフィーチャー リソース ファイルを追加した場合は Resources.resx になります。 日本語 (日本) のカルチャを選択して言語固有のフィーチャー リソースを追加した場合は名前が Resources.ja-JP.resx になります。 フィーチャー リソース ファイルの名前は自動的に割り当てられ、変更することはできません。
フィーチャー リソースのスコープは、追加先のフィーチャーのローカル スコープです。 ソリューション内の任意のフィーチャー ファイルや要素ファイルで使用できるリソースを作成するには、フィーチャー リソース ファイルではなく [グローバル リソース ファイル] プロジェクト項目を追加します。 [グローバル リソース ファイル] プロジェクト項目は、[新しい項目の追加] ダイアログ ボックスの [SharePoint] の下の [2010] フォルダーにあります。 グローバル リソース ファイルは、SharePoint ルート フォルダーの \Resources フォルダーに配置されます。
詳細については、「チュートリアル: Visual Studio SharePoint アプリケーションのローカライズ」を参照してください。
ASPX ページ マークアップのローカライズ
ASP.NET ページをローカライズするには、プロジェクトに 3 つのリソース ファイル プロジェクト項目 (英語用、ドイツ語用、および日本語用) を追加します。マークアップに加えてコードをローカライズする必要がない場合は、代わりにグローバル リソース ファイルを追加できます。
既定の言語のリソース ファイルに任意の名前を付けます。 ローカライズされたリソース ファイルに対しては、同じ名前に言語固有のカルチャ ID を加えた名前を使用します (ドイツ語の場合は MyAppResources.de-DE.resx、日本語の場合は MyAppResources.ja-JP.resx など)。
各リソース ファイルの [配置タイプ] プロパティを [AppGlobalResource] に設定します。 これにより、リソース ファイルが App_GlobalResources フォルダーに配置されます。このフォルダーに配置されたリソース ファイルは、ソリューション内のすべての ASPX ページと ASPX コントロールで使用できます。 App_GlobalResources フォルダーは、C:\inetpub\wwwroot\wss\VirtualDirectories\<port number>\App_GlobalResources にあります。
注意
グローバルではないリソース ファイルを使用する場合は、それらをプロジェクト項目フォルダーに移動します。これにより、[配置タイプ] プロパティやその他の SharePoint 固有のプロパティを使用できるようになります。
ASPX マークアップ リソース ファイルは、コードのローカライズにも使用できます。 リソースを ASPX マークアップだけでなくコードのローカライズにも使用する場合は、各ファイルの [ビルド アクション] プロパティの設定を [埋め込まれたリソース] のままにして、リソースがサテライト アセンブリにコンパイルされるようにします。 リソース ファイルをマークアップのローカライズのみに使用する場合は、[ビルド アクション] プロパティを [コンテンツ] に変更して、ファイルがメイン アプリケーション アセンブリにコンパイルされないようにすることもできます。
ASPX ページと ASPX コントロールのマークアップで、ハードコーディングされたプロパティ文字列をすべて次の形式の式に置き換えます。
<asp:<class> runat="server" Text="<%$Resources:<Resource File Name>, <String ID>%>" />
次に例を示します。
<asp:Button ID="btn1" runat="server" onclick="btn1_Click" Text="<%$Resources:Resource1,String7%>"></asp:Button>
テキストとしての ASPX に対しては次の形式の式を使用します。
<asp:literal ID="<ID>" runat="server" Text="<%$Resources:<Resource File Name>, <String ID>%>" />
次に例を示します。
<asp:literal ID="Literal1" runat="server" Text="<%$Resources:Resource1, String9%>" />
詳細については、「方法: ASPX マークアップをローカライズする」および「チュートリアル: Visual Studio SharePoint アプリケーションのローカライズ」を参照してください。
コードのローカライズ
フィーチャーの文字列と ASP.NET のマークアップに加えて、ソリューション コード内のメッセージ文字列やエラー文字列をローカライズする必要もあります。 ローカライズされた情報メッセージやエラー メッセージはサテライト アセンブリに格納されます。サテライト アセンブリには、UI テキストや、例外のような出力メッセージなど、ユーザーに表示される文字列が含まれています。
Visual Studio では、.NET Framework の標準のハブ アンド スポーク モデルが使用されており、 ハブ (メイン プログラム アセンブリ) に既定の言語リソースが含まれ、 スポーク (サテライト アセンブリ) に言語固有のリソースが含まれます。 詳細については、「Packaging and Deploying Resources (リソースのパッケージ化と配置)」を参照してください。 サテライト アセンブリはリソース (.resx) ファイルからコンパイルされます。 プロジェクトとソリューション パッケージに言語固有のリソース ファイルを追加すると、それらのリソース ファイルが Visual Studio によって Project Name.resources.dll という名前のサテライト アセンブリにコンパイルされます。
SharePoint アプリケーションのコードをローカライズするには、ASPX マークアップの場合と同様に、既定の言語用と各ローカライズ言語用の個別のリソース ファイル プロジェクト項目をプロジェクトに追加します。 ただし、前述のとおり、ASPX マークアップのローカライズ用のリソース ファイルが既にある場合は、それらをコードのローカライズに再利用できます。 リソース ファイルを作成する必要がある場合は、.resx 拡張子が付いた任意の名前を既定の言語のリソース ファイルに付けます。 ローカライズされたリソース ファイルに対しては、同じ名前に言語固有のカルチャ ID を加えた名前を使用します。 各リソース ファイルの [ビルド アクション] プロパティを [埋め込まれたリソース] に設定して、サテライト リソース アセンブリが作成されるようにします。
サテライト アセンブリを作成するには、プロジェクトをビルドした後、パッケージ デザイナーの [詳細設定] タブでファイルを追加のアセンブリとして追加します。 アセンブリを追加する際には、場所のパスの先頭にカルチャ ID のフォルダーを追加します (de-DE\Project Item Name.resources.dll など)。 これにより、同じ名前の複数のファイルをパッケージに含めることができます。
コードで次の構文を使用して、ハードコーディングされた文字列を GetGlobalResourceObject メソッドの呼び出しに置き換えます。
HttpContext.GetGlobalResourceObject("<Resource File Name>", "<String ID>")
詳細については、「方法: コードをローカライズする」および「チュートリアル: Visual Studio SharePoint アプリケーションのローカライズ」を参照してください。
Web パーツ コードのローカライズ
Web パーツに含まれるカスタム プロパティ エディター機能には、ハードコーディングされた文字列を使用するコード属性 (WebDisplayName、Category、WebDescription など) が含まれています。 これらの属性の文字列値を置き換えるには、属性のクラスから派生する別のクラスを作成して、 それらのクラスで属性のプロパティを設定します。 属性のプロパティは基本クラスに依存します。 たとえば、WebDisplayName 属性のプロパティは DisplayNameValue で、WebDescription 属性のプロパティは DescriptionValue です。
派生クラスで、リソース ファイルの文字列 ID と ResourceManager オブジェクトを参照してその文字列 ID のローカライズされた値を取得し、 その値をプロパティ エディターの属性に返します。 詳細については、「チュートリアル: Visual Studio SharePoint アプリケーションのローカライズ」を参照してください。
参照
処理手順
方法: リソース ファイルを使用して、ローカライズした名前、プロパティ、およびアクセス許可を指定する