SharePoint アドインをローカライズするLocalize SharePoint Add-ins

注意

このトピックは、SharePoint アドインの基本的な作成、SharePoint の機能、アドイン Web とホスト Web の区別、アドイン内に存在する可能性がある SharePoint コンポーネントの種類、および .resx ファイルのローカライズの基本の知識があることを前提としています。Note This topic assumes that you are familiar with basic creation of SharePoint Add-ins; and with SharePoint Features, the distinction between add-in webs and host webs, what kind of SharePoint components can be in an add-in, and the basics of localization with .resx files.

SharePoint アドインのローカライズを準備するGet ready to localize a SharePoint Add-in

始める前に以下を特定します。Before you begin, identify the following:

  • アドインがサポートする必要のあるロケールThe locales that your add-in needs to support. SharePoint Online、および言語パックがインストールされた SharePoint オンプレミスで、ユーザーが特定の言語とカルチャで Web サイトを作成できるようにします。SharePoint Online and SharePoint on-premises with Language Packs installed enable users to create websites in a specific language and culture. 顧客が使用するのがどのローカライズされた Web サイトであるのかを確認し、ローカライズされたバージョンのアドインのコンポーネントで、これらのうちどれをサポートするのか判断します。The locales that your add-in needs to support. SharePoint Online and SharePoint on premises with Language Packs installed enable users to create websites in a specific language and culture. Decide what localized websites your customers will be using and determine which of these you want to support with a localized version of your add-in's components.

  • アドインでローカライズする必要のあるコンポーネントThe components that you need to localize in your add-in.

また、以下を確認します。Also, be aware of the following:

アドイン Web コンポーネントをローカライズするLocalize the add-in web components

アドイン Web には、特定の種類の SP コンポーネントを含めることができます。An add-in web can contain specific kinds of SP components. SharePoint アドインに含められる SharePoint コンポーネントの種類については、「SharePoint アドインに含めることができる SharePoint コンポーネントの種類」を参照してください。For more information about the kinds of SharePoint components that can be in a SharePoint Add-in, see Types of SharePoint components that can be in a SharePoint Add-in. アドイン Web に展開されるコンポーネントをローカライズするには、アドイン Web コンポーネントを含むのと同じ機能のモジュールに .resx ファイルを追加します。To localize components that are deployed to an add-in web, you add .resx files in modules in the same feature that contains the add-in web component. そのリソースをコンポーネントのマークアップで参照します。You reference the resources in the markup of the component. その方法については、この記事で後述します。How you do this is explained later in this article. ただし、SharePoint アドインのカスタム サイト ページでは、このセクションで後述するように、.resx ファイルの代わりに JavaScript の文字列変数ファイルを使用します。However, custom site pages in a SharePoint Add-in use JavaScript string variable files instead of .resx files, as described later in this section.

注意

リソース ファイルは、アドイン Web の複数のフィーチャーで共有することはできません。Resource files cannot be shared by multiple add-in web features. .wsp ファイル内のフィーチャーごとに、別個のリソース ファイル セットを作成する必要があります。Resource files cannot be shared by multiple add-in web Features. For each Feature in the .wsp file, you have to create separate sets of resource files.

アドイン Web のリソース ファイルを作成する方法To create the add-in web resource files

  1. Visual Studio で SharePoint アドイン プロジェクトを開きます。(このトピックのスクリーンショットが取られたサンプルは、ASP.NET Web Form をプロジェクトのリモート Web アプリケーション部分とするプロバイダー ホスト型のアドインです。)Open the SharePoint Add-in project in Visual Studio. (The sample from which the screenshots in this topic were taken is a provider-hosted add-in with ASP.NET Web Forms as the remote web application part of the project.)

  2. ソリューション エクスプローラーで、フィーチャー名のショートカット メニューを開き、[フィーチャー リソースの追加] を選択します。In Solution Explorer, open the shortcut menu for the Feature name, and choose Add Feature Resource.

  3. [リソースの追加] ダイアログ ボックスで [ロケールに依存しない言語 (ロケールに依存しない国)] を選択し、[OK] を選択します。In the Add Resource dialog box, select Invariant Language (Invariant Country), and then select OK. ソリューション エクスプローラーで Resource.resx ファイルがフィーチャーのフォルダーに追加され、そのファイルが Visual Studio リソース エディターで開きます。In the Add Resource dialog box, choose Invariant Language (Invariant Country), and then choose the OK button. A Resources.resx file is added to the Feature's folder in Solution Explorer, and the file is opened in the Visual Studio Resource Editor.

    編集時、この "ロケールに依存しない言語" ファイルには、文字列のローカライズされたバージョンが用意されていない言語について、すべてのサイトのフィーチャー ギャラリーで使用される文字列が含まれます。When edited, this "invariant language" file contains the strings that are used in the Feature gallery on all sites in languages for which you are not going to be providing a localized version of strings. したがって、このファイル内の文字列で使用する言語は、SharePoint を使用するユーザーにとって第二言語である可能性が高い言語にする必要があります。So the language used for the strings in this file should be the language that is most likely to be a second language of people using SharePoint. 伝統的に、この目的のために英語が使用されていますが、一部のシナリオでは、別の言語の方が適している場合があります。Traditionally, English is used for this purpose, but in some scenarios another language might be a better choice. たとえば、一部の地域では、フランス語の方が英語よりも一般的な第二言語になります。For example, in some regions, French may be a more common second language of the users than English. このトピックに示す例では、ロケールに依存しない言語として英語を使用します。The continuing example in this topic uses English as the invariant language.

    注意

    SharePoint アドインは、アドイン マニフェストの [サポートされるロケール] セクションに言語がリストされていない Web サイトにはインストールできません。A SharePoint Add-in cannot be installed on a website whose language is not listed in the Supported Locales section of the add-in manifest. この記事で、ローカライズされたアドインを作成しない言語について説明される場合でも、その言語をアドイン マニフェストに追加する必要があることに留意してください。Keep in mind that when this article discusses languages for which you are not going to be providing a localized add-in, you still have to add such languages to the add-in manifest. アドイン マニフェストでサポートされるロケールについて詳しくは、この記事で後述する「ホスト Web のリソース ファイルを作成するには」の手順を参照してください。For more details about supported locales in the add-in manifest, see the procedure To create resource files for the host web later in this article.

  4. リソース エディターの 1 行目の [名前] 列に、文字列 (またはその他のリソース) の説明的な名前を入力します (例: OrdersListInstance_TitleOrdersListInstance_Description)。In the Name column of the top row in the Resource Editor, enter a descriptive name for the string (or other resource)—for example, OrdersListInstance_Title and OrdersListInstance_Description. These names of localizable resources are not themselves localized. Each resource must have its own name. ローカライズ可能リソースのこれらの名前自体はローカライズされません。These names of localizable resources are not themselves localized. 各リソースはそれぞれ固有の名前を持つ必要があります。Each resource must have its own name.

  5. [値] 列に、適切な文字列 (または URL またはその他のリソース) を、ロケールに依存しない言語で入力します (例: Orders、A list to store the orders)。In the Value column, enter an appropriate string (or URL or other resource) in the invariant language—for example,Orders, and A list to store the orders.

  6. 機能のコンポーネントで使用するためにローカライズする必要があるすべての文字列とリソースについて、名前と値のペアを追加します。Add additional name and value pairs for all strings and resources that should be localized for use in any components of your Feature.

  7. ファイルを保存します。Save the file.

  8. 前と同じフィーチャーに対して別のリソース ファイルを追加しますが、[ロケールに依存しない言語 (ロケールに依存しない国)] の代わりに、特定の言語を選択します。Add another resource file to the feature as you did before, but select a particular language instead of Invariant Language (Invariant Country). たとえば、[スペイン語 (スペイン)] を選択できます。For example, you can choose Spanish (Spain). Resources.LL-CC.resx ファイル (LLCC は、Internet Engineering Task Force (IETF) 互換言語とカルチャ コード) が、ソリューション エクスプローラーでフィーチャーのフォルダーに追加され、そのファイルが Visual Studio リソース エディターで開きます。Add another resource file to the Feature as you did before, but select a particular language instead of Invariant Language (Invariant Country). For example, you can choose Spanish (Spain). A Resources.LL-CC.resx file (where LL and CC are Internet Engineering Task Force (IETF)-compliant language and culture codes) is added to the Feature's folder in Solution Explorer, and the file is opened in the Visual Studio Resource Editor.

  9. リソース エディターを使用して、Resource.resx 内のすべての行をコピーし、新しい Resource.LL-CC.resx ファイルに貼り付けます。Using the Resource Editor, copy all the rows from Resources.resx, and paste them into the new Resources.LL-CC.resx file. (If Copy is not enabled on the context menu of the resource editor, use (リソース エディターのコンテキスト メニューで [コピー] が使用可能になっていない場合には、Ctrl+C を使用して、行をクリップボードにコピーします。)Using the Resource Editor, copy all the rows from Resources.resx, and paste them into the new Resources.LL-CC.resx file. (If Copy is not enabled on the context menu of the resource editor, use Ctrl-C to copy the rows into the clipboard.)

  10. Resource.LL-CC.resx ファイルで、[値] セルを、翻訳されたバージョンの文字列値に置き換えます。In the Resources.LL-CC.resx file, replace the Value cells with translated versions of the string values. For URLs and other non-string resources, replace the value with a new value that is appropriate for the language and culture. URL と他の文字列以外のリソースの値を、言語とカルチャに適した新しい値に置き換えます。In the Resources.LL-CC.resx file, replace the Value cells with translated versions of the string values. For URLs and other non-string resources, replace the value with a new value that is appropriate for the language and culture.

  11. 新しいファイルを保存します。Save the new file.

  12. 各言語で、前の 4 つの手順を繰り返します。Repeat the last four steps for each foreign language.

    注意

    ロケールに依存しない言語と同じ言語用の言語固有ファイルを追加することを考慮してください。Consider adding a language-specific file for the same language as your invariant language. これを行うと、文字列の値を変更せずに行をコピーできます。If you do, you can copy the rows without changing the values of the strings. 多くの場合、ロケールに依存しない言語のリソース ファイルで使用されている言語と同じ言語用の言語固有ファイルは必要ありません。これは、ファイル内のリソースが文字列のみである場合は特に当てはまります。In many situations, it is not necessary to have a language-specific file for the same language that is used in the resource file for the invariant language, especially when the only resources in the files are strings. ただし、リソース ファイルには、画像、アイコン、ファイルなどのさまざまな種類のリソースも含まれる可能性があります。But resource files can contain images, icons, files, and other kinds of resources too. 場合によっては、いずれかの言語固有ファイルの対応するリソースとは異なる画像などのリソースを使用するために、ロケールに依存しない言語のリソース ファイルが必要です。Sometimes, you need the invariant language resource file to use an image or other resource that is different from the corresponding resource in any of the language-specific files.

  13. 各ファイルで、[ビルド アクション] プロパティが [コンテンツ] に設定されていることを確認します。For each file, verify that the Build Action property is set to Content.

カスタム リスト内のローカライズされたリソースを呼び出す方法To call the localized resources in custom lists

  1. カスタム リストのタイトルおよび説明プロパティをローカライズするには、リストのインスタンスの Elements.xml ファイルを開きます。To localize the title and description properties of a custom list, open the Elements.xml file of the instance of the list. たとえば、このトピックに付随するサンプルでは、ソリューション エクスプローラーで、[BookstoreApp] > [Order Status] > [OrderStatusInstance] > [Elements.xml] に移動します。For example, in the sample that accompanies this topic, in Solution Explorer go to BookstoreApp > Order Status > OrderStatusInstance > Elements.xml.

  2. Title 属性に、「$Resources:StringName」と入力します。ここで、StringName は、前の手順でカスタム リストに名前を付けるために文字列に与えた名前です (値ではありません)。たとえば、「$Resources: OrdersListInstance_Title」と入力します。In the Title attribute, enter $Resources:StringName, where StringName is the name, not the value, you gave in the previous procedure to the string that names the custom list—for example, $Resources: OrdersListInstance_Title. Note that, unlike in some contexts where .resx files are used, the resource file name is not part of what you enter. なお、.resx ファイルが使用される一部のコンテキストとは異なり、リソース ファイルの名前は入力データの一部ではありませんNote that, unlike in some contexts where .resx files are used, the resource file name is not part of what you enter.

  3. Description 属性を使用して、リストの説明の文字列リソースを、同じ方法で呼び出します。たとえば、「$Resources:OrdersListInstance_Description」と入力します。Use the Description attribute to call the string resource of the list description in the same way—for example,$Resources:OrdersListInstance_Description. The following is the markup that uses the localized strings in the Elements.xml file of the instance of a list. 次に示すのは、リストのインスタンスの Elements.xml ファイル内でローカライズされた文字列を使用するマークアップです。Use the Description attribute to call the string resource of the list description in the same way—for example, $Resources:OrdersListInstance_Description. The following is the markup that uses the localized strings in the Elements.xml file of the instance of a list.

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
        <ListInstance 
            Title="$Resources:OrdersListInstance_Title" 
            OnQuickLaunch="TRUE" 
            TemplateType="10000" 
            Url="Lists/Orders" 
            Description="$Resources:OrdersListInstance_Description">
        </ListInstance>
    </Elements>
    

次に示すのは、英語でローカライズされたカスタム リストの画像です。The following image shows the localized custom list in English.

ローカライズされたカスタム リストLocalized custom list

ローカライズされたユーザー設定リスト

カスタム リストの列名をローカライズする方法To localize the column names of a custom list

  1. カスタム リストの列名は、タイトルや説明と同じ方法ではローカライズできません。You can't localize the column names of the custom list in the same way that you localize the title and description. 列名をローカライズするには、Elements.xml ファイルにリストのフィールドを宣言してから、DisplayName 属性の値をアドイン Web リソース ファイル内の参照に設定する必要があります。You can't localize the column names of the custom list in the same way as you localize the title and description. To localize the column names, you have to declare the list fields in an Elements.xml file and then set the DisplayName attribute value with references in the add-in web resource files. To begin, open the Schema.xml file of your custom list. Locate the Fields node and copy all its Field nodes. 開始するには、カスタム リストの Schema.xml ファイルを開きます。To begin, open the Schema.xml file of your custom list. Fields ノードを探し、そのすべての Field ノードをコピーします。Open the Schema.xml file of your custom list. Locate the Fields node and copy all its Field nodes.

  2. カスタム リストの Elements.xml ファイルを開きます。Open the Elements.xml file of your custom list. リストのインスタンスではなく、リスト定義の Elements.xml ファイルを開いてください。Open the Elements.xml file of your custom list. Make sure you open the Elements.xml file of the list definition, and not of the instance of the list. Paste the nodes from the previous step as children of the Elements node. 前の手順でコピーしたノードを、Elements ノードの子として貼り付けます。Paste the nodes from the previous step as children of the Elements node.

  3. すべての Field ノードについて、$Resources:StringName の値を DisplayName 属性に入力します。StringName はアドイン Web リソース ファイル内のエントリの名前です。For every Field node, enter a value of $Resources: StringName in the DisplayName attribute where StringName is the name of an entry in the add-in web resource file.

  4. カスタム リストの Schema.xml ファイルで、前にコピーしたすべての Field ノードの DisplayName 属性を削除します。次に示すのは、リスト定義の Elements.xml ファイルのローカライズされた文字列を使用するマークアップの例です。In the Schema.xml file of your custom list, remove the DisplayName attribute of every Field node that you previously copied. The following is an example markup that uses the localized strings in the Elements.xml file of the list definition.

    <?xml version="1.0" encoding="utf-8"?>
        <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
            <ListTemplate
                Name="Orders"
                Type="10000"
                BaseType="0"
                OnQuickLaunch="TRUE"
                SecurityBits="11"
                Sequence="410"
                DisplayName="Orders"
                Description="My List Definition"
                Image="/_layouts/15/images/itgen.png"/>
            <Field
                Name="Bookname"
                ID="{2ef60a05-29b6-41db-9611-c0cf7d8e73c5}"
                DisplayName="$Resources:OrdersListColumn_Bookname"
                Type="Text"
                Required="TRUE" />
            <Field
                Name="Price"
                ID="{7af42815-d69e-426a-a1c8-9da5610e362c}"
                DisplayName="$Resources:OrdersListColumn_Price"
                Type="Currency"
                Required="FALSE" />
            <Field
                Name="Orderstatus"
                ID="{687ee751-2e0a-4099-966e-d2c225d48234}"
                DisplayName="$Resources:OrdersListColumn_Orderstatus"
                Type="Lookup"
                Required="FALSE"
                List="Lists/Order status"
                ShowField="Title" />
        </Elements>
    


カスタム ページ用の JavaScript リソース ファイルを作成する方法To create JavaScript resource files for custom pages

  1. SharePoint アドインのカスタム サイト ページでは、JavaScript 文字列変数ファイルが .resx ファイルの代わりに使用されます。Custom site pages in a SharePoint Add-in use JavaScript string variable files instead of .resx files.

    最初に、ソリューション エクスプローラーで、(Web アプリケーションのプロジェクトにではなく) SharePoint アドインのプロジェクトに Scripts というフォルダー名がない場合は追加します。To begin, in Solution Explorer, add a folder named Scripts to the SharePoint add-in project (not the web application project) if there isn't one there already. Scripts フォルダーを右クリックして、[追加] > [新しい項目] > [Web] > [JavaScript ファイル] の順に選択します。Right-click the Scripts folder and select Add > New Item > Web > JavaScript File. ファイルに Resources.LL-CC.js という名前を付けます。ここで、LL は言語コードで、CC は国/地域コードまたはカルチャ コードです (例: Resources.en-US.js)。Name the file Resources.LL-CC.js (where LL is a language code and CC is a country/region or culture code); for example, Resources.en-US.js.

  2. 各言語で、上記の手順を繰り返します。Repeat the preceding step for each foreign language. これで、すべての言語用の空白の JavaScript ファイルが用意されます。You should now have blank JavaScript files for every language. "Resources.js"という名前の、ロケールに依存しない言語ファイルは作成しないでください。Do not create an invariant language file named "Resources.js". 理由については、後の手順の中で説明します。The reason is explained in a later procedure.

  3. 新しく作成した最初の JavaScript ファイルを開きます。Open the first of the new JavaScript files.

  4. 各カスタム ページの各ローカライズ可能文字列に対して、文字列を識別する目的の名前となる変数をファイル内に宣言し、言語に適した値を割り当てます。For each localizable string in each of your custom pages, declare a variable in the file with a name that identifies the purpose of the string and assign it a value that is appropriate for the language. The following is the contents of the Resources.en-US.js file. 次に示すのは Resources.en-US.js ファイルの内容です。The following is the contents of the Resources.en-US.js file.

        var instructionstitle = "Instructions:";
        var step01 = "Go to any document library in the host web.";
        var step02 = "Go to the Library tab.";
        var step03 = "Click \"Request a book\" in the Settings group.";
        var step04 = "Click the contextual menu in any document.";
        var step05 = "Click \"Buy this book\" in the contextual menu.";
        var step06 = "Go to any SharePoint page in the host web and add the" + " Bookstore orders add-in part.";
        var step07 = "Review the localized <a href=\"../Lists/Orders\">Orders</a>" + " and <a href=\"../Lists/Order status\">Order status</a> custom lists.";
    
  5. このファイルの内容を、残りの JavaScript ファイルにコピーし、すべてのファイルを保存します。Copy the contents of the file into each of the remaining JavaScript files, and then save all files.

  6. 各ファイルで、各変数の値を、各ファイルの言語に適した新しい値に置き換えます。In each file, replace the value of each variable with a new value that is appropriate to the language of the file. Do not change the variable names. 変数名は変更しないでください。Do not change the variable names.

カスタム ASPX ページでローカライズされた変数を呼び出す方法To call the localized variables in custom ASPX pages

  1. ソリューション エクスプローラーで、カスタム ASPX ページ ファイルを開きます。In Solution Explorer, open a custom ASPX page file.

  2. ページの読み込み時に、ローカライズされた JavaScript ファイルが 1 つだけ読み込まれ、そのファイルが SharePoint アドイン Web に適していることを確認してください。Make sure that only one of the localized JavaScript files is loaded when your page loads, and it should be the one that is appropriate for the language of the SharePoint add-in web. To do this, add the following markup to the asp:content element of the page that has a with the value . There are no placeholders in the following markup. Enter the markup exactly as it appears here. これを行うには、値が PlaceholderAdditionalPageHeadContentPlaceholderId がある、ページの asp:content 要素に次のマークアップを追加する必要があります。To do this, add the following markup to the asp:content element of the page that has a ContentPlaceholderId with the value PlaceholderAdditionalPageHead. 次のマークアップにはプレースホルダーはありません。ここに示したマークアップとまったく同じように入力してください。There are no placeholders in the following markup. Enter the markup exactly as it appears here.

        <script type="text/javascript" src="../scripts/Resources.<SharePoint:EncodedLiteral runat='server' text='<%$Resources:wss,language_value%>' EncodeMethod='HtmlEncode' />.js"></script>
    

    このマークアップは、JavaScript ファイルのいずれかを読み込みます。This markup loads one of your JavaScript files. language_value という名前の SharePoint リソースを読み取って、どの言語ファイルを読み込むかを決定します。It determines which language file to load by reading the SharePoint resource named language_value. このリソースは、前の手順に記載されている LL-CC パターンの言語 - カルチャ名に解決されます。This resource resolves to a language-culture name in the pattern LL-CC that was described in an earlier procedure. 具体的には、アドイン Web の言語に解決されます。Specifically, it resolves to the language of the add-in web.

    注意

    SharePoint リソース language_value は null ではないので、このスクリプトが "Resources.js" という名前のファイルを呼び出すことはありません。The SharePoint resource language_value is never null, so a file named "Resources.js" would never be called by this script. 前の手順でそのファイルを作成しなかったのは、この理由からです。That is why you did not make one in the preceding procedure. language_value の値が .js ファイルを持たない言語の場合、このスクリプトは何も読み込みません。When the value of language_value is a language for which there is no .js file, this script loads nothing. 次の手順では、そのような状況で文字列がロケールに依存しない言語の値をどのように取得するか説明します。The next step explains how strings get an invariant language value in that situation.

  3. ページ上のローカライズ可能な要素と属性値に対して、それぞれ、ロケールに依存しない言語で既定値を指定しますが、そのときに、JavaScript を使用して、Resources.LL-CC.js ファイルから適切な変数を割り当てます。For each localizable element and attribute value on the page, give it a default value in the invariant language, but then use JavaScript to assign it the appropriate variable from the Resources.LL-CC.js file. たとえば、ページの h2 要素にタイトルがある場合は、その要素に id 属性を指定した後、ローカライズされる要素の下に script 要素を挿入して、その innerText プロパティにローカライズされた文字列を割り当てます。For example, if the page has a title in an h2 element, give the element an id attribute, and then insert a script element below the localized elements to assign localized strings to the innerText property of the localized elements. このローカライズ コードを実行するのは、Resources.LL-CC.js ファイルが読み込まれ、変数が宣言される場合だけです。This localization code should only run if a Resources.LL-CC.js file loaded and declared the variables. そのため、いずれかの変数が定義されているかどうかを最初にテストする条件ブロック内にそれを含めます。So put it in a conditional block that first tests whether one of the variables is defined. 定義されていない場合、リソース スクリプトが読み込まれないため、既定の (ロケールに依存しない) 値は変更されません。If it is not, no resource script loaded, and the default (invariant) values should remain unchanged. 次に例を示します。The following is an example.

    ヒント

    ロケールに依存しない文字列の先頭に「INVARIANT」という語が追加されています。The word "INVARIANT" has been added to the first of the invariant strings. これを製品アドインで行うことはありませんが、テストの際にロケールに依存しない言語文字列が使用されているか、またはロケールに依存しない言語になる言語の Resources.LL-CC.js ファイルが読み込まれたかを一目で知るための役立つ方法となります。The word "INVARIANT" has been added to the first of the invariant strings. You would not do this in a production add-in, but while you are testing, it is a useful way of seeing at a glance whether invariant language strings are being used or whether the Resources.LL-CC.js file for the language that happens to be your invariant language was loaded.

    <h2 id="instructionsheading">INVARIANT Instructions</h2>
        <ol>
            <li id="step01">Go to any document library in the host web.</li>
            <li id="step02">Go to the Library tab.</li>
            <li id="step03">Click "Request a book" in the Settings group.</li>
            <li id="step04">Click the contextual menu in any document.</li>
            <li id="step05">Click "Buy this book" in the contextual menu.</li>
            <li id="step06">Go to any SharePoint page in the host web and add the Bookstore orders add-in part.</li>
            <li id="step07">Review the localized <a href="../Lists/Orders">Orders</a> and <a href="../Lists/Order status">Order status</a> custom lists.</li>
        </ol>

    <!-- Use the localized strings in the resource JavaScript file -->
        <script type="text/javascript">
            window.onload = function () {
                <!-- Test whether a Resources.LL-CC.js loaded.
                    If none was, the invariant values remain unchanged. -->
                if (typeof instructionstitle != 'undefined')  
                {
                    document.getElementById("instructionsheading").innerText = instructionstitle;
                    document.getElementById("step01").innerText = step01;
                    document.getElementById("step02").innerText = step02;
                    document.getElementById("step03").innerText = step03;
                    document.getElementById("step04").innerText = step04;
                    document.getElementById("step05").innerText = step05;
                    document.getElementById("step06").innerText = step06;
                    document.getElementById("step07").innerHTML = step07;
                }
            }
        </script>


次の図は、アドインが完了したときの、英語バージョンのページのプレビューを示しています。The following image gives a preview of how the English version of the page will look when the add-in is completed.

JavaScript リソース ファイルのローカライズされた文字列を使用する Web ページWebpage using localized strings from a JavaScript resource file

ローカライズされた文字列を使用した SharePoint ページ

ホスト Web コンポーネントをローカライズするLocalize the host web components

AppManifest.xml ファイルで指定されているアドイン タイトルをローカライズできます。You can localize the add-in title, which is specified in the AppManifest.xml file. これは、[Your Add-ins] ページでユーザーに対して表示されるデータです。This is what users see on the Your Add-ins page. SharePoint アドインのホスト Web には、カスタム アクション、アドイン パーツ、または両方を含めることができます。The host web for a SharePoint Add-in can also include a custom action, an add-in part, or both. これらは、ホスト Web フィーチャーに展開されます。These are deployed in a host web feature. これらのコンポーネントの両方に、ローカライズ可能文字列を含められます。Both of these components can have localizable strings.

ホスト Web コンポーネントをローカライズする方法は、アドイン Web コンポーネントをローカライズする方法と本質的には同じです。ローカライズされたリソースは .resx ファイル内にアイテム化され、マークアップ ファイルから呼び出されます。ただし、Visual Studio では、ホスト Web フィーチャーに適用される場合ほど、プロセスに対するツール サポートは提供されていません。後で説明するように、手動プロセスがあります。The essential method for localizing host web components is the same as for localizing add-in web components: localized resources are itemized in a .resx file and are called from the markup files. However, Visual Studio does not have as much tooling support for the process as it applies to host web features. There is a manual process involved that is explained later in this section.

ホスト Web のリソース ファイルを作成する方法To create resource files for the host web

  1. ソリューション エクスプローラーで、AppManifest.xml ファイルを選択してアドイン マニフェスト デザイナー ツールを開きます。In Solution Explorer, choose the AppManifest.xml file to open the add-in manifest designer tool.

  2. [サポートされるロケール] タブを開きます。Open the Supported Locales tab.

  3. [ロケール] 列の先頭の空のセルで、ドロップダウン リストを開き、サポートする最初のロケールを選択します。In the top blank cell of the Locales column, open the drop-down list and choose the first locale that you want to support. 2 つのファイルが作成されて、SharePoint アドイン プロジェクトに追加されます。Resources.resx は、ロケールに依存しない言語のリソース ファイルです。Resources.LL-CC.resx には、ローカライズされたリソースが格納されます。In the top blank cell of the Locales column, open the drop-down list and choose the first locale that you want to support. Two files are created and added to the SharePoint Add-in project: Resources.resx, which is the invariant language resource file, and Resources. LL_CC_.resx, which will contain the localized resources. Don't change the names of these files. これらのファイルの名前は変更しないでください。Don't change the names of these files.

  4. アドインのローカライズ バージョンによってサポートする各ロケールについて、前の手順を繰り返します。Repeat the previous step for each locale you want to support with a localized version of the add-in. An additional Resources. LLCC.resx file is created for each locale. ロケールごとに、Resources.LL-CC.resx ファイルが追加作成されます。An additional Resources.LL-CC.resx file is created for each locale.

    注意

    これらの各ファイルの [ビルド アクション] プロパティは、[リソース] ではなく [コンテンツ] に設定されます。The Build Action property of each of these files is set to Content, not Resource. Don’t change this setting. この設定は変更しないでください。Don't change this setting.

  5. また、アドインをインストール可能にする、しかしロケールに依存しない言語を使用する必要のある (つまりアドインのローカライズ バージョンを提供 しない) すべてのロケール用に、ロケール エントリを追加します。Also add locale entries for every locale where you want your add-in to be installable, but where it should use the invariant language; that is, locales for which you will not be providing a localized version of the add-in. Delete the .resx files that are created for these locales. それらのロケール用に作成される .resx ファイルを削除してください。Delete the .resx files that are created for these locales.

  6. Resources.resx ファイルを開き、アドイン Web のリソース ファイルの場合と同じように、リソースの名前と値をファイルに追加します。Open the Resources.resx file and add resource names and values to the file just as you did for the add-in web resource files. 少なくとも、アドイン タイトル用のリソースを用意する必要があります。At a minimum, you should have a resource for the add-in title. ホスト Web フィーチャーは SharePoint UI のどこにも表示されないので、ホスト Web フィーチャーのタイトルや説明のローカライズされた文字列は必要ありません。The host web feature does not appear in the SharePoint UI anywhere, so you do not need localized strings for the host web feature title or description. フィーチャーにカスタム アクションがある場合は、CustomAction 要素の Title 属性用のリソースが必要であり、おそらくカスタム アクション マークアップ内に他の文字列も必要です。If the feature has a custom action, you need a resource for the Title attribute of the CustomAction element, and possibly other strings in the custom action markup. アドイン パーツがある場合は、ClientWebPart 要素の Title 属性と Description 属性用のリソースが必要です。If there is an add-in part, you need resources for the Title and Description attributes of the ClientWebPart element. アドイン パーツにカスタム プロパティがある場合は、同様にローカライズする必要のある属性が各 Property にあります。If the add-in part has custom properties, each Property has attributes that should be localized as well. これらのすべてについて、リソース ファイル内に該当する行が必要です。For each of these, you need a row in the resources file.

  7. Resources.resx ファイルの内容を、各 Resources.LL-CC.resx ファイルにコピーします。Copy the contents of the Resources.resx file into each of the Resources.LL-CC.resx files.

  8. 各 Resources.LL-CC.resx ファイルの各リソースを、アドイン Web リソース ファイルと同じようにローカライズします。Localize each resource in each Resources.LL-CC.resx file just as you did for the add-in web resource files.

アドイン マニフェスト ファイル、その他の XML ファイル内のローカライズされたリソースを呼び出す方法To call the localized resources in the add-in manifest, and other XML files

  1. AppManifest.xml ファイルを開き、Title 要素の値を、適切なリソース文字列の呼び出しに置き換えます。Open the AppManifest.xml file and replace the Title element value with a call to the appropriate resource string. For example, if you named the stringAddin_Title, the Title element should look like the following: たとえば、文字列に Addin_Title という名前を付けた場合、Title 要素は次のようになります。Open the AppManifest.xml file and replace the Title element value with a call to the appropriate resource string. For example, if you named the string Addin_Title, the Title element should look like the following:

        <Title>$Resources:Addin_Title;</Title>
    

    警告

    Title の値に含めることができるのは、リソースへの呼び出しのみです。The value of Title can contain only the call to the resource. There can be no other text, symbols, or white space. 他のテキストや、シンボル、スペースを含めることはできません。The value of Title can contain only the call to the resource. There can be no other text, symbols, or white space.

  2. アドイン パーツやカスタム アクションの Elements.xml など、他の XML ファイルのローカライズされたリソースを呼び出すには、アドイン マニフェスト ファイルで使用したものと同じ形式を使用します。To call localized resources in other XML files, such as Elements.xml for add-in parts and custom actions, you use the same format that you used in the add-in manifest file.

SharePoint アドイン内のリモート コンポーネントをローカライズするLocalize remote components in a SharePoint Add-in

リモート コンポーネントが PHP などの Microsoft 以外のフォーマットの場合は、該当するプラットフォームのローカライズに関する説明を参照してください。If the remote components are PHP or other non-Microsoft formats, see the localization guidance for the appropriate platform. リモート コンポーネントが ASP.NET の場合は、他のすべての ASP.NET アプリケーションと同様にローカライズします。When the remote componets are ASP.NET, you localize them just as you would any other ASP.NET application. 詳細については、「ASP.NET のグローバリゼーションとローカリゼーション」を参照してください。For more information, see ASP.NET Globalization and Localization.

ホスト Web の言語に合うようにページの言語とスレッドの言語をオーバーライドしてください。これは ASP.NET ページの分離コードにある継承された InitializeCulture メソッドをオーバーライドすることによって行います。ホスト Web の言語を識別するには、SharePoint がリモート ページに渡す SPLanguage クエリ パラメーターを使用します。次のコードは、ASP.NET でこれを行う方法を示しています。PHP Web アプリケーションや他のプラットフォームでも、類似の方法で行うことができます。Override the page language and the thread language to match the language of the host web. You do this by overriding the inherited InitializeCulture method in the code-behind of your ASP.NET pages. To identify the host web's language, use the SPLanguage query parameter that SharePoint passes to the remote page. The following code shows how to do this in ASP.NET. You should do something parallel in a PHP web application or other platform.

    protected override void InitializeCulture()
    {
        if (Request.QueryString["SPLanguage"] != null)
        {
            string selectedLanguage = Request.QueryString["SPLanguage"];

            // Override the page language.
            UICulture = selectedLanguage;
            Culture = selectedLanguage;

            // Reset the thread language.
            Thread.CurrentThread.CurrentCulture =
                CultureInfo.CreateSpecificCulture(selectedLanguage);
            Thread.CurrentThread.CurrentUICulture = new
                CultureInfo(selectedLanguage);
        }
        base.InitializeCulture();
    }


リモート JavaScript と SharePoint クロム コントロールのローカライズLocalize remote JavaScript and the SharePoint chrome control

Web アプリケーションの JavaScript にローカライズ可能な文字列値がある場合、それらを JavaScript リソース ファイルを使用してローカライズできます。If there are localizable string values in your web application's JavaScript, you can localize them using JavaScript resource files. ローカライズ可能な JavaScript の特に重要な例は SharePoint クロム コントロールで、これを使用するとリモート ページを SharePoint ページのように見せることができます。If there are localizable string values in your web application's JavaScript, you can localize them using JavaScript resource files. An especially important example of localizable JavaScript is the SharePoint chrome control, which can be used to give remote pages the appearance of SharePoint pages. We'll use the localization of the chrome control as an example in this section. このセクションでは、クロム コントロールのローカライズを例として使用します。We'll use the localization of the chrome control as an example in this section.

注意

このセクションでは、文字列のローカライズについてのみ説明します。This section only discusses string localization. 日付や通貨形式など必要性のより大きなローカライズについては、「jQuery 用のグローバライズ アドオン」などのローカライズまたはグローバリゼーション ライブラリの使用を検討してください。Note This section only discusses string localization. For more powerful localization needs, such as localization of date or currency formatting, consider using a localization or globalization library, such as the Globalize add-on for jQuery.

クロム コントロールをローカライズする方法To localize the chrome control

  1. クロム コントロールの機能が開始した後に、クロム オプションを設定した renderChrome メソッドに戻ります。After you have the chrome control working, return to the renderChrome method where you set the chrome options.

        function renderChrome() {
            var options = {
                "appIconUrl": "siteicon.png",
                "appTitle": "My SharePoint add-in", // Localizable string
                "appHelpPageUrl": "Help.html?"
                    + document.URL.split("?")[1],
                "onCssLoaded": "chromeLoaded()",
                "settingsLinks": [
                    {
                        "linkUrl": "Account.html?"
                            + document.URL.split("?")[1],
                        "displayName": "Account settings" // Localizable string
                    },
                    {
                        "linkUrl": "Contact.html?"
                            + document.URL.split("?")[1],
                        "displayName": "Contact us" // Localizable string
                    }
                ]
            };
    


  2. コメントに記されているように、少なくとも 3 つのローカライズ可能な文字列があります。それぞれを、後の手順で宣言する変数名に置き換えます。As noted in the comments, there are at least three localizable strings. Replace each of these with a variable name that you declare in a later step.

        function renderChrome() {
            var options = {
                "appIconUrl": "siteicon.png",
                "appTitle": chromeAppTitle, // Localized value
                "appHelpPageUrl": "Help.html?"
                    + document.URL.split("?")[1],
                "onCssLoaded": "chromeLoaded()",
                "settingsLinks": [
                    {
                        "linkUrl": "Account.html?"
                            + document.URL.split("?")[1],
                        "displayName": chromeAccountLinkName // Localized value
                    },
                    {
                        "linkUrl": "Contact.html?"
                            + document.URL.split("?")[1],
                        "displayName": chromeContactUsLinkName // Localized value
                    }
                ]
            };
    


  3. ChromeStrings という名前の JavaScript ファイルを Web アプリケーション プロジェクトに追加します。そこでは直前の手順で使用された変数を宣言して、ロケールに依存しない言語でそれぞれに値を割り当てる必要があります。Add a JavaScript file named ChromeStrings.js to the web application project. It should declare the variables you used in the preceding step and assign them each a value in the invariant language.

    var chromeAppTitle = "My SharePoint add-in";
    var chromeAccountLinkName = "Account settings";
    var chromeContactUsLinkName = "Contact us";
    
  4. アドインをローカライズする言語ごとに、ChromeStrings.LL-CC.js という名前の別の JavaScript ファイルを追加します。ここで、LL-CC は言語 ID です。For each language for which you are localizing the add-in, add another JavaScript file with the name ChromeStrings.LL-CC.js, where LL-CC is the language ID. * ファイル名のベース (このケースでは "ChromeStrings") は、ロケールに依存しない言語のファイルに使用したものと完全に同じでなければなりません。The base of the file name, in this case "ChromeStrings," must be exactly the same as you used for the invariant language file.* ロケールに依存しない言語のファイルの内容をローカライズされる各ファイルにコピーして、それらの値を翻訳されたバージョンに置き換えます。Copy the contents of the invariant language file into each of the localized files, and replace the values with translated versions.

    var chromeAppTitle = "Mi aplicación SharePoint";
    var chromeAccountLinkName = "Preferencias";
    var chromeContactUsLinkName = "Contacto";
    
  5. スクリプト SP.UI.controls.js が呼び出されるすべてのページ ファイルで、その上の ChromeStrings.js に対する呼び出しを追加します。たとえば、SP.UI.controls.js への呼び出しが ChromeLoader.js という名前の中間ファイルに読み込まれる場合、この時点でのページのマークアップは次のようになるはずです。In any page file where the script SP.UI.controls.js is called, add a call to the ChromeStrings.js above it. For example, if the call to SP.UI.controls.js is loaded in an intermediate file called ChromeLoader.js, the markup in the page at this point should look similar to the following.

    <Scripts>
        <asp:ScriptReference Path="Scripts/ChromeStrings.js" />
        <asp:ScriptReference Path="Scripts/ChromeLoader.js" />
    </Scripts>
    
  6. 文字列を呼び出す ScriptReference 要素に ResourceUICultures 属性を追加します。これはサポートする言語のコンマ区切りリストです。Add a ResourceUICultures attribute to the ScriptReference element that calls your strings. Its value is a comma-delimited list of the languages that you are supporting.

    <Scripts>
        <asp:ScriptReference Path="Scripts/ChromeStrings.js" ResourceUICultures="en-US,es-ES" />
        <asp:ScriptReference Path="Scripts/ChromeLoader.js" />
    </Scripts>
    

    ResourceUICultures 属性の効果として、ASP.NET は ChromeStrings.LL-CC.js という名前のファイルを検索して読み込みます。ここで、LL-CC はページの言語であり、それが読み込まれます。The effect of the ResourceUICultures attribute is that ASP.NET will look for a file with the name ChromeStrings. LL-CC.js, where LL-CC is the language of the page and load it. If it doesn't find such a file, it will load the ChromeStrings.js file. そのようなファイルが見つからない場合、ChromeStrings.js ファイルを読み込みます。If it doesn't find such a file, it loads the ChromeStrings.js file.

ローカライズされた SharePoint アドインをテストするTest your localized SharePoint Add-in

アドインでサポートされるいずれかの言語で準備された SharePoint Web サイトに展開することによって、アドインをテストします。SharePoint Online Web サイトまたは社内 Web サイトでアドインをテストできます。Test your add-in by deploying it to a SharePoint website that is provisioned in one of the languages your add-in supports. You can test your add-in on a SharePoint Online website or an on-premises website.

SharePoint Online Web サイトでアドインをテストするにはTo test your add-in on a SharePoint Online website

  1. Office 365 管理センターに移動します。Go to your Office 365 admin center.

  2. ナビゲーション メニューで [サービス設定][サイト] の順に選択します。Choose service settings on the navigation menu, and then choose sites.

  3. サイト コレクションで [サイト コレクションの作成] を選択します。Under site collections, choose Create site collection.

  4. [言語の選択] で、アドインをテストする言語を選択します。Under select a language, select the language in which you want to test your add-in.

  5. [テンプレートの選択] で、[開発者向けサイト] を選択します。Under select a template, choose Developer Site.

  6. SharePoint アドイン プロジェクトで SiteUrl プロパティを、新しいサイト コレクションの URL で更新します。In your SharePoint Add-in project, update the SiteUrl property with the URL of the new site collection.

  7. F5 キーを選択してアドインを実行します。Press F5 to run the add-in.

サイト コレクション ページの作成

オンプレミスの Web サイトでアドインをテストする方法To test your add-in an on-premises website

  1. アドインをテストする言語パックをインストールします。Install the language pack in which you want to test your add-in. 詳細については、「SharePoint 用の言語パックをインストールまたはアンインストールする」および「SharePoint Server 2013 の言語パックのダウンロード」を参照してください。For more information, see Install or uninstall language packs for SharePoint and Download language packs for SharePoint Server 2013.

  2. ファームの全体管理を開きます。Open Central Administration for the farm.

  3. [アプリケーション構成の管理] で、[サイト コレクションの作成] を選択します。Under Application Management, choose Create site collections.

  4. [言語の選択] で、アドインをテストする言語を選択します。Under select a language, select the language in which you want to test your add-in.

  5. [テンプレートの選択] で、[開発者向けサイト] を選択します。Under select a template, choose Developer Site.

  6. SharePoint アドイン プロジェクトで SiteUrl プロパティを、新しく作成したサイト コレクションの URL に更新します。In your SharePoint Add-in project, update the SiteUrl to the URL of the recently created site collection.

  7. F5 キーを選択してアドインを実行します。Press F5 to run the add-in.

関連項目See also