WinUI3で、OSの言語設定を変更せずに、コードから使う言語を変更する

もくじ
https://tera1707.com/entry/2022/02/06/144447

やりたいこと

以前の記事で、.reswファイルを作成して、WinUI3をローカライズする方法を調べた。

そこでローカライズした後、画面上の文言が翻訳できているか、OSの言語設定を変えて動作確認していたのだが、 そうすると1言語確認するたびにOSのログアウトをしないといけなくて、非常にめんどくさい。

思ったところに意図した文字がでてるか、文字がはみ出してないか、くらいの確認であれば、もっと簡単な方法で、 例えば、コードの頭に指定の言語を書くとかでもいいので、簡単にできないか調べたい。

前提

VisualStudio2022:17.4.4 WindowsAppSDK:1.2.221109.1 パッケージアプリ

やったこと

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverrideを使う。

サンプルコード

App.xaml.csのAppクラスのコンストラクタに、Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverrideの値を入れる処理を入れる。

namespace LaungTest
{
    public partial class App : Application
    {
        public App()
        {
            this.InitializeComponent();

            ApplicationLanguages.PrimaryLanguageOverride = "de"; // ★★コレ
        }

        protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
        {
            m_window = new MainWindow();
            m_window.Activate();
        }

        private Window m_window;
    }
}

上記だと、ドイツ語のリソースを使うように設定している。

参考

UWPのローカライズ

https://learn.microsoft.com/ja-jp/windows/uwp/app-resources/localize-strings-ui-manifest

ApplicationLanguages.PrimaryLanguageOverride プロパティ

https://learn.microsoft.com/ja-jp/uwp/api/Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride?view=winrt-22621