質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.48%

.NET における多言語対応

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,882

score 38

いつもお世話になっております。

.NET において、リソースファイルを用いて多言語対応が可能なところまではわかったのですが、以下の点で悩んでいます。

 対象のアプリケーション

以下の2つです。

  • WPF によるデスクトップアプリケーション
  • ASP.NET Core による Web アプリケーション

 前提・実現したいこと

私の勤めている会社では、今後海外に製品を売り出す際は英語版として販売し、英語以外への翻訳は、現地の代理店側で翻訳業者などに依頼して対応してもらうことを想定しているようです。

そのため、英語で書かれたテキストファイルなどを現地の言語に翻訳して、そのテキストファイルを差し替えるだけで対応したいのだそうです。
つまり、英語以外への対応には私の勤めている会社は関与しないという方針です。

しかし、リソースファイルを使用して多言語対応を行ったとき、ビルドを行うと dll 形式でリソースファイルが出力されます。
ということは、リソースファイルを変更した場合は、必ずビルドする必要があると認識しています。
そのため、このままだとテキストファイルを差し替えるだけでの対応は無理なように思っています。

現地で翻訳したテキストファイルをもらい、それをリソースファイルに反映し、ビルドしなおして再配布できればよいのですが、それが不可能だった場合にどうしようかと悩んでいます。
また、リソースファイルは XML 形式のため、これをそのまま渡して翻訳してもらうのも厳しいので、もっとシンプルな形式で渡すよう言われるかもしれません。

しかし、せっかくフレームワークに多言語対応の仕組みがあるので、出来ればそれを使用し、独自実装などは行いたくないと考えています。

 知りたいこと

上記を踏まえ、以下のことについてお教えいただければと思います。

  • リソースファイルを dll 形式ではなく、テキスト形式で出力する方法はあるか?
  • リソースファイルから別のファイルのテキストを参照することはできるか?
    (例えば、リソースファイルから INI ファイルを参照するなどができれば、リソースファイルの出力は dll でも INI ファイルを翻訳すれば済むため)
  • .NET に限らず、こういう要望に対しては一般的にどのように多言語対応を行うのか?
    またはこういう要望は普通はないのか?

補足情報(言語/FW/ツール等のバージョンなど)

  • Visual Studio 2017 Professional
  • .NET Framework 4.6.1 (WPF)
  • .NET Core 2.0 (ASP.NET Core)
  • 言語:C# 7.0

以上、宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+2

.NETの製品ではありませんが、過去にいくつかの製品のローカライズ(翻訳)案件に関わった経験があります。

.NETにおけるリソースファイルの扱いについては先のご回答で既に良い案がご提示されていますので、(私も参考にさせていただきました。ありがとうございます)

.NET に限らず、こういう要望に対しては一般的にどのように多言語対応を行うのか?
またはこういう要望は普通はないのか?

について、回答としてフォローさせてもらおうと思います。

このような要望はありましたが、安易な方法を提案された場合、ローカライズ(翻訳作業)に経費と時間を割きたくないと言う、どちらかと言うとは営業的、会社的(?)な理由が大きかったです。しかし結局は独自の安易な方法は採用されず、開発環境に用意された正規の手段で対応されていきました。

ローカライズは文字列の翻訳のみで終わることはほとんど無く、フォントの種類や大小、翻訳後に文の長さが変わることで画面のレイアウトや表示項目の大きさ、並びを調整することがあります。文字コードや地域別の表記がプログラムの動作に影響が出ることもあります。結局、最後はリソースエディターのような正規のツールを使って見た目と動作を確認しつつ、作業を進めるかたちに落ち着いています。

製品の規模や会社の組織が小さい内はやっつけで終わっていましたが、品質が問題になるとそれ用のローカライズチームが組まれ、技術力を持った翻訳担当者がエンジニア(プログラマー)と協力して、適切なツールを使うようになっていました。外部へ委託するにしても、その外部組織でツールに習熟するよう求めていきます。「ローカライズキット」と銘打って、ローカライズ(翻訳)作業に必要なファイルやツール、手順をまとめて提供するようにしたこともあります。

結局、品質を確保する為にエンジニアの視点が必要になります。製品のリリースでは最終段階でビルドするわけですし。

日本にもソフトウェアのローカライズのノウハウを持つ翻訳会社があります。そう言った会社に相談してみるのもひとつの手かと思います。製品展開の規模にもよるでしょうが、特に最初はエンジニア抜きでローカライズ作業を完了させることは難しいと思います。適切なツールを選択してそれなりに体制を整えていく必要があると考えます。

直接の回答ではなかった(むしろ、外れ気味?)かもしれませんが、参考情報としていただければ。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/08 12:05

    回答ありがとうございます。
    結局私の会社でも画面レイアウトの関係などで、翻訳したファイルをもらってこちらで検証せざるを得ないというような話になっているようです。
    ただやはり根底にはそこにコストをかけたくないというのがあるようで、専門のチームを組むとかツールの選定や作成とか翻訳者に技術力を求めるとかいうことには私も含めて意識がなかったので、こういう情報はとても参考になります。

    キャンセル

  • 2017/11/08 12:30

    私のケースでも、最初は会社側よりはむしろエンジニアと翻訳者側の品質へのこだわりで適切なプロセスを導入するようになっていた感があります。会社側は常に「なぜ翻訳にそんなに時間とコストがかかるのだ?!」との意識でした。どちらの考えも理解はできるので難しいですが、品質が悪いとリリース後に結局、エンジニアやサポート部門に負荷がかかるので、注意が必要です。

    キャンセル

checkベストアンサー

0

WPFだけですが、WPF におけるパッケージの URIで素のXMLファイルを指定できます。

個人的には「リソースファイルを書き換えるアプリケーションを代理店に配布する」に一票入れます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/05 00:41

    回答ありがとうございます。

    > 個人的には「リソースファイルを書き換えるアプリケーションを代理店に配布する」に一票入れます。

    確かに言われてみれば、それが一番楽そうではありますね。
    その方向で検討してみたいと思います。

    キャンセル

  • 2018/07/31 13:05

    差し当たり、リソースファイルを編集するツールを提供して、リソースファイルを編集してもらうことになりましたので、こちらをベストアンサーとさせていただきます。

    キャンセル

0

似たような要件で色々試しているのですが、詳しくは書けないのでヒント的に幾つか。
※ただし、WPFのリソースではなく、.NETのリソースでの話です。また、デスクトップアプリケーションです。  

リソースファイルを dll 形式ではなく、テキスト形式で出力する方法はあるか?

ResourceManagerから、GetResourceSetをとって列挙すれば良いので、どのような出力形式でも出力は可能です。  
なので、txtとかcsvで出力(自力)して、このファイルを元に翻訳してもらいます。  
exe自体に出力機能を持たせておくことで、最終のリソースを反映できます。  

変更してもらったファイルは exe起動時等に読み込むものとします。 
適用方法ですが、リソースDLLとして使用する方法として、リソースファイルのビルドは、al.exe があればできるので、exeの起動時にリソースファイルをビルドする力技も可能ではあります。  
.NET環境が入っている場合、al.exeもインストールされていたりするので利用は可能。  
ただし、保存先の権限や署名で問題になるかもしれません。  

上記リソースDLLは色々と難しいので、ResourceManagerのラッパークラスを作成して、GetStringで返す値を変える対処の方が簡単かもしれません。  
内部的にはCulture毎のDictionaryを持つことになります。

.NETの文字列リソースをWPFで使用(バインディング)はResXFileCodeGeneratorで自動生成されるクラスを利用して行っています。  

要望的にはありそうなんですけどね。
もっと簡単な方法があれば私も知りたいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/05 00:44

    回答ありがとうございます。
    確かにもう少し簡単にやりたいところですが、いろいろ教えていただきとても参考になります。

    キャンセル

0

WPFについて、パット見でよさげな気がするので紹介しておきます。
google先生に聞いて最初の方だったので既にご存知かもしれませんが・・・

多言語対応(C#、WPF編)
XAMLについては、INPUTをexcelとして運用する想定で、Excel⇔XAML部分まで提供されています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/05 00:48

    回答ありがとうございます。
    私は主に ASP.NET のほうを PG しているので、こちらの情報は知りませんでした。
    Excel から変換できるのは確かに良さ気ですね。参考にさせていただきます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る