wpf 本地化居間
wpf 本地化是將應用程式資源轉換為支持該應用程式的特定區域性的本地化版本。您必須將數據轉換為適合的語言,以獲取適當的信息。
wpf 本地化的目的是什麼?
- 當您開發應用程式並且您的應用程式只有一種語言可用時,那麼您就限制了您的客戶群和業務規模,因為許多用戶無法使用此應用程式。
- 如果你想增加你的客戶群和業務,那麼你的產品必須是可用的,並且可以通過你的合適語言的簡單信息讓全球觀眾接觸到。成本效益高的產品本地化是聯繫更多客戶並加入應用程式的最佳和最經濟的方法之一。
- 正如我們所知,這個世界上有那麼多的人,有那麼多的語言。在這種情況下,wpf 本地化將產生顯著的影響
- 因為人們希望項目中的有用信息和良好的功能沒有任何障礙。
- 它可以為您提供有關適當用戶語言的所有信息。
wpf 本地化有哪些類型?
wpf 中有兩種類型的 wpf 本地化。
- 靜態 wpf 本地化。
- 動態 wpf 本地化
靜態 wpf 定位
- 靜態 wpf 本地化對於將靜態數據轉換為另一種語言非常有用。
- 它對於靜態項目很有用,因為它可以定義為所有要翻譯成另一種語言的信息。由於許多人利用網際網路獲取信息,這種情況對於另一個國家的居民來說是很有用的,因為他們可以輕鬆地獲取信息。
動態 wpf 本地化
- 用於動態數據的動態 wpf 本地化。
- 這種類型的本地化對於以動態格式獲取數據非常有用。
- 在動態格式中有太多的信息要獲取,在這種情況下,根據用戶的需要很容易將其翻譯成另一種語言。因此,這些特性起著至關重要的作用。
- 動態 wpf 本地化利用資源字典文件來獲取數據並將其從一種語言翻譯到另一種語言。
資源字典文件示例
代碼
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
>
</ResourceDictionary>
通過添加命名空間使用資源字典。
命名空間
xmlns:sys="clr-namespace:System;assembly=mscorlib"
將資源字典文件中的數據添加到下面的代碼中,如下所示,
代碼
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
>
<sys:String x:Key="ResourceDictionaryName">Loc-en-US</sys:String>
<sys:String x:Key="WindowTitle">Dynamic Localizzation in wpf</sys:String>
<sys:String x:Key="FirstNameLabel">First Name</sys:String>
<sys:String x:Key="LastNameLabel">Last Name</sys:String>
</ResourceDictionary>
如何在項目中使用 wpf 本地化?
第 1 步
為 wpf 本地化創建一個新項目。
第 2 步
然后安装最新版本的 WPF 本地化扩展包:WPFLocalizeExtension。

第 3 步
添加資源文件

安裝後,添加資源文件(如上圖),打開 resources.resx 文件。
新增加的資源文件:

第 4 步
我们需要将访问修饰符更改为 public,现在您可以在主页面中使用刚添加的资源了(即右键资源文件属性,将自定义工具(Custom Tool)改为PublicResXFileCodeGenerator即可,否则运行程序报错)
第 5 步
您可以在 resources.resx 文件中看到用戶的設計。
第 6 步
創建一個新文件,按照步驟操作。
“右鍵單擊項目名稱->單擊添加按鈕->然後單擊新建項->然後單擊 visual c#項目->然後查找資源文件->然後定義文件名。“
注意
但要聲明為 resources.fr-fr.resx 和 resources.gr-gr 示例的文件名。
文件名:下面的 resources.resx 文件,

文件名:下面的 resources.fr-fr.resx 文件。

第 7 步
現在,您可以使用下面的命名空間在 mainwindow.xaml 文件中添加該文件,
例子,
“xmlns:CC="clr-namespace:WpfApp1Localization.Properties"”
第 8 步
現在可以使用 app.xaml.cs 文件調用資源文件,即啟動項目時讀取本地語言,進行語言切換。
代碼
namespace WpfApp1Localization {
public partial class App: Application {
App() {
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("gr-GR");
//System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
}
}
}
第 9 步
現在保存項目的所有文件並運行該項目。
第 10 步
在 wpf 本地化中使用 wpf 中的靜態 wpf 本地化輸出項目
輸出

wpf 本地化示例項目
- 現在首先創建一個新的項目項目名是:wpflocalizationdemo
- 然後創建兩個文件:resources.en.resx 和 resources.gr-gr.resx
- 將數據欄位添加到兩個文件中。
Resources.en.resx

Resources.gr-Gr.resx

資源文件中表數據的說明
創建一個按鈕 1–提交文本將被提交。
創建一個按鈕 2–註冊用戶。
創建一個按鈕 3–取消或重置登錄表單中的數據。
創建一個標籤 1-登錄窗體的標題和提示。
創建一個標籤 2-用於輸入用戶名的標籤提示。
創建一個標籤 3-輸入密碼的標籤提示。
- 在下面的 xaml 文件中通過添加命名空間添加資源文件:
代碼
<Window
x:Class="WpfApp1Localization.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1Localization"
xmlns:CC="clr-namespace:WpfApp1Localization.Properties"
mc:Ignorable="d"
Title="{x:Static CC:Resources.Log_In}"
Height="450"
Width="800"
Background="Chocolate"
>
<Grid>
<TextBox
HorizontalAlignment="Left"
Height="23"
FontSize="12"
Margin="412,152,0,0"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="120"
/>
<TextBox
HorizontalAlignment="Left"
Height="23"
FontSize="12"
Margin="412,233,0,0"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="120"
/>
<label
x:Name="label1"
Content="{x:Static CC:Resources.Log_In}"
HorizontalAlignment="Left"
FontSize="18"
Margin="338,72,0,0"
VerticalAlignment="Top"
RenderTransformOrigin="0.526,2.491"
/>
<label
x:Name="label2"
Content="{x:Static CC:Resources.User_Name}"
HorizontalAlignment="Left"
FontSize="12"
Margin="245,152,0,0"
VerticalAlignment="Top"
/>
<label
x:Name="label3"
Content="{x:Static CC:Resources.Password}"
HorizontalAlignment="Left"
FontSize="12"
Margin="245,233,0,0"
VerticalAlignment="Top"
/>
<button
x:Name="button1"
Content="{x:Static CC:Resources.Submit}"
HorizontalAlignment="Left"
Margin="338,330,0,0"
VerticalAlignment="Top"
Width="75"
/>
<button
x:Name="Button2"
Content="{x:Static CC:Resources.Registration}"
HorizontalAlignment="Left"
Margin="245,340,0,0"
VerticalAlignment="Top"
Width="75"
/>
<button
x:Name="Button3"
Content="{x:Static CC:Resources.Cancel}"
HorizontalAlignment="Left"
Margin="532,335,0,0"
VerticalAlignment="Top"
Width="75"
/>
</Grid>
</Window>
使用 app.xaml.cs 文件調用資源文件
代碼
namespace WpfApp1Localization {
public partial class App: Application {
App() {
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("gr-GR");
//System.Threading.Thread.CurrentThread.CurrentUICulture =
new System.Globalization.CultureInfo("en");
}
}
}
程式或項目的輸出,
談到輸出設計,它看起來像下面這樣。
英文登錄表單如下:

以下為德語登錄表單:

結論
在這個博客中,我們了解了 wpf 本地化,它的重要性,它的類型,以及它是如何實際工作的。這是理解 wpf 概述的主要概念之一,它將有助於應用程式解決語言障礙的問題。
原文連結:https://www.c-sharpcorner.com/blogs/an-overview-of-wpf-localization-extension-with-an-example