systembankスタッフのブログ

システムバンクスタッフのブログです。

 .NET Frameworkで多言語対応 その1

多言語対応

なんとなくですが多言語対応するアプリケーションを開発するための準備を始めました。

.NET Frameworkでは最も簡単な方法がResource.resxを対応する言語の数だけ用意するのがどうやら一般的なのでその方法を書き留めます。

設定の方法

 通常のResource.resx内に英語で必要な文字列を定義していきます。

f:id:systembank:20191118091430p:plain

アセンブリの外部で使えるようにアクセス修飾子はPublic にします。(英語は適当です、気にしないでください)

次にProperties内にResources.ja-JP.resxファイルを作成します。

文字列の名前をResources.resxで定義したものと全く同じにして値を日本語にして追加していきます。

f:id:systembank:20191118091901p:plain

こちらもアクセス修飾子をPublicにします。忘れると上手くいかなくなりました。(理由は後述)

実行結果

実行するとこんな感じになります。

 

f:id:systembank:20191118094304p:plain

日本語Windowsなので日本語で表示されます。

プロジェクトファイルのSettingに言語を登録してみます。

f:id:systembank:20191118093106p:plain

追加した言語をスタートアップで設定します。

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        VSS2SVN.Properties.Resources.Culture = VSS2SVN.Properties.Settings.Default.Language;
    }
}

実行すると

f:id:systembank:20191118093853p:plain

 ビルドしたフォルダをみると「ja-JP」フォルダがあります。その中にあるdllに日本語の文字列が格納されていてプログラム内の言語に従って使い分けされるようになっています。

f:id:systembank:20191118094715p:plain

resource.dllが本体と別れているので外部に公開されていないと本体側で使用できないことになります。なので前述のアクセス修飾子はPublicにしておく必要がありました。

この次

プログラム内で定義したリソース文字列をどうやって使っているかをソースコードで説明してみようと思います。