wpf本地化擴展概述及實例

wpf本地化擴展概述及實例

wpf本地化是將應用程式資源轉換為支持該應用程式的特定區域性的本地化版本。

最后更新 2021/4/5 下午10:34
沙漠尽头的狼
预计阅读 8 分钟
分类
WPF
标签
.NET WPF 本地化

wpf 本地化居間

wpf 本地化是將應用程式資源轉換為支持該應用程式的特定區域性的本地化版本。您必須將數據轉換為適合的語言,以獲取適當的信息。

wpf 本地化的目的是什麼?

  • 當您開發應用程式並且您的應用程式只有一種語言可用時,那麼您就限制了您的客戶群和業務規模,因為許多用戶無法使用此應用程式。
  • 如果你想增加你的客戶群和業務,那麼你的產品必須是可用的,並且可以通過你的合適語言的簡單信息讓全球觀眾接觸到。成本效益高的產品本地化是聯繫更多客戶並加入應用程式的最佳和最經濟的方法之一。
  • 正如我們所知,這個世界上有那麼多的人,有那麼多的語言。在這種情況下,wpf 本地化將產生顯著的影響
  • 因為人們希望項目中的有用信息和良好的功能沒有任何障礙。
  • 它可以為您提供有關適當用戶語言的所有信息。

wpf 本地化有哪些類型?

wpf 中有兩種類型的 wpf 本地化。

  1. 靜態 wpf 本地化。
  2. 動態 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

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.resx

文件名:下面的 resources.fr-fr.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.en.resx

Resources.gr-Gr.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

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2020/4/21

怎樣實現wpf prism module的國際化和本地化?

上一篇有簡單居間主工程的國際化,使用的資源字典(xaml)實現的。這幾天我添加了幾個prism模塊(module),發現子模塊使用資源字典的方式實現國際化和本地化不好做,沒有找到比較好的參考文章,所以換了一種方式,使用資源文件實現了。

继续阅读
同分类 / 同标签 2025/1/26

wpf 藉助自定義 xml 文件實現國際化

本文詳細居間了在wpf程式中使用自定義xml文件實現國際化的方法,包括安裝必備nuget包、動態獲取語言列表、動態切換語言、在代碼和xaml界面中使用翻譯字符串等內容,同時提供了源碼連結,幫助開發者輕鬆實現wpf應用的國際化。

继续阅读