UIの現在の表示言語設定をコードから変更する

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

やりたいこと

以前の記事で、多言語対応のやり方を調べたが、 多言語対応の動作確認をするときに、実際にWindowsの言語の設定を変えてテストいようとすると、一度サインアウトしないといけなかったりしてとてもめんどくさい。

画面上の見た目がどうなるか程度にテストするときに、なにか簡易的なやり方がないか?

やりかた

CultureInfo.CurrentUICultureに、設定したい言語のカルチャーをセットする。

サンプルコード

とりあえず、アプリ起動直後に、CultureInfo.CurrentUICultureに、設定したい言語のカルチャーをセットする。

CultureInfo.CurrentCultureではなくCultureInfo.CurrentUICulture

using System.Globalization;
using System.Windows;

namespace CultureTest
{
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            CultureInfo.CurrentUICulture = new CultureInfo("ja-JP", false);
            base.OnStartup(e);
        }
    }
}

これで、以前の記事でやっていた方法でのローカライズでは、簡易的に言語ごとのリソースが切り替わってくれた。

参考

Properties(resx)を使ったローカライズ

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

ResourceDictionaryを使ったローカライズ

https://tera1707.com/entry/2023/01/11/233227