WPFでPropertiesでxamlの画面を多言語対応(ローカライズ)する(.NET6版)

もくじ
https://qiita.com/tera1707/items/4fda73d86eded283ec4f

やりたいこと

以前.NET FrameworkWPFで、画面のローカライズを行った。

https://qiita.com/tera1707/items/fb6570f3894a607f9dce

その時のやり方と、.NET6でのWPFで、微妙にやり方に違いがあったのでまとめる。

前提

  • .NET6
  • WPF
  • 2023年3月時点で確認。

やりかた

.NET6を使う。

まず初めに、.netFWの時との違いで、「Properties」フォルダがない。
で、その中にあった「Resources.resx」もない。

.NETFWのときの画面↓

なので、まず文字列リソース用のリソースフォルダを作る。

で、そのフォルダを右クリックして、新規追加を選択し、リソースファイル(.resx)を選ぶ。

以前やったのと同じように、Resources.resxResources.言語コード.resxを作る。

今回は、ドイツ語のためのResources.de.resx`でためした。

リソースは、忘れずに「public」にする。

で、下記のようなコードを書く。

<Window x:Class="WpfApp52.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:WpfApp52"
        xmlns:strs="clr-namespace:WpfApp52.Strings" ★ココを追記
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TextBlock Text="{x:Static strs:Resource.String1}" />
    </Grid>
</Window>

Resource.Designer.csのコードを開いてみると、namespaceとかが見えるので、それを参考に「★ココを追記」のところのnamespaceを追記する。   名前空間の「WpfApp52.Strings」のStringsの部分は、標準で最初に作ったフォルダ名になる。

参考

以前やった。NetFrameworkのWPFでのやり方。

https://qiita.com/tera1707/items/fb6570f3894a607f9dce