當地語系化 SharePoint 解決方案

準備應用程式的程序,使其可供全球使用,稱為當地語系化。 當地語系化是將資源轉譯為特定文化特性。 如需詳細資訊,請參閱全球化和當地語系化應用程式。 本主題提供如何當地語系化 SharePoint 解決方案的概觀。

若要將解決方案當地語系化,您可以從程式碼中移除硬式編碼字串,並將其抽象化為資源檔。 資源檔是副檔名為 .resx 的 XML 型檔案。 資源檔包含解決方案中使用的字串翻譯版本。 如需詳細資訊,請參閱應用程式中的資源

注意

僅將字串資源新增至 SharePoint 解決方案資源檔。 雖然資源編輯器可讓您新增非字串資源,但是非字串資源不會部署到 SharePoint。

資源檔

資源檔有三種:預設、非語言相關和特定語言。

資源檔類型 描述
預設 也稱為後援資源,預設資源檔包含針對預設文化特性當地語系化的字串,例如英文。 如果找不到指定語言的當地語系化資源檔,則會使用它們。 預設資源沒有個別的檔案,它們會儲存在主要應用程式組件中。
非語言相關 資源檔,其中包含針對語言當地語系化的字串,但是未針對特定文化特性當地語系化。 例如,適用於法文的 "fr"。
語言特定 資源檔,其中包含針對語言和文化特性當地語系化的字串。 例如,適用於加拿大法文的 "fr-CA"。

如需詳細資訊,請參閱階層式組織當地語系化的資源

若要在您於 Visual Studio 中開發的 SharePoint 專案中指定預設資源檔,當您新增資源檔時,請在 [新增資源] 對話方塊的文化特性清單中,選擇 [不因語言而異 (不因國家/地區而異)]

新增資源檔

新增資源檔的命令位於 [方案總管] 中解決方案節點和功能節點的捷徑功能表上。

將全域資源檔新增至 SharePoint 解決方案中

  1. 在 Visual Studio 中開啟 SharePoint 解決方案。

  2. 在 [方案總管] 中選擇 SharePoint 專案節點,然後在功能表列上選擇 [專案]> [新增項目]

  3. 在 [新增項目] 對話方塊中,選擇 [全域資源檔] 範本,然後選擇 [新增] 按鈕。

    注意

    只有在選取 SharePoint 專案項目時,才會顯示全域資源檔專案項目範本。

  4. 在 [新增資源] 對話方塊中,選擇資源檔的文化特性,例如英文 (美國)。

    這個步驟會以下列格式將全域資源檔新增至您的解決方案中:{Resource_x_}.{culture}.resx,例如 Resource1.en-US.resx

  5. 在 Visual Studio 中開啟資源編輯器時,請將資源新增至資源檔。

將功能資源檔新增至 SharePoint 功能中

  1. 如果 SharePoint 解決方案尚未在 Visual Studio 中開啟,請開啟解決方案。

  2. 在 [方案總管] 中,開啟 [功能] 節點下功能名稱的捷徑功能表,然後選擇 [新增功能資源]

    這個步驟會以下列格式將資源檔新增至功能:{ResourceFileName}.{culture}{.resx},例如 Feature1.en-US.resx

  3. 在 Visual Studio 中開啟資源編輯器時,請將資源新增至資源檔。

將 Visual Studio SharePoint 解決方案當地語系化

當您將解決方案當地語系化時,您應該考慮解決方案向使用者顯示的所有文字資訊。 必須翻譯資訊訊息、錯誤訊息和 UI 字串,並將這些翻譯放在資源檔中。

資源檔中的每個字串都有唯一識別碼。 針對每個資源檔中翻譯的字串使用相同的識別碼。 例如,如果 "String1" 是預設資源檔中第一個字串的識別碼,請針對語言特定資源檔中的第一個字串使用相同識別碼。

您通常會在 Visual Studio SharePoint 應用程式中將三個區域當地語系化:功能、ASPX 頁面標記和程式碼。 為了說明的目的,下列各節假設您有想要當地語系化為德文和日文的 SharePoint 解決方案。 預設語言為英文。

將功能當地語系化

若要將功能當地語系化,您必須將功能的硬式編碼標題和描述取代為參考當地語系化資源檔中翻譯標題和字串的運算式。 您可以在 Visual Studio 中的功能設計工具中進行這項變更。

若要將您的英文功能當地語系化為德文和日文,您要將三個資源檔專案項目新增至您的專案:一個用於英文、一個用於德文、一個用於日文。 功能資源檔無法用來當地語系化 ASPX 標記或程式碼;需要個別的資源檔。

建立功能資源檔之後,請將翻譯的字串新增至其中。 使用下列格式的運算式存取當地語系化字串:

$Resources:String ID

Visual Studio 中的功能資源一律會命名為 Resources。 如果您選取「不因語言而異」以外的語言,則會將文化特性識別碼新增至資源檔名稱。 例如,如果您新增不因語言而異 (預設) 功能資源檔,則其稱為 Resources.resx。 如果您藉由選取日文文化特性 (日本) 來新增特定語言功能資源,則檔案稱為 Resources.ja-JP.resx。 功能資源檔名稱會自動指派,且無法變更。

功能資源的範圍是新增至功能的本機。 若要建立解決方案中任何功能或元素檔案可以使用的資源,請新增全域資源檔專案項目,而不是功能資源檔。 全域資源檔專案項目位於 [新增項目] 對話方塊中 [SharePoint] 底下的 [2010] 資料夾。 全域資源檔會部署到 SharePoint 根資料夾的 \Resources 資料夾。

將功能當地語系化

  1. 在 [方案總管] 中,開啟 [Feature1] 節點的捷徑功能表,然後選擇 [新增功能資源]

  2. 在 [新增資源] 對話方塊中,選擇清單中的 [不因語言而異] 作為預設語言功能資源檔的文化特性。

  3. 針對每種當地語系化的語言重複先前的步驟,並且針對當地語系化的功能資源檔選擇您所選擇的語言。

    這樣會建立不同的功能資源檔:一個用於預設語言,另一個用於要支援的每種當地語系化語言。

  4. 在 [資源編輯器] 中開啟每個資源檔,然後輸入所有 ID 字串及其值。

    例如,在預設功能資源檔中,輸入值為 [我的功能標題] 的 [標題] 字串識別碼,並輸入值為 [我的功能描述] 的另一個 [描述] 字串識別碼。 針對每個當地語系化的資源檔,使用預設功能資源中所使用的相同字串 ID,但要輸入值的當地語系化字串。

  5. 在您輸入所有資源值之後,開啟功能的捷徑功能表 (例如,Feature1.feature),然後選擇 [檢視表設計工具] 開啟功能設計工具中的功能。

  6. 若要將功能中的 [標題] 和 [描述] 欄位當地語系化,請使用下列格式在欄位的方塊中輸入值:

    $Resources:字串識別碼

    例如,在 [功能標題] 方塊中輸入 $Resources:Title,在 [功能描述] 方塊中輸入 $Resources:Description

    字串 ID 必須與資源檔中所使用的字串 ID 相符。

  7. 選擇 F5 鍵,建置並執行應用程式。

  8. 在 SharePoint 中,開啟 [網站動作] 功能表,選擇 [網站設定],然後在 [網站動作] 區段中,選擇 [管理網站功能] 連結。

  9. 在 SharePoint 中,從預設值變更顯示語言。

    當地語系化的功能標題和描述會出現在應用程式中。 若要顯示當地語系化的資源,SharePoint 伺服器必須安裝符合資源檔文化特性的語言套件。

將 ASPX 頁面標記當地語系化

若要將 ASP.NET 頁面當地語系化,您要將三個資源檔專案項目新增至您的專案:一個用於英文、一個用於德文、一個用於日文。 如果您除了標記之外不需要將程式碼當地語系化,您可以改為新增全域資源檔。

ASP.NET (.aspx) 頁面通常會使用硬式編碼字串值。 若要將這些字串當地語系化,請將這些字串取代為參考當地語系化資源的運算式。

將 ASPX 標記當地語系化

  1. 新增不同的資源檔:一個用於預設語言,另一個用於每種當地語系化語言。

    如果您只是將標記當地語系化,而不是程式碼,請新增全域資源檔專案項目。 如果您將程式碼和標記當地語系化,請新增資源檔專案項目。

    1. 若要新增全域資源檔,請在 [方案總管] 中開啟 SharePoint 專案項目的捷徑功能表,然後選擇 [新增]> [新項目]。 在 SharePoint [2010] 節點下,選擇 [全域資源檔] 範本。

    2. 若要新增資源檔,請在 [方案總管] 中開啟 SharePoint 專案項目的捷徑功能表,然後選擇 [新增]> [新項目]。 選擇 [資源檔] 範本。

    注意

    請務必將資源檔新增至 SharePoint 專案項目,以啟用部署類型屬性。 這個程序稍後需要這個屬性。 如果您的解決方案沒有 SharePoint 專案項目,您可以新增空白 SharePoint 專案,並移除其預設 Elements.xml 檔案。

  2. 為預設語言資源檔指定您選擇的名稱,具有 .resx 副檔名,例如 MyAppResources.resx。 針對每個當地語系化的資源檔使用相同的基底名稱,但是會加上文化特性識別碼。 例如,將德文當地語系化資源命名為 MyAppResources.de-DE.resx

  3. 將每個資源檔的 [部署類型] 屬性值變更為 AppGlobalResource,將其部署至伺服器的 App_GlobalResources 資料夾。 App_GlobalResources 資料夾位於 C:\inetpub\wwwroot\wss\VirtualDirectories\<連接埠號碼>\App_GlobalResources。

  4. 如果您除了使用資源當地語系化程式碼之外,還用來當地語系化 ASPX 標記,請將每個檔案的 [建置動作] 屬性值保留為 [內嵌資源]。 如果您使用資源檔只將標記當地語系化,您可以選擇性地將檔案的屬性值變更為 [內容]。 如需詳細資訊,請參閱將 SharePoint 解決方案當地語系化

    注意

    如果您使用非全域資源檔,請將其移至專案項目資料夾,以啟用部署類型屬性和其他 SharePoint 特定屬性。

  5. 開啟每個資源檔,並使用每個檔案中的相同字串識別碼來新增當地語系化的字串。

  6. 在 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>
    

    打給

    <asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    <asp:Label ID="lbl" runat="server" Text="<%$Resources:MyAppResources,String1%>"></asp:Label>
    </asp:Content>
    
  7. 選擇 F5 鍵,建置並執行應用程式。

  8. 在 SharePoint 中,從預設值變更顯示語言。

    當地語系化的字串會出現在應用程式中。 若要顯示當地語系化的資源,SharePoint 伺服器必須安裝符合資源檔文化特性的語言套件。

將程式碼當地語系化

除了將功能字串和 ASP.NET 標記當地語系化之外,您也必須將出現在解決方案程式碼中的訊息字串和錯誤字串當地語系化。 當地語系化的資訊和錯誤訊息包含在附屬組件中。 附屬組件包含使用者可看見的字串,例如 UI 文字和例外狀況之類的輸出訊息。

Visual Studio 使用標準 .NET Framework 中樞與輪輻模型。 中樞或主要程式組件包含預設語言資源。 輪輻或附屬組件包含語言特定資源。 如需詳細資訊,請參閱封裝和部署資源。 附屬組件是從資源 (.resx) 檔案編譯而來。 當您將語言特定資源檔新增至專案和解決方案套件時,Visual Studio 會將資源檔編譯成名為 {Project Name}.resources.dll 的附屬組件。

將程式碼當地語系化

  1. 在 [方案總管] 中,開啟專案項目的捷徑功能表,然後選擇 [新增]> [模組]

    選擇 [資源檔] 範本。

    注意

    請務必將資源檔新增至 SharePoint 專案項目,讓部署類型屬性可供使用。 這個程序稍後需要這個屬性。

  2. 為預設語言資源檔指定您選擇的名稱,具有 .resx 副檔名,例如 MyAppResources.resx

  3. 重複步驟 1 和 2,將個別資源檔加入至 SharePoint 專案項目:每個當地語系化語言擁有一個資源檔。

    針對每個當地語系化的資源檔使用相同的基底名稱,但是會加上文化特性識別碼。 例如,將德文當地語系化資源命名為 MyAppResources.de-DE.resx

  4. 開啟每個資源檔並新增當地語系化字串。 在每個檔案中使用相同的字串 ID。

  5. 將每個資源檔的 [部署類型] 屬性值變更為 AppGlobalResource,以將每個檔案部署至伺服器的 App_GlobalResources 資料夾。

  6. 將每個檔案的 [建置動作] 屬性值保留為 [內嵌資源]

    將內嵌資源編譯為專案的 DLL。

  7. 建置專案以建立資源附屬 DLL。

  8. 在 [套件設計工具] 中,選擇 [進階] 索引標籤,接著新增附屬組件。

  9. 在 [位置] 方塊中,於「位置」路徑前加上文化特性識別碼資料夾,例如 de-DE\<專案項目名稱>.resources.dll

  10. 如果您的解決方案尚未參考 System.Web 組件,請新增參考,並在程式碼中新增對 System.Web 的指示詞。

  11. 找出程式碼中所有使用者可見的硬式編碼字串,例如 UI 文字、錯誤和訊息文字。 使用下列語法呼叫 GetGlobalResourceObject 方法取代這些字串:

    HttpContext.GetGlobalResourceObject("Resource File Name", "String ID")
    
  12. 選擇 F5 鍵,建置並執行應用程式。

  13. 在 SharePoint 中,從預設值變更顯示語言。

    當地語系化的字串會出現在應用程式中。 若要顯示當地語系化的資源,SharePoint 伺服器必須安裝符合資源檔文化特性的語言套件。

未當地語系化的程式碼會使用硬式編碼字串值。 若要將程式碼字串當地語系化,請將其取代為對 GetGlobalResourceObject 的呼叫,這是參考當地語系化資源的方法。

Web 組件程式碼當地語系化

Web 組件包含自訂屬性編輯器功能,其中包含使用硬式編碼字串的程式碼屬性,例如 WebDisplayName、Category 和 WebDescription。 若要取代這些屬性的字串值,請建立衍生自屬性類別的個別類別。 在這些類別中,設定屬性 (Attribute) 的屬性 (Property)。 屬性屬性取決於基底類別。 例如,WebDisplayName 屬性屬性為 DisplayNameValue,而 WebDescription 屬性屬性為 DescriptionValue。

在衍生類別中,從資源檔和 ResourceManager 物件參考字串識別碼,以取得字串識別碼的當地語系化值。 將此值傳回至屬性編輯器屬性。

另請參閱