ResXManagerを使用して多言語対応を行う

C#

0. はじめに

Visual Studioで多言語対応が必要なアプリケーションを開発する際、ResXManagerという拡張機能が便利そうだったので、使用方法などを簡単にまとめてみました。 ResXManagerは、各言語リソースファイルを開かなくとも、専用の画面で言語キー(文字列)を参照/追加/更新/削除できる機能になります。

1. ResXManagerをダウンロードする

Visual Studioメニューの「拡張機能 > 拡張機能の管理」から、ResXManagerをダウンロードします。 ※ダウンロード後、変更を反映するため、Visual Studioの再起動が必要かと思います。 1.png

2. 言語リソースファイルを追加する

まずは準備として、ソリューションエクスプローラーコンテキストメニューの「追加 > 新しい項目」からリソースファイルを作成します。 名前は何でもいいですが、私は「Strings.resx」としました。 3.png

3. ResXManagerを使ってみる

Visual Studioメニューの「ツール > ResX Manager」を選択すると、ResX Resource Managerが起動します。

3-1. デフォルトの言語を変更する

Configurtionタブの「Netural Resouces Language」から、デフォルトの言語を変更できます。 元々は英語になっているかと思いますので、日本語に変更しました。 4.png

3-2. 言語を追加する

Mainタブの「Add new language」から、言語を追加できます。 今回は英語・フランス語を追加してみました。 5.png

対応するリソースファイル(Strings.en.resx、Strings.fr.resx)が自動で生成されます! 6.png

3-3. キー(文字列)を追加する

「Add new key」から、キー(文字列)を追加できます。 7.png

文字列を追加しない場合は、赤塗りで表示されます。 8.png

3-4. キー(文字列)を削除する

「Delete selected items」から、キー(文字列)を削除できます。 9.png

4. 出力してみる

class Program
{
    static void Main(string[] args)
    {
        // 日本語
        Console.WriteLine(Strings.HelloWorld);

        // 英語
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
        Console.WriteLine(Strings.HelloWorld);

        // フランス語
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
        Console.WriteLine(Strings.HelloWorld);
    }
}

w.png

5. おわりに

  • 「〇〇言語に〇〇キーの文字列が設定されていない!」ということにすぐ気づけるのでとても便利ですね:innocent:(今回この拡張機能を使おうと思ったきっかけがコレでした)
  • 私が必要としていた機能は上記に記載した範囲でしたが、他にも「キー(文字列)のコピー/ペースト」「エクセルへのインポート/エクスポート」 といったことが行えるみたいです:innocent: