逐步解說:當地語系化混合應用程式

本逐步解說示範如何當地語系化以 Windows Forms 為基礎的混合式應用程式中的 WPF 元素。

這個逐步解說中所述的工作包括:

  • 建立 Windows Forms 主專案。

  • 新增可當地語系化的內容。

  • 啟用當地語系化。

  • 指派資源識別碼。

  • 使用 LocBaml 工具產生附屬組件。

如需本逐步解說中所述工作的完整程式碼清單,請參閱 Localizing a Hybrid Application Sample (當地語系化混合應用程式範例)。

完成之後,就會有當地語系化的混合應用程式。

必要條件

您需要下列元件才能完成這個逐步解說:

  • Visual Studio 2017

建立 Windows Forms 主專案

第一個步驟是建立 Windows Forms 應用程式專案,並新增具有您將當地語系化之內容的 WPF 元素。

建立主專案

  1. 建立名稱為 LocalizingWpfInWfWPF 應用程式專案。 ([檔案]>[新增]>[專案]>[Visual C#] 或 [Visual Basic]>[傳統桌面]>[WPF 應用程式])。

  2. 將名為 SimpleControl 的 WPFUserControl 元素新增至專案。

  3. 使用 ElementHost 控制項,將 SimpleControl 元素放在表單上。 如需詳細資訊,請參閱逐步解說:在 Windows Forms 中裝載立體 WPF 複合控制項

新增可當地語系化的內容

接下來,您將新增 Windows Forms 標籤控制項,並將 WPF 元素的內容設定為可當地語系化的字串。

新增可當地語系化的內容

  1. 在 [方案總管] 中,按兩下 [SimpleControl.xaml],以在 WPF 設計工具中開啟它。

  2. 使用下列程式代碼設定 Button 控制項的內容。

    XAML
    <UserControl x:Class="LocalizingWpfInWf.SimpleControl"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        >
    
      <Canvas>
        <Button Content="Hello"/>
      </Canvas>
    </UserControl>
    
  3. 在 [方案總管] 中,按兩下 [Form1],以在 Windows Forms 設計工具中開啟它。

  4. 開啟 [工具箱] 並按兩下 [標籤],以將 Label 控制項新增至表單。 將其 Text 屬性的值設定為 "Hello"

  5. F5 以建置並執行應用程式。

    SimpleControl 元素和 Label 控制項會顯示文字 "Hello"

啟用當地語系化

Windows Forms 設計工具提供在附屬組件中啟用當地語系化的設定。

啟用當地語系化

  1. 在 [方案總管] 中,按兩下 [Form1.cs],以在 Windows Forms 設計工具中開啟它。

  2. 在 [屬性] 視窗中,將表單之 Localizable 屬性的值設定為 true

  3. 在 [屬性] 視窗中,將 Language 屬性的值設定為 Spanish (Spain)

  4. 在 [Windows Forms 設計工具] 中,選取 Label 控制項。

  5. 在 [屬性] 視窗中,將 Text 屬性的值設定為 "Hola"

    名為 Form1.es-ES.resx 的新資源檔會新增至專案。

  6. 在 [方案總管] 中,以滑鼠右鍵按一下 [Form1.cs],然後按一下 [檢視程式碼] 以在程式碼編輯器中開啟它。

  7. 在呼叫 InitializeComponent 之前,將下列程式碼複製至 Form1 建構函式。

    C#
    public Form1()
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-ES");
    
        InitializeComponent();
    }
    
  8. 在 [方案總管] 中,以滑鼠右鍵按一下 LocalizingWpfInWf,然後按一下 [卸載專案]

    專案名稱會標上 (無法使用)

  9. 以滑鼠右鍵按一下 LocalizingWpfInWf,然後按一下 [編輯 LocalizingWpfInWf.csproj]

    隨即在程式碼編輯器中開啟專案檔。

  10. 將下行複製至專案檔中的第一個 PropertyGroup

    XML
    <UICulture>en-US</UICulture>
    
  11. 儲存並關閉專案檔。

  12. 在[方案總管] 中,以滑鼠右鍵按一下 LocalizingWpfInWf,然後按一下 [重新載入專案]

指派資源識別碼

您可以使用資源識別碼,將可當地語系化的內容對應至資源組件。 當您指定 updateuid 選項時,MsBuild.exe 應用程式會自動指派資源識別碼。

指派資源識別碼

  1. 從 [開始] 功能表中,開啟 [適用於 Visual Studio 的開發人員命令提示字元]。

  2. 使用下列命令,將資源識別碼指派給可當地語系化的內容。

    主控台
    msbuild -t:updateuid LocalizingWpfInWf.csproj
    
  3. 在[方案總管] 中,按兩下 SimpleControl.xaml,以在程式碼編輯器中開啟它。 您將會看到 msbuild 命令已將 Uid 屬性新增至所有元素。 這有助於透過資源識別碼指派進行當地語系化。

    XAML
    <UserControl x:Uid="UserControl_1" x:Class="LocalizingWpfInWf.SimpleControl"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        >
    
      <Canvas x:Uid="Canvas_1">
        <Button x:Uid="Button_1" Content="Hello"/>
      </Canvas>
    </UserControl>
    
  4. F6 以建置方案。

使用 LocBaml 產生附屬組件

當地語系化的內容會儲存在僅含資源的「附屬組件」中。 使用命令列工具 LocBaml.exe 來產生 WPF 內容的當地語系化組件。

產生附屬組件

  1. 將 LocBaml.exe 複製至專案的 obj\Debug 資料夾。 如需詳細資訊,請參閱將應用程式當地語系化

  2. 在 [命令提示字元] 視窗中,使用下列命令來將資源字串擷取至暫存檔。

    主控台
    LocBaml /parse LocalizingWpfInWf.g.en-US.resources /out:temp.csv
    
  3. 使用 Visual Studio 或另一種文字編輯器來開啟 temp.csv 檔案。 將字串 "Hello" 取代為其西班牙文翻譯 "Hola"

  4. 儲存 temp.csv 檔案。

  5. 使用下列命令來產生已當地語系化的資源檔。

    主控台
    LocBaml /generate /trans:temp.csv LocalizingWpfInWf.g.en-US.resources /out:. /cul:es-ES
    

    LocalizingWpfInWf.g.es-ES.resources 檔案會在 obj\Debug 資料夾中建立。

  6. 使用下列命令來建置已當地語系化的附屬組件。

    主控台
    Al.exe /out:LocalizingWpfInWf.resources.dll /culture:es-ES /embed:LocalizingWpfInWf.Form1.es-ES.resources /embed:LocalizingWpfInWf.g.es-ES.resources
    

    LocalizingWpfInWf.resources.dll 檔案會在 obj\Debug 資料夾中建立。

  7. 將 LocalizingWpfInWf.resources.dll 檔案複製至專案的 bin\Debug\es-ES 資料夾。 取代現有檔案。

  8. 執行 LocalizingWpfInWf.exe,其位於專案的 bin\Debug 資料夾中。 請不要重建應用程式,否則將會覆寫附屬組件。

    應用程式會顯示當地語系化字串,而不是英文字串。

另請參閱