SharePoint ソリューションをローカライズする
アプリケーションを世界中で使用できるように準備するプロセスをローカライズと呼びます。 ローカライズでは、リソースを特定のカルチャに翻訳します。 詳細については、「アプリケーションのグローバライズとローカライズ」を参照してください。 このトピックでは、SharePoint ソリューションをローカライズする方法の概要について説明します。
ソリューションをローカライズするには、ハードコーディングされた文字列をコードから削除してリソース ファイルに抽出します。 リソース ファイルとは、.resx
拡張子を持つ XML ベースのファイルです。 リソース ファイルには、ソリューションで使用される文字列の翻訳されたバージョンが含まれています。 詳細については、「アプリケーションのリソース」を参照してください。
注意
SharePoint ソリューションのリソース ファイルに追加するのは文字列リソースだけです。 リソース エディターでは文字列以外のリソースも追加できますが、文字列以外のリソースは SharePoint に配置されません。
リソース ファイル
リソース ファイルには、既定のリソース ファイル、言語に依存しないリソース ファイル、および言語固有のリソース ファイルの 3 種類があります。
リソース ファイルの種類 | 説明 |
---|---|
Default | フォールバック リソースとも呼ばれます。既定のリソース ファイルには、既定のカルチャ (英語など) にローカライズされた文字列が含まれます。 これらは、指定された言語のローカライズされたリソース ファイルが見つからない場合に使用されます。 既定のリソースは、独立したファイルを持たず、メイン アプリケーション アセンブリに格納されます。 |
言語に依存しないリソース ファイル | 特定の言語にはローカライズされているが特定のカルチャにはローカライズされていない文字列を含むリソース ファイル (たとえば、フランス語の場合は "fr")。 |
言語固有のリソース ファイル | 特定の言語とカルチャにローカライズされた文字列を含むリソース ファイル (たとえば、フランス語 (カナダ) の場合は "fr-CA")。 |
詳細については、「ローカリゼーション用リソースの階層編成」を参照してください。
Visual Studio で開発する SharePoint プロジェクトで既定のリソース ファイルを指定するには、リソース ファイルを追加する際に、[リソースの追加] ダイアログ ボックスのカルチャの一覧で [ロケールに依存しない言語 (ロケールに依存しない国)] を選択します。
リソース ファイルを追加する
リソース ファイルを追加するためのコマンドは、ソリューション エクスプローラーのソリューション ノードとフィーチャー ノードのショートカット メニューにあります。
SharePoint ソリューションにグローバル リソース ファイルを追加するには
Visual Studio で、SharePoint ソリューションを開きます。
ソリューション エクスプローラーで、SharePoint プロジェクト ノードを選択します。次に、メニュー バーで [プロジェクト]>[新しい項目の追加] を選択します。
[新しい項目の追加] ダイアログ ボックスで [グローバル リソース ファイル] テンプレートを選択し、次に [追加] ボタンを選択します。
注意
[グローバル リソース ファイル] プロジェクト項目テンプレートは、SharePoint プロジェクト項目が選択されている場合にのみ表示されます。
[リソースの追加] ダイアログ ボックスで、リソース ファイルのカルチャ ([英語 (米国)] など) を選択します。
この手順では、
{Resource_x_}.{culture}.resx
という形式でグローバル リソース ファイルをソリューションに追加します (Resource1.en-US.resx など)。Visual Studio でリソース エディターが開いたら、リソース ファイルにリソースを追加します。
フィーチャー リソース ファイルを SharePoint フィーチャーに追加するには
SharePoint ソリューションが Visual Studio でまだ開いていない場合は、ソリューションを開きます。
ソリューション エクスプローラーで、 [フィーチャー] ノードの下にあるフィーチャーの名前のショートカット メニューを開き、 [フィーチャー リソースの追加] を選択します。
この手順では、
{ResourceFileName}.{culture}{.resx}
という形式でリソース ファイルをフィーチャーに追加します (Feature1.en-US.resx など)。Visual Studio でリソース エディターが開いたら、リソース ファイルにリソースを追加します。
Visual Studio SharePoint ソリューションをローカライズする
ソリューションをローカライズする際には、そのソリューションでユーザーに表示されるすべてのテキスト情報を考慮に入れる必要があります。 たとえば、情報メッセージ、エラー メッセージ、および UI 文字列を翻訳して、リソース ファイルに配置する必要があります。
リソース ファイルでは、すべての文字列に一意の識別子があります。 翻訳した文字列に対しては、各リソース ファイルで同じ識別子を使用する必要があります。 たとえば、既定のリソース ファイルの最初の文字列の識別子が "String1" だった場合は、言語固有のリソース ファイルの最初の文字列の識別子も "String1" にします。
Visual Studio SharePoint アプリケーションでは、フィーチャー、ASPX ページ マークアップ、およびコードの 3 つの領域をローカライズするのが一般的です。 以降の説明では、SharePoint ソリューションをドイツ語と日本語にローカライズする場合を想定しています。 既定の言語は English (英語) です。
フィーチャーをローカライズする
フィーチャーをローカライズするには、ハードコーディングされたフィーチャーのタイトルと説明を、ローカライズされたリソース ファイルに含まれている翻訳済みのタイトルと文字列を参照する式に置き換える必要があります。 この変更は、Visual Studio のフィーチャー デザイナーで行います。
英語のフィーチャーをドイツ語と日本語にローカライズするには、プロジェクトに 3 つのリソース ファイル プロジェクト項目 (英語用、ドイツ語用、および日本語用) を追加します。 フィーチャー リソース ファイルは、ASPX マークアップやコードのローカライズには使用できません。これらにはまた別のリソース ファイルが必要です。
フィーチャー リソース ファイルを作成したら、そこに翻訳済みの文字列を追加します。 ローカライズされた文字列にアクセスするには次の形式の式を使用します。
$Resources:String ID
Visual Studio のフィーチャー リソースの名前は常に Resources です。 ロケールに依存しない言語以外を選択した場合、リソース ファイル名にカルチャ ID が追加されます。 たとえば、ロケールに依存しない言語 (既定) のフィーチャー リソース ファイルを追加した場合は、Resources.resx と呼ばれます。 日本語 (日本) のカルチャを選択して言語固有のフィーチャー リソースを追加した場合、ファイルは Resources.ja-JP.resx と呼ばれます。 フィーチャー リソース ファイルの名前は自動的に割り当てられ、変更することはできません。
フィーチャー リソースのスコープは、追加先のフィーチャーのローカル スコープです。 ソリューション内の任意のフィーチャーまたは要素ファイルで使用できるリソースを作成するには、フィーチャー リソース ファイルではなく、グローバル リソース ファイル プロジェクト項目を追加します。 グローバル リソース ファイル プロジェクト項目は、 [新しい項目の追加] ダイアログ ボックスの [SharePoint] の下の 2010 フォルダーにあります。 グローバル リソース ファイルは、SharePoint ルート フォルダーの \Resources フォルダーに配置されます。
フィーチャーをローカライズするには
ソリューション エクスプローラーで、 [Feature1] ノードのショートカット メニューを開き、 [フィーチャー リソースの追加] を選択します。
[リソースの追加] ダイアログ ボックスで、既定の言語フィーチャー リソース ファイルのカルチャとして、一覧から [インバリアント言語] を選択します。
ローカライズされた言語ごとに前の手順を繰り返して、ローカライズされたフィーチャー リソース ファイルに対して必要な言語を選択します。
個別のフィーチャー リソース ファイルが作成されます。1 つは既定の言語用で、もう 1 つはサポートするローカライズ言語用です。
リソース エディターで各リソース ファイルを開き、すべての文字列 ID とその値を入力します。
たとえば、既定のフィーチャー リソース ファイルでは、 [Title] の文字列 ID に「フィーチャーのタイトル」という値、2 番目に [Description] の文字列 ID に「フィーチャーの説明」という値を入力します。 ローカライズされたリソース ファイルごとに、既定のフィーチャー リソースで使用されているのと同じ文字列 ID を使用しますが、値にはローカライズされた文字列を入力します。
すべてのリソース値を入力したら、フィーチャーのショートカット メニュー (Feature1.feature など) を開き、 [デザイナーの表示] を選択してフィーチャー デザイナーでフィーチャーを開きます。
フィーチャーの [タイトル] と [説明] フィールドをローカライズするには、次の書式を使用してボックスに値を入力します。
$Resources:
文字列 IDたとえば、 [フィーチャーのタイトル] ボックスに「$Resources:Title」と入力し、 [フィーチャーの説明] ボックスに「$Resources:Description」を入力します。
文字列 ID は、リソース ファイルで使用されているものと一致している必要があります。
F5 キーを押してアプリケーションをビルドし、実行します。
SharePoint で、 [サイトの操作] メニューを開き、 [サイトの設定] を選択します。次に、 [サイトの操作] セクションで、 [サイトのフィーチャーの管理] リンクを選択します。
SharePoint で、表示言語を既定の言語から変更します。
ローカライズされたフィーチャーのタイトルと説明がアプリケーションに表示されます。 ローカライズされたリソースを表示するには、リソース ファイルのカルチャに対応する Language Pack が SharePoint サーバーにインストールされている必要があります。
ASPX ページ マークアップをローカライズする
ASP.NET ページをローカライズするには、3 つのリソース ファイル プロジェクト項目 (英語用、ドイツ語用、日本語用にそれぞれ 1 つずつ) を追加します。 マークアップに加えてコードをローカライズする必要がない場合は、代わりにグローバル リソース ファイルを追加できます。
ASP.NET (.aspx) ページでは通常、ハードコーディングされた文字列値を使用します。 これらの文字列をローカライズするには、ローカライズされたリソースを参照する式で置き換えます。
ASPX マークアップをローカライズするには
個別のリソース ファイルを追加します。既定の言語用に 1 つと、ローカライズされた言語ごとに 1 つです。
コードではなくマークアップのみをローカライズする場合は、グローバル リソース ファイル プロジェクト項目を追加します。 コードとマークアップをローカライズする場合は、リソース ファイル プロジェクト項目を追加します。
グローバル リソース ファイルを追加するには、ソリューション エクスプローラーで、SharePoint プロジェクト項目のショートカット メニューを開き、 [追加]>[新規項目] を選択します。 SharePoint の [2010] ノードで、 [グローバル リソース ファイル] テンプレートを選択します。
リソース ファイルを追加するには、ソリューション エクスプローラーで、SharePoint プロジェクト項目のショートカット メニューを開き、 [追加]>[新規項目] を選択します。 [リソース ファイル] テンプレートを選択します。
注意
[配置タイプ] プロパティを有効にするために、SharePoint プロジェクト項目にリソース ファイルを必ず追加します。 このプロパティは、後で必要になります。 ソリューションに SharePoint プロジェクト項目がない場合は、空の SharePoint プロジェクトを追加して、既定の Elements.xml ファイルを削除できます。
既定の言語のリソース ファイルには、
.resx
拡張子が付いた任意の名前を付けます (MyAppResources.resx など)。 ローカライズされた各リソース ファイルに対しては、同じ基本名にカルチャ ID を加えた名前を使用します (ドイツ語の場合は MyAppResources.de-DE.resx など)。各リソース ファイルの [配置タイプ] プロパティの値を [AppGlobalResource] に変更して、サーバーの App_GlobalResources フォルダーに配置されるようにします。 App_GlobalResources フォルダーは、C:\inetpub\wwwroot\wss\VirtualDirectories\<ポート番号>\App_GlobalResources にあります。
リソースを ASPX マークアップだけでなくコードのローカライズにも使用する場合は、各ファイルの [ビルド アクション] プロパティの値を [埋め込まれたリソース] のままにします。 マークアップをローカライズするためにのみリソース ファイルを使う場合は、必要に応じて、ファイルのプロパティ値を [コンテンツ] に変更できます。 詳細については、「SharePoint ソリューションをローカライズする」を参照してください。
Note
グローバルではないリソース ファイルを使用する場合は、それらをプロジェクト項目フォルダーに移動します。これにより、[配置タイプ] プロパティやその他の SharePoint 固有のプロパティを使用できるようになります。
各リソース ファイルを開き、各ファイルで同じ文字列 ID を使用して、ローカライズされた文字列を追加します。
ASPX ページまたはコントロールの XML マークアップで、ハードコーディングされた文字列を、次の形式を使用する値に置き換えます。
<%$Resources:Resource File Name, String ID%>
たとえば、アプリケーション ページのラベル コントロールのテキストをローカライズするには、次のように変更します。
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"> <asp:Label ID="lbl" runat="server" Text="Label text"></asp:Label> </asp:Content>
to
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"> <asp:Label ID="lbl" runat="server" Text="<%$Resources:MyAppResources,String1%>"></asp:Label> </asp:Content>
F5 キーを押してアプリケーションをビルドし、実行します。
SharePoint で、表示言語を既定の言語から変更します。
ローカライズされた文字列がアプリケーションに表示されます。 ローカライズされたリソースを表示するには、リソース ファイルのカルチャに対応する Language Pack が SharePoint サーバーにインストールされている必要があります。
コードをローカライズする
フィーチャーの文字列と ASP.NET のマークアップに加えて、ソリューション コード内のメッセージ文字列やエラー文字列をローカライズする必要もあります。 ローカライズされた情報とエラー メッセージはサテライト アセンブリに格納されます。 サテライト アセンブリには、UI テキストや例外出力メッセージなど、ユーザーに表示される文字列が格納されます。
Visual Studio では、.NET Framework の標準のハブ アンド スポーク モデルが使用されており、 ハブ (メイン プログラム アセンブリ) に既定の言語リソースが含まれ、 スポーク (サテライト アセンブリ) に言語固有のリソースが含まれます。 詳細については、「リソースのパッケージ化と配置」を参照してください。 サテライト アセンブリはリソース ( .resx
) ファイルからコンパイルされます。 プロジェクトとソリューション パッケージに言語固有のリソース ファイルを追加すると、Visual Studio により、そのリソース ファイルが {プロジェクト名}.resources.dll という名前のサテライト アセンブリにコンパイルされます。
コードをローカライズするには
ソリューション エクスプローラーで、プロジェクト項目のショートカット メニューを開き、 [追加]>[モジュール] を選択します。
[リソース ファイル] テンプレートを選択します。
注意
Deployment Type プロパティを使用できるように、SharePoint プロジェクト項目にリソース ファイルを必ず追加します。 このプロパティは、後で必要になります。
既定の言語のリソース ファイルには、
.resx
拡張子が付いた任意の名前を付けます (MyAppResources.resx など)。ローカライズ言語ごとに手順 1. と 2. を繰り返して、SharePoint プロジェクト項目にそれぞれのリソース ファイルを追加します。
ローカライズされた各リソース ファイルに対しては、同じ基本名にカルチャ ID を加えた名前を使用します (ドイツ語の場合は MyAppResources.de-DE.resx など)。
各リソース ファイルを開いて、ローカライズされた文字列を追加します。 各ファイルで同じ文字列 ID を使用します。
各リソース ファイルの [配置タイプ] プロパティの値を [AppGlobalResource] に変更して、サーバーの App_GlobalResources フォルダーに配置されるようにします。
各ファイルの [ビルド アクション] プロパティの値は [埋め込まれたリソース] のままにします。
埋め込みリソースはプロジェクトの DLL にコンパイルされます。
プロジェクトをビルドして、リソースのサテライト DLL を作成します。
パッケージ デザイナーで、 [詳細設定] タブをクリックし、サテライト アセンブリを追加します。
[場所] ボックスで、場所のパスの先頭にカルチャ ID のフォルダーを追加します (de-DE\<Project Item Name>.resources.dll など)。
ソリューションで
System.Web
アセンブリがまだ参照されていない場合は、その参照を追加し、System.Web に対するディレクティブをコードに追加します。UI テキスト、エラー、メッセージ テキストなど、ユーザーへの表示用にコード内でハードコーディングされている文字列をすべて見つけます。 それらの文字列を、次の構文を使用する GetGlobalResourceObject メソッドの呼び出しに置き換えます。
HttpContext.GetGlobalResourceObject("Resource File Name", "String ID")
F5 キーを押してアプリケーションをビルドし、実行します。
SharePoint で、表示言語を既定の言語から変更します。
ローカライズされた文字列がアプリケーションに表示されます。 ローカライズされたリソースを表示するには、リソース ファイルのカルチャに対応する Language Pack が SharePoint サーバーにインストールされている必要があります。
ローカライズされていないコードでは、ハードコーディングされた文字列値が使用されています。 コードの文字列をローカライズするには、それらを GetGlobalResourceObject の呼び出しに置き換えます。このメソッドは、ローカライズされたリソースを参照します。
Web パーツ コードのローカライズ
Web パーツに含まれるカスタム プロパティ エディター機能には、ハードコーディングされた文字列を使用するコード属性 (WebDisplayName、Category、WebDescription など) が含まれています。 これらの属性の文字列値を置き換えるには、属性のクラスから派生する別のクラスを作成して、 それらのクラスで属性のプロパティを設定します。 属性のプロパティは基底クラスに依存します。 たとえば、WebDisplayName 属性のプロパティは DisplayNameValue で、WebDescription 属性のプロパティは DescriptionValue です。
派生クラスで、リソース ファイルの文字列 ID と ResourceManager オブジェクトを参照してその文字列 ID のローカライズされた値を取得し、 その値をプロパティ エディターの属性に返します。