事件
逐步解說:當地語系化混合應用程式
本逐步解說示範如何當地語系化以 Windows Forms 為基礎的混合式應用程式中的 WPF 元素。
這個逐步解說中所述的工作包括:
建立 Windows Forms 主專案。
新增可當地語系化的內容。
啟用當地語系化。
指派資源識別碼。
使用 LocBaml 工具產生附屬組件。
如需本逐步解說中所述工作的完整程式碼清單,請參閱 Localizing a Hybrid Application Sample (當地語系化混合應用程式範例)。
完成之後,就會有當地語系化的混合應用程式。
您需要下列元件才能完成這個逐步解說:
- Visual Studio 2017
第一個步驟是建立 Windows Forms 應用程式專案,並新增具有您將當地語系化之內容的 WPF 元素。
建立名稱為
LocalizingWpfInWf
的 WPF 應用程式專案。 ([檔案]>[新增]>[專案]>[Visual C#] 或 [Visual Basic]>[傳統桌面]>[WPF 應用程式])。將名為
SimpleControl
的 WPFUserControl 元素新增至專案。使用 ElementHost 控制項,將
SimpleControl
元素放在表單上。 如需詳細資訊,請參閱逐步解說:在 Windows Forms 中裝載立體 WPF 複合控制項。
接下來,您將新增 Windows Forms 標籤控制項,並將 WPF 元素的內容設定為可當地語系化的字串。
在 [方案總管] 中,按兩下 [SimpleControl.xaml],以在 WPF 設計工具中開啟它。
使用下列程式代碼設定 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>
在 [方案總管] 中,按兩下 [Form1],以在 Windows Forms 設計工具中開啟它。
開啟 [工具箱] 並按兩下 [標籤],以將 Label 控制項新增至表單。 將其 Text 屬性的值設定為
"Hello"
。按 F5 以建置並執行應用程式。
SimpleControl
元素和 Label 控制項會顯示文字 "Hello"。
Windows Forms 設計工具提供在附屬組件中啟用當地語系化的設定。
在 [方案總管] 中,按兩下 [Form1.cs],以在 Windows Forms 設計工具中開啟它。
在 [屬性] 視窗中,將表單之 Localizable 屬性的值設定為
true
。在 [屬性] 視窗中,將 Language 屬性的值設定為 Spanish (Spain)。
在 [Windows Forms 設計工具] 中,選取 Label 控制項。
在 [屬性] 視窗中,將 Text 屬性的值設定為
"Hola"
。名為 Form1.es-ES.resx 的新資源檔會新增至專案。
在 [方案總管] 中,以滑鼠右鍵按一下 [Form1.cs],然後按一下 [檢視程式碼] 以在程式碼編輯器中開啟它。
在呼叫
InitializeComponent
之前,將下列程式碼複製至Form1
建構函式。C#public Form1() { System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-ES"); InitializeComponent(); }
在 [方案總管] 中,以滑鼠右鍵按一下 LocalizingWpfInWf,然後按一下 [卸載專案]。
專案名稱會標上 (無法使用)。
以滑鼠右鍵按一下 LocalizingWpfInWf,然後按一下 [編輯 LocalizingWpfInWf.csproj]。
隨即在程式碼編輯器中開啟專案檔。
將下行複製至專案檔中的第一個
PropertyGroup
。XML<UICulture>en-US</UICulture>
儲存並關閉專案檔。
在[方案總管] 中,以滑鼠右鍵按一下 LocalizingWpfInWf,然後按一下 [重新載入專案]。
您可以使用資源識別碼,將可當地語系化的內容對應至資源組件。 當您指定 updateuid
選項時,MsBuild.exe 應用程式會自動指派資源識別碼。
從 [開始] 功能表中,開啟 [適用於 Visual Studio 的開發人員命令提示字元]。
使用下列命令,將資源識別碼指派給可當地語系化的內容。
主控台msbuild -t:updateuid LocalizingWpfInWf.csproj
在[方案總管] 中,按兩下 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>
按 F6 以建置方案。
當地語系化的內容會儲存在僅含資源的「附屬組件」中。 使用命令列工具 LocBaml.exe 來產生 WPF 內容的當地語系化組件。
將 LocBaml.exe 複製至專案的 obj\Debug 資料夾。 如需詳細資訊,請參閱將應用程式當地語系化。
在 [命令提示字元] 視窗中,使用下列命令來將資源字串擷取至暫存檔。
主控台LocBaml /parse LocalizingWpfInWf.g.en-US.resources /out:temp.csv
使用 Visual Studio 或另一種文字編輯器來開啟 temp.csv 檔案。 將字串
"Hello"
取代為其西班牙文翻譯"Hola"
。儲存 temp.csv 檔案。
使用下列命令來產生已當地語系化的資源檔。
主控台LocBaml /generate /trans:temp.csv LocalizingWpfInWf.g.en-US.resources /out:. /cul:es-ES
LocalizingWpfInWf.g.es-ES.resources 檔案會在 obj\Debug 資料夾中建立。
使用下列命令來建置已當地語系化的附屬組件。
主控台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 資料夾中建立。
將 LocalizingWpfInWf.resources.dll 檔案複製至專案的 bin\Debug\es-ES 資料夾。 取代現有檔案。
執行 LocalizingWpfInWf.exe,其位於專案的 bin\Debug 資料夾中。 請不要重建應用程式,否則將會覆寫附屬組件。
應用程式會顯示當地語系化字串,而不是英文字串。
其他資源
訓練
模組
使用共用資源設計一致的 .NET MAUI XAML 頁面 - Training
了解如何使用靜態和動態共用資源來建置 .NET Multi-Platform App UI (MAUI) 使用者介面。 以及了解樣式如何讓使用者介面保持一致且可供存取。