WPFローカリゼーション拡張機能の概要と例

WPFローカリゼーション拡張機能の概要と例

WPFローカリゼーションは、アプリケーションリソースを、そのアプリケーションの特定の地域をサポートするローカライズ版に変換することです。

最后更新 2021/04/05 22:34
沙漠尽头的狼
预计阅读 5 分钟
分类
WPF
标签
.NET WPF ローカリゼーション。

WPFローカリゼーションの紹介

WPFローカリゼーションは、アプリケーションリソースを、そのアプリケーションの特定の地域をサポートするローカライズ版に変換することです。適切な情報を得るためには、データを適切な言語に変換する必要があります。

WPFローカリゼーションの目的は?

  • アプリケーションを開発し、アプリケーションが1つの言語しか使用できない場合、多くのユーザーがアプリケーションを使用できないため、顧客ベースとビジネスの規模が制限されます。
  • 顧客基盤とビジネスを拡大したいのであれば、製品が利用可能であり、適切な言語で簡単なメッセージで世界中のオーディエンスにリーチできる必要があります。費用対効果の高い製品ローカリゼーションは、より多くの顧客にリーチし、アプリケーションに参加するための最良かつ最も経済的な方法の1つです。
  • 私たちが知っているように、世界にはたくさんの人がいて、たくさんの言語がある。この場合、WPFローカリゼーションは大きな影響を与えます。
  • 人々はプロジェクトの有用な情報や優れた機能に障害がないことを望むからです。
  • 適切なユーザー言語に関するすべての情報を提供できます。

WPFローカリゼーションの種類は?

WPFには2種類の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 **

リソース·ファイルの追加

添加资源文件

インストール後、リソースファイル上の図を追加し、Resource.resxファイルを開きます。

追加されたリソース文書:

新增加的资源文件

  • ステップ4 **

我们需要将访问修饰符更改为 public,现在您可以在主页面中使用刚添加的资源了(即右键资源文件属性,将自定义工具(Custom Tool)改为PublicResXFileCodeGenerator即可,否则运行程序报错)

  • ステップ5 **

ユーザーのデザインはresource.resxファイルで確認できます。

** ステップ6 **

新しいファイルを作成し、手順に従ってください。

“プロジェクト名を右クリック->追加ボタンをクリックして、新規項目をクリックして、Visual C#プロジェクトをクリックして、リソースファイルを検索します->ファイル名を定義します。“

**

Resource.fr-FR.resxとResource.gr-GRサンプルのファイル名を宣言します。

ファイル名:以下のResource.resxファイル

Resources.resx

ファイル名:Resource.fr-FR.resxファイルは以下のとおりです。

Resources.fr-FR.resx

  • ステップ7 **

これで、以下の名前空間を使用してMainWindows.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ローカライズサンプルプロジェクト

  • 次に、WPF LocalizationDemoという新しいプロジェクトを作成します。
  • 次に、Resource.en.resxとResource.gr-GR.resxの2つのファイルを作成します。
  • データフィールドを両方のファイルに追加します。

Resources.en.resx

Resources.en.resx

Resources.gr-Gr.resx

Resources.gr-Gr.resx

** リソースファイル内の表データの **

ボタンを作成1送信テキストが送信されます。

ボタンの作成2ユーザーを登録します。

ボタンの作成3ログインフォームのデータをキャンセルまたはリセットします。

ラベルの作成1-ログインフォームのタイトルとヒント。

Create a label 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の概要を理解するための主要な概念の1つであり、アプリケーションが言語の壁を解決するのに役立ちます。

原文へのリンク:https//www.c-sharpcorner.com/blogs/an-overview-of-wpf-localization-extension-with-an-example

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2025/09/13

WPFからAvaloniaへの移行シリーズ:WPFプログラムをAvaloniaに移行する必要がある理由

ここ数年、当社のホストソフトウェアは主にWPFとWin Formで開発されてきました。これらのテクノロジーはWindowsプラットフォームで非常にうまく機能し、小規模なパイロット生産から今日の大規模なデリバリまでの段階を経てきました。しかし、ビジネスの成長と顧客のニーズの変化に伴い、単一のWindowsテクノロジースタックは私たちが乗り越えなければならないハードルになりました。

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

WPFはカスタムXMLファイルで国際化を実現

この記事では、必要なNuGetパッケージのインストール、言語リストの動的取得、言語の動的切り替え、コードとxamlインターフェイスでの翻訳文字列の使用、開発者がWPFアプリケーションを簡単に国際化できるようにするソースコードへのリンクなど、WPFプログラムでカスタムXMLファイルを使用した国際化の方法について詳しく説明します。

继续阅读