もくじ
https://qiita.com/tera1707/items/4fda73d86eded283ec4f
やりたいこと
以前.NET FrameworkのWPFで、画面のローカライズを行った。
https://qiita.com/tera1707/items/fb6570f3894a607f9dce
その時のやり方と、.NET6でのWPFで、微妙にやり方に違いがあったのでまとめる。
前提
- .NET6
- WPF
- 2023年3月時点で確認。
やりかた
.NET6を使う。
まず初めに、.netFWの時との違いで、「Properties」フォルダがない。
で、その中にあった「Resources.resx」もない。
.NETFWのときの画面↓
なので、まず文字列リソース用のリソースフォルダを作る。
で、そのフォルダを右クリックして、新規追加を選択し、リソースファイル(.resx)を選ぶ。
以前やったのと同じように、Resources.resx
とResources.言語コード.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でのやり方。