QA@IT

.resxファイルをいじりたい

6650 PV

多言語化のため、C#の.resxファイルをいじりたいのですが、
どうやっていじればいいのでしょうか。

・おそらく変更のない箇所はファイルには載らない。
・デザイナやリソースプロパティをいじればリソースに変更部分が記述される。

たとえばtextbox.textやlistboxの一覧の文字列を変更する場合は
どのように変更すればいいのでしょうか。

また、項目としてない場合はどうやって追加すればよいのでしょうか。

回答

ちょっと聞きたいことがよくわからないのですが、ダブルクリックするかXMLエディタで開けばいじれると思います。
多言語化・国際化について聞きたい場合はタイトルにも「多言語化のために」など付け加えておいてください。

どこまでわかっているのかわかりませんので最初から

WinFormsの場合国際化用のリソースファイルをつくるには、FormのプロパティでLocalizeをTrueにして
Languageを (既定) ないし (default) から変更します。
それ以降加えた変更はその言語用のリソースファイルに書き込まれることになります。
リストボックスの場合は差分だったと思います。そのあたりはやってみればわかると思います。

「項目としていない」というのはプロパティに設定していないということだとおもいますが、その場合も対象の国際化用リソースに値を入れておけば取り出せるとは思いますが、アセンブリのリソースファイルを既定用と同名の各言語用を用意してResourceManagerを使った方が簡単でしょう。

これ以上はタイトルから外れるのでここまで。

編集 履歴 (0)
  • 私もResourceManagerを使って単文テーブルを作りたいのですが、
    ・デザイナ上で文字がはみ出ているか確認できない。
    ・はみ出している場合、リソースを変更するとほかの箇所でも
    変更が反映されてしまう。
    ということで困っております。
    -

質問が複数あるようですが

おそらく.resxファイルをツールかなにかで操作していると思ったのですが、

多言語化用のVSプラグインをもったソフトは存在するようですが、私は使ったことがありません。
見かけたのは World Wide Navi というものですが、VSプラグインは有料版からのようです。
あとは翻訳支援のツールも使い方次第で役にたつこともあるでしょう。

やはりどんなに数が多くても手作業でやらなければならないのでしょうか。

これはやり方次第と思いますが、chokorateice さんの様にリソースファイルを修正するツールを用意する人もいるでしょうし、そもそもリソース以外のファイルで実現している場合もあると思います。

デザイナ上で文字がはみ出ているか確認できない。
はみ出している場合、リソースを変更するとほかの箇所でも 変更が反映されてしまう。

これは目で見るしかないでしょう。
固定長フォントにしておけば通常バイト数が同じであれば長さは変わりませんが、デザインの問題もありますので常に採用できるかどうかはわかりませんね。

編集 履歴 (0)

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

多言語化で翻訳された英文をデザイナーへコピーしているのですが
とにかく数が多くて・・・。

そこで.resxファイルを改造するC#プログラムを作ろうと考えておりました。
形式はxmlファイルなので、日本語文字列の部分だけ英語に置換すれば
実現できるかと思いました。(デザイン上文字がはみ出すといった件はあとで目視で確認)

既存ファイルと変わらない文字はファイルに追加しなければならないので
そちらも対応できるようにと検討しております。

たくさんのフォームの英訳作業はよくある事だと思うので
おそらく.resxファイルをツールかなにかで操作していると思ったのですが、
やはりどんなに数が多くても手作業でやらなければならないのでしょうか。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。