多言語ユーザー インターフェイス (MUI) について

最終更新日: 2015年3月9日

適用対象: SharePoint Foundation 2010

この記事の内容
多言語ユーザーインターフェイスの用語
第 2 言語のサポートを有効にする
表示言語を変更する
表示テキストのローカライズ方法
翻訳をユーザー リソースに追加する

Microsoft SharePoint Foundation 2010 の多言語ユーザー インターフェイス (MUI) 機能を使用すると、ユーザーが Web サイトのユーザー インターフェイス (UI) の言語を変更できます。

たとえば、スペイン語を話すユーザーが英語の UI で作業している場合は、UI をスペイン語に変更し、サイトのツールバー、ナビゲーション バー、リスト タイトル、および列の見出しをスペイン語で表示できます。同様に、アラビア語を話すユーザーは UI をアラビア語に変更できます。この場合、ツールバー、ナビゲーション バー、リスト タイトル、および列の見出しがアラビア語で表示され、左から右方向のサイトが右から左方向に変更されます。

これを可能にするために、言語は、SharePoint Foundation 2010 サーバーにインストールされている言語パックで使用できなければなりません。また、SharePoint Foundation サイトの所有者は、その言語をサイトの第 2 言語として有効にする必要があります。

言語パックには、SharePoint Foundation 2010 に含まれている UI テキストの翻訳が用意されています。Web サイトが作成された後にユーザーがそのサイトに追加したテキストをローカライズすることもできます。SharePoint Foundation 2010 では、リスト項目のコンテンツのローカライズはサポートされていませんが、リストのタイトルや説明、列の見出し、リストで使用されているカスタム コンテンツ タイプの名前や説明、リスト メニューの拡張機能で使用される表示テキストなど、リストの "枠" をローカライズすることはできます。Web サイト自体の UI をカスタマイズする場合、たとえば上部のナビゲーション バーまたはサイド リンク バー領域にノードを追加したり、リボンに拡張機能を追加したりするとき、これらの新しい要素の表示テキストについては、サイトでサポートされているすべての言語の翻訳を追加できます。また、カスタマイズできるすべての UI テキストを、ユーザー作成の言語リソースによってサポートすることもできます。

多言語ユーザーインターフェイスの用語

ここでは、SharePoint Foundation の MUI に関連する標準的な用語を定義します。

SKU 言語

SharePoint Foundation がインストールされたときの言語は "SKU 言語" と呼ばれます。これは、サーバーの全体管理アプリケーションで使用され、ファーム全体にわたって作成された Web サイトおよびサイト コレクションの既定の言語です。

SKU 言語を確認するには、SharePoint Foundation オブジェクト モデルを使用します。SPRegionalSettings クラスの GlobalServerLanguage 静的プロパティは、SKU 言語の表示名とそのロケール ID (LCID) に関する情報が含まれる SPLanguage オブジェクトを返します。LCID の一覧については、SPLocale.LCID プロパティを参照してください。

インストールされている言語

"インストールされている言語" は、SKU 言語、またはファーム管理者が言語パックをダウンロードしてインストールし、ファームのサーバーに追加した言語のどちらかです。

注意

使用可能な言語パックの一覧については、「SharePoint Foundation 2010 Language Pack」を参照してください。

SPRegionalSettings クラスの GlobalInstalledLanguages 静的プロパティは、列挙できる SPLanguageCollection オブジェクトを返し、インストールされている言語パックを検出します。コレクションの各 SPLanguage オブジェクトに、インストールされている言語パックの表示名と LCID に関する情報が含まれています。

既定の言語

Web サイトの所有者またはサイト コレクションの管理者は、Web サイトまたは新しいサイト コレクションを作成するときに言語を選択できます。ここで選択した言語が新しい Web サイトの "既定の言語" になります。また、新しいサイト コレクションの場合は、ルート Web サイトの既定の言語になります。既定の言語は、Web サイトが準備されるときに自動作成されたユーザー インターフェイスのテキストに使用されます。また、複数の言語をサポートする Web サイトに追加された未翻訳のユーザー インターフェイス テキストにも使用されます。

SPWeb クラスの UICulture プロパティは、既定の言語に関する情報が含まれる CultureInfo オブジェクトを返します。

第 2 言語

Web サイトの所有者は、インストールされている言語のどれをサイトでサポートするかを指定できます。サイトにアクセスしたユーザーは、ユーザー インターフェイスの表示言語を、この "第 2 言語" に変更することができます。

SPWeb クラスの SupportedUICultures プロパティは、Web サイトのユーザー インターフェイスでサポートされている言語に関する情報が含まれる、列挙可能な CultureInfo オブジェクトのコレクションを返します。このコレクションには、第 2 言語のオブジェクトの他に、既定の言語のオブジェクトも含まれます。

注意

MUI が Web サイトに対して有効になっていない場合、SupportedUICultures プロパティによって返されるコレクションには 1 つの CultureInfo オブジェクトのみが含まれ、これが既定の言語を表します。MUI が有効かどうかを確認するには、IsMultilingual プロパティの値を取得します。

ユーザー リソース

SharePoint Foundation でカスタマイズできるユーザー インターフェイス テキストはすべて、文字列のコレクションによって支えられており、Web サイトがサポートする言語ごとに 1 つの文字列があります。ユーザーが作成したローカライズ可能な文字列のコレクションが "ユーザー リソース" と呼ばれます。

SharePoint Foundation オブジェクト モデルでは、ユーザー リソースは SPUserResource クラスのインスタンスによって表されます。たとえば、リストのタイトルの表示テキストは、リストを表す SPList オブジェクトの Title プロパティによって提供されます。Title プロパティは、リストの TitleResource プロパティによって返された SPUserResource オブジェクトから値を取得します。

新しく作成されたユーザー インターフェイス テキストが Web サイトに追加されると、そのテキストを支える SPUserResource オブジェクトは、翻訳が追加されるまですべての言語に対して同じ値 (初期値) を返します。

注意

ユーザー リソースは、言語リソース (.resx) ファイルと同じではありません。言語リソース ファイルは言語固有です。このファイルには、1 つの言語で表されたテキストが多数含まれています。一方、SPUserResource オブジェクトはテキスト固有です。このオブジェクトには、多数の言語で表された 1 つのテキスト表現が含まれています。

第 2 言語のサポートを有効にする

Web サイトの所有者が MUI を有効にするには、ユーザー インターフェイスの [言語設定] ページ (/_layouts/muisetng.aspx) にアクセスします ([サイトの操作]、[サイトの設定] の順にクリックし、[サイトの管理] で、[言語設定] をクリックします)。インストールされている言語が [第 2 言語] グループに表示されます。Web サイトで現在サポートされている第 2 言語については、その名前の横にあるチェック ボックスがオンになっています。言語のサポートを追加または削除するには、目的の言語のチェックボックスをオンまたはオフにします。

SharePoint Foundation オブジェクト モデルを使用して同じ処理を実行するには、SPWeb オブジェクトへの参照を取得し、その IsMultilingual プロパティを true に設定します。次に、AddSupportedUICulture メソッドを呼び出して 1 つ以上の第 2 言語のサポートを追加するか、RemoveSupportedUICulture メソッドを呼び出してサポートを削除します。第 2 言語のサポートを追加する手順を次のコンソール アプリケーションに示します。

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {

                    // A website can be created from a template that does not support MUI.
                    SPWebTemplateCollection templates = site.GetWebTemplates(web.Language);
                    SPWebTemplate template = templates[web.WebTemplate];
                    if (template.SupportsMultilingualUI)
                    {

                        // Enable MUI.
                        web.IsMultilingual = true;

                        // Add support for any installed language currently not supported.
                        SPLanguageCollection installed = SPRegionalSettings.GlobalInstalledLanguages;
                        IEnumerable<CultureInfo> supported = web.SupportedUICultures;

                        foreach (SPLanguage language in installed)
                        {
                            CultureInfo culture = new CultureInfo(language.LCID);

                            if (!supported.Contains(culture))
                            {
                                Console.WriteLine("Adding {0}", culture.Name);
                                web.AddSupportedUICulture(culture);
                            }
                        }
                        web.Update();
                    }
                }
            }
            Console.Write("\nPress ENTER to continue....");
            Console.Read();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using site As New SPSite("https://localhost")
            Using web As SPWeb = site.RootWeb

                ' A website can be created from a template that does not support MUI.
                Dim templates As SPWebTemplateCollection = site.GetWebTemplates(web.Language)
                Dim template As SPWebTemplate = templates(web.WebTemplate)

                If template.SupportsMultilingualUI Then

                    ' Enable MUI.
                    web.IsMultilingual = True

                    ' Add support for any installed language currently not supported.
                    Dim installed As SPLanguageCollection = SPRegionalSettings.GlobalInstalledLanguages
                    Dim supported As IEnumerable(Of CultureInfo) = web.SupportedUICultures

                    For Each language As SPLanguage In installed
                        Dim culture As New CultureInfo(language.LCID)

                        If Not supported.Contains(culture) Then
                            Console.WriteLine("Adding {0}", culture.Name)
                            web.AddSupportedUICulture(culture)
                        End If
                    Next
                    web.Update()
                End If

            End Using
        End Using
        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

Web サイトのベースになっている Web テンプレートが MUI をサポートしているかどうかが、コンソール アプリケーションによって確認されていることに注意してください。第 2 言語をサポートしない Web テンプレートを作成することがあるからです。詳細については、Configuration 要素 (サイト) の SupportsMultilingualUI 属性および SPWebTemplate クラスの SupportsMultilingualUI プロパティを参照してください。

簡略化のために、このコンソール アプリケーションでは、IsMultilingual プロパティを設定するコードを try-catch ブロックで囲んでいませんが、実際は囲む必要があります。IsMultilingual プロパティを true に設定しようとした場合、Web サイトにカスタマイズされたカスケード スタイル シート (CSS) が含まれていると、SPException 例外がスローされます。カスタマイズされた CSS ファイルが使用されているサイトでは第 2 言語のサポートを有効にすることはできません。

この例とよく似ていて、頻繁に行われるのが、Web サイトの一連の第 2 言語をサブサイトにレプリケートするという作業です。これが必要なのは、新しい Web サイトは既定の言語で作成されますが、第 2 言語が指定されないからです。Web サイトの第 2 言語のサポートをサブサイトにレプリケートするには、親 Web サイトの SupportedUICultures プロパティによって返されたコレクションを列挙し、子 Web サイトの AddSupportedUICulture メソッドを呼び出して、各カルチャのサポートを子 Web サイトに追加します。

表示言語を変更する

SharePoint Foundation 2010 では、ユーザーが多言語 Web サイトにアクセスすると、その Web サイトは、クライアント ブラウザーが HTTP 要求と共に送信する Accept-Language ヘッダーを使用して、ユーザー インターフェイスをレンダリングする言語を判断します。ブラウザーで指定されている言語が Web サイトでサポートされていない場合は、既定の言語が表示言語として使用されます。

また、多言語 Web サイトでは、ページ右上隅のユーザー名の横にドロップダウン メニューが表示され、ユーザーはここで表示言語を選択できます。ユーザーが現在の表示言語とは異なる言語を選択すると、Web サイトは新しい言語に切り替わります。ユーザーの基本設定はクライアント コンピューターの Cookie に保持されます。Web サイトは、その後アクセスがあると、この Cookie からユーザーの言語設定を取得します。

ユーザーの言語設定を取得するユーザー インターフェイスは、ほとんどのページの上部にある PersonalActions コントロールによって実装されます。このコントロールは、Page.RegisterStartupScript メソッドを使用して、次のマークアップを、クライアント ブラウザーに送信される HTML に配置します。

<script type ="text/javascript"> 
// <![CDATA[
function OnSelectionChange(value)
{
    var today = new Date();
    var oneYear = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);
    var url = window.location.href;
    document.cookie = "lcid=" + value + ";path=/;expires=" + oneYear.toGMTString();
    window.location.href = url;
}
// ]]>
</script>

表示言語が決まったら、SharePoint Foundation では、要求を処理するスレッドが開始され、言語の選択が反映されるようにスレッドの Thread.CurrentUICulture プロパティが設定されます。例として、Web パーツのサーバーで実行されるコードを記述する場合、現在の HTTP コンテキストの表示言語を取得するには、CultureInfo.CurrentUICulture 静的プロパティにアクセスします。

次の例は、表示言語を変更することで表示テキストがどのような影響を受けるかを示す簡単なコンソール アプリケーションです。このアプリケーションは、Web サイトでサポートされるカルチャの一覧を列挙し、サポートされている各カルチャに現在のスレッドの CurrentUICulture プロパティの値を設定し、Web サイトのタイトルを、現在の表示言語でレンダリングされるように出力します。

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {
                    if (web.IsMultilingual)
                    {
                        IEnumerable<CultureInfo> cultures = web.SupportedUICultures;
                        foreach (CultureInfo culture in cultures)
                        {
                            // Change the UI culture of the thread.
                            Thread.CurrentThread.CurrentUICulture = culture;
 
                            // Print the name of the current language and the web title in the current language.
                            Console.WriteLine("{0}  {1}", CultureInfo.CurrentUICulture.Name, web.Title); 
                        }
                    }
                }
            }
            Console.WriteLine("\nPress ENTER to continue....");
            Console.Read();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using site As New SPSite("https://localhost")
            Using web As SPWeb = site.RootWeb

                If web.IsMultilingual Then
                    Dim cultures As IEnumerable(Of CultureInfo) = web.SupportedUICultures
                    For Each culture As CultureInfo In cultures

                        ' Change the UI culture of the thread.
                        Thread.CurrentThread.CurrentUICulture = culture

                        ' Print the name of the current language and the web title in the current language.
                        Console.WriteLine("{0}  {1}", CultureInfo.CurrentUICulture.Name, web.Title)
                    Next
                End If

            End Using
        End Using
        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

表示テキストのローカライズ方法

Microsoft が提供するユーザー インターフェイス テキストのローカライズされた言語リソースは、カルチャ固有の一連のリソース ファイルに用意されていて、そのファイルはファーム内のすべての Web サーバーにインストールされています。新しい Web サイトを作成するとき、SharePoint Foundation では、そのサイトの既定の言語のリソース ファイルが開かれ、必要なテキストが検索されます。検索されたテキストは、ユーザー インターフェイスの表示テキストを表すオブジェクトに保存されます。第 2 言語をサイトに追加する場合も、同じプロセスで Microsoft 提供のユーザー インターフェイス テキストが取得されます。

ユーザーがカスタマイズできるユーザー インターフェイス要素はすべて、ユーザー リソースによって支えられています。ユーザー リソースは、Web サイトでサポートされる各言語のユーザー提供の翻訳を格納できる SPUserResource オブジェクトです。たとえば、SPField オブジェクトの Title プロパティは、リストの列の表示名を提供します。このプロパティは、SPUserResource オブジェクトを返す読み取り専用のプロパティである TitleResource と密接に関連しています。Title プロパティを取得すると、TitleResource.Value が返されます。Title プロパティを設定すると、TitleResource.Value が設定されます。つまり、SPField オブジェクトの Title プロパティを取得または設定することは、SPUserResource オブジェクトの Value プロパティを取得および設定することと同じです。

SPUserResource.Value は非常に興味深いプロパティです。このプロパティのソース コードは次のようになります。

public string Value 
{
    get
    {
        return GetValueForUICulture(Thread.CurrentThread.CurrentUICulture);
    }
    set
    {
        SetValueForUICulture(Thread.CurrentThread.CurrentUICulture, value);
    }
}

Value プロパティを取得および設定すると、SPUserResource クラスの 2 つのパブリック メソッド、GetValueForUICulture メソッドまたは SetValueForUICulture メソッドのどちらかが呼び出されます。どちらの場合も、現在のスレッドのカルチャを表す CultureInfo オブジェクトが渡されます。

SPUserResource クラスには、一連のキー (言語) を一連の値 (翻訳) にマップする辞書が保持されています。GetValueForUICulture メソッドと SetValueForUICulture メソッドは言語によって辞書のエントリを参照し、その言語の文字列値を取得または設定します。

ユーザー リソースの初期値

新しい SPUserResource オブジェクトは、少なくとも 1 つの値、つまり Web サイトの既定の言語の値で作成されます。実際のところ、既定の言語に使用される値が、既定の言語にはない場合があります。表示テキストが作成されたときにどの言語が使用されていても、ユーザー リソースが支える表示テキストを作成する際には、すべての文字列が使用されます。

たとえば、ユーザーが新しいリストを作成するときは、リストのタイトルが含まれる文字列が引数として SPList クラスのコンストラクターに渡される必要があります。TitleResource プロパティが SPList オブジェクトで初期化されるとき、その同じタイトル文字列が引数として SPUserResource オブジェクトのコンストラクターに渡されます。SPUserResource コンストラクターのコードは、Web サイトの既定の言語をエントリのキーとして、タイトル文字列を初期値として使用し、オブジェクトの値の辞書に初期エントリを作成します。

この初期値は、それがユーザー リソースの唯一の値である場合に特に重要です。GetValueForUICulture メソッドへの任意の呼び出しが、リソースの辞書に存在しない言語を指定している場合、そのメソッドは既定の言語を返します。その結果、既定の言語の値は、すべての未翻訳テキストに使用されます。

ユーザー リソースを使用するオブジェクトが、リソース ファイルを展開するフィーチャーによって作成されている場合、そのオブジェクトは言語固有のリソース (.resx) ファイルの値で初期化できます。詳細については、「SharePoint ソリューションのローカライズ (英語)」を参照してください。

ユーザー リソースを使用するユーザー インターフェイス要素

SharePoint Foundation オブジェクト モデルには、SPUserResource オブジェクトを返すプロパティを持つ 6 つのクラスがあります。

SPUserResource オブジェクトを返すプロパティの一覧と、リソースが使用される場所に関する説明を次の表に示します。

プロパティ

説明

SPContentType.DescriptionResource

SPContentType.Description プロパティによって返される文字列のソース。コンテンツ タイプについて説明するテキストを提供します。

SPContentType.NameResource

SPContentType.Name プロパティによって返される文字列のソース。コンテンツ タイプの表示名を提供します。

SPField.DescriptionResource

SPField.Description プロパティによって返される文字列のソース。列について説明するテキストを提供します。

SPField.TitleResource

SPField.Title プロパティによって返される文字列のソース。列の表示名を提供します。

SPList.DescriptionResource

SPList.Description プロパティによって返される文字列のソース。リストについて説明するテキストを提供します。

SPList.TitleResource

SPList.Title プロパティによって返される文字列のソース。リストの表示名を提供します。

SPNavigationNode.TitleResource

SPNavigationNode.Title プロパティによって返される文字列のソース。ナビゲーション ノードの表示名を提供します。

SPUserCustomAction.CommandUIExtensionResource

SPUserCustomAction.CommandUIExtension プロパティによって返される文字列のソース。リボンで使用されるカスタム アクションの XML 表現を提供します。

SPUserCustomAction.DescriptionResource

SPUserCustomAction.Description プロパティによって返される文字列のソース。サイト、Web、またはリストを範囲とするカスタム コントロールについて説明するテキストを提供します。

SPUserCustomAction.TitleResource

SPUserCustomAction.Title プロパティによって返される文字列のソース。サイト、Web、またはリストを範囲とするカスタム コントロールについて説明する表示テキストを提供します。

SPWeb.DescriptionResource

SPWeb.Description プロパティによって返される文字列のソース。Web サイトについて説明するテキストを提供します。

SPWeb.TitleResource

SPWeb.Title プロパティによって返される文字列のソース。Web サイトの表示名を提供します。

2 つの追加プロパティが、SPUserResourceCollection オブジェクトのユーザー リソースのコレクションを返します。SPList クラスには、UserResources プロパティがあります。このプロパティには、リスト、およびリストに関連付けられているフィールド、コンテンツ タイプ、およびユーザー カスタム アクションによって使用される、ローカライズ可能なリソースを持つ SPUserResource オブジェクトが含まれています。これらのオブジェクトの表示テキストがカスタマイズされていない場合、UserResources プロパティは空のコレクションを返します。お知らせ、共有ドキュメントなど、標準リストの表示テキストは、通常、カスタマイズされないので、これらのリストの UserResources プロパティは、多くの場合、空のコレクションを返します。

SPWeb クラスの UserResources プロパティは、Web サイト、および Web サイトに関連付けられているサイト列、コンテンツ タイプ、ナビゲーション ノード、およびユーザー カスタム アクションによって使用される、ローカライズ可能なリソースを持つ SPUserResource オブジェクトのコレクションを返すことで、同じような機能を実行します。コレクションで返されたオブジェクトは、Web サイトのユーザー (開発者および管理者を含む) によってカスタマイズされた表示テキストのみを表します。

言語の混在

複数の状況で、言語が混在した Web サイトの環境が構築されることがあります。最もわかりやすいのが、サイトのユーザーが、新しいリストや新しいナビゲーション ノードのような新しい要素を追加して、その要素に関連付けられているユーザー リソースには翻訳を提供せずに、カスタマイズする場合です。

また、ユーザー インターフェイスの組み込み要素によって言語が混在することもあります。エラー メッセージ、通知、および一部のダイアログ ボックスは、現在の表示言語で表示されない可能性があります。これは、SharePoint Foundation が、Microsoft .NET Framework、Windows Workflow Foundation、Microsoft ASP.NET など、複数のサポート テクノロジに依存しており、その中には限られた数の言語にしかローカライズされないものがあるからです。このようなサポート テクノロジのいずれかによって生成されたユーザー インターフェイス要素が、サイト所有者指定のサイトの言語にローカライズされない場合、そのサイトは、サポート テクノロジがインストールされたときの言語 (つまり SKU 言語) で表示されます。

最後に、管理ユーザー インターフェイスの一部の要素によって言語が混在することがあります。それほど多くはありませんが、ユーザー インターフェイスのテキストが、SharePoint Foundation がインストールされたときの言語で表示される場合があります。この種類の言語混在のサイトは、通常、サイトの所有者または管理者に表示され、サイトのユーザーには表示されません。

翻訳をユーザー リソースに追加する

最も簡単に翻訳をカスタム ユーザー インターフェイスのユーザー リソースに追加するには、2 か国語を話すユーザーが Web サイトにアクセスし、第 2 言語の 1 つに切り替えて、管理ユーザー インターフェイスで直接テキストを編集しながら翻訳します。たとえば、リストのタイトルと説明を翻訳するには、リボンの [リストの設定] をクリックし、[全般設定] の下の [タイトル、説明、ナビゲーション] をクリックして、[名前] と [説明] のボックスでテキストを編集します。第 2 言語で行う変更は、テキストを支えるユーザー リソースに、その言語の値として保存されます。

Web サイトの所有者がユーザー リソースの一括翻訳を行えるように準備することもできます。それには、未翻訳の文字列を、サイトがサポートする第 2 言語ごとにリソース (.resx) ファイルにエクスポートします。その後、オフラインで翻訳を行うことができる翻訳者に、このリソース ファイルを渡します。作業が完了したら、所有者がリソース ファイルをインポートします。SharePoint Foundation によって適切なユーザー リソースに翻訳が追加されます。

ユーザー インターフェイスでエクスポートを行うには [翻訳のエクスポート] ページ (_layouts/exporttranslations.aspx) を使用します。完了した翻訳は [翻訳のインポート] ページ (_layouts/importtranslations.aspx) からインポートできます。また、両方の操作に対して独自のコードを記述することもできます。コードを使用する場合は、SPWeb クラスの ExportUserResources メソッドを呼び出して、結果をリソース ファイルに保存します。翻訳された文字列をインポートするには、ImportUserResources メソッドを呼び出します。各メソッドに関するドキュメントには、コードの例が含まれます。

開発者の観点から、新しいフィーチャーを多言語 Web サイトに展開する場合は、事前に翻訳しておくことをお勧めします。言語固有のリソース ファイルを作成したら、そのファイルを Collaborative Application Markup Language (CAML) で参照し、SharePoint ソリューションにパッケージ化して、Web サイトまたはサイト コレクションに展開できます。SharePoint Foundation は、そのリソース ファイルを使用して、フィーチャーによって作成される SPUserResource オブジェクトを設定できます。詳細については、「SharePoint ソリューションのローカライズ (英語)」を参照してください。

変更による翻訳の上書きを許可する

[言語設定] ページ (_layouts/muisetng.aspx) には、既定の言語が変更されたときに、サイトの所有者が第 2 言語の既存の翻訳を上書きするオプションが用意されています。このページの [はい] または [いいえ] ラジオ ボタンにより、SPWeb クラスの OverwriteTranslationsOnChange プロパティが true または false のどちらかに設定されます。既定の設定は false (ユーザー インターフェイスでは [いいえ]) です。

OverwriteTranslationsOnChange プロパティが true (ユーザー インターフェイスでは [はい]) に設定されている場合、たとえば、既定の言語で作業しているユーザーがリスト列の見出しのテキストを変更すると、列見出しのソースである TitleResource プロパティのすべての値が自動的にリセットされ、既存の第 2 言語の翻訳は、新しい既定の言語のテキストで上書きされます。つまり、テキストは翻訳されていない状態になります。

プロパティが false を返すと、既定の言語バージョンが変更されても、第 2 言語の翻訳は保持されます。この場合、第 2 言語のテキストは、既定の言語のソースの翻訳として有効ではなくなる可能性があります。

テキストをわかりやすくするか ([いいえ] を選択)、正確にするか ([はい] を選択) に応じて、どちらかを選択してください。

関連項目

タスク

[チュートリアル] Web パーツをローカライズする

[チュートリアル] 列、コンテンツ タイプ、およびリストをローカライズする

参照

SupportsMultilingualUI

SPWeb.IsMultilingual

SPWeb.Language

Thread.CurrentUICulture