wiki:dokuwiki:cs:コンソールアプリケーションの多言語対応

コンソールアプリケーションの多言語対応

これがまぁ、あんまり資料がなかった。とりあえず、できた方法を書いておく。

まず、対象のプロジェクト配下に「Resources」を作成する。で、「Resources」フォルダを右クリックして、リソースファイルを追加する。
「追加」→「新しい項目」で、リソースファイルを選べば良い。 このとき、「.resx」ファイルの名前は「Language.eo.resx」というように、「Language.(カルチャコード).resx」とする。指定するカルチャコードは「TwoLetterISOLanguageName(雑訳:2文字のISO言語名)」にする。
カルチャコードは https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes を参照すること。

.resxを開くと上記のような画面になるので、エスペラント語であれば上記のように書いておく。
多言語対応する場合は、別の言語リソースファイルと同じ「名前」で、その言語の「値」を設定しなければいけない。つまり、日本語のリソースファイル「Language.ja.resx」の内容は下のようになる。

次に実装であるが、実装は下記のようになる。
※どっかのページを参考にしたのですけど、忘れた。見つけたらURLはります。

  1. internal class LocalizeReader
  2. {
  3. private static readonly ResourceManager resourceManager =
  4. new ResourceManager("touch.Resources.Language", typeof(LocalizeReader).Assembly);
  5.  
  6. private static string GetResourceValue(string resourceName)
  7. {
  8. var cultureCode = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;
  9. var culture = new CultureInfo(cultureCode);
  10. var val = resourceManager.GetString(resourceName, culture);
  11.  
  12. return val;
  13. }
  14.  
  15.  
  16. private static string GetResourceValue(string resourceName,string CultureCode)
  17. {
  18. var culture = new CultureInfo(CultureCode);
  19. var val = resourceManager.GetString(resourceName, culture);
  20.  
  21. return val;
  22. }
  23.  
  24. public static string GetResourceValue(string resourceName, bool isEos)
  25. {
  26. string res = "";
  27.  
  28. if (isEos)
  29. {
  30. res = GetResourceValue(resourceName,"eo");
  31. }
  32. else
  33. {
  34. res = GetResourceValue(resourceName);
  35. }
  36.  
  37.  
  38. return res;
  39. }
  40. }

おふざけ無しで、100%環境のカルチャコードで読み出すリソースファイルを分別するなら6行目のメソッドだけでいい。また、指定したカルチャコードで表示したい場合は16行目を追加すると便利。
おふざけありで、エスペラント語だけ便利に実装したい場合は24行目だけpublicとかしておくと便利。
※アクセス修飾子1)は適宜変更すること。

  1. Console.WriteLine(LocalizeReader.GetResourceValue("msg0002", false));

このように呼び出すと絶対に日本語でメッセージが表示される。


1)
private とか publicとか
  • wiki/dokuwiki/cs/コンソールアプリケーションの多言語対応.txt
  • 最終更新: 2024/11/04 00:47
  • by 127.0.0.1