2013-01-14 9 views
10

私は、ローカリゼーションについて少し心配する必要のある製品を扱っています。その後、名前をコピーし、ローカライズされた文字列を管理する良い方法はありますか?

  1. 検索resources.resxファイルが見つかった場合
  2. (アイテムの数百を持っている):現在、これは私がローカライズされた文字列を使用(または追加)しなければならないときのためのワークフローがあります。そうでない場合は、新しい文字列を追加し、
  3. 名をコピーし、任意の文字列の

ResourceMgrがこのResourceManagerに静的なフィールドです)ResourceFactory.ResourceMgr.GetString("MY_MAGIC_STRING")を使用して、この3つの段階のプロセスは、本当の痛みです。このプロセスを簡単にするためのパターンや方法はありますか?

+1

同じ文字列を再利用することに注意してください。文脈によっては、別の言語に異なる翻訳が必要なフレーズ/センテンス/単語があります。例えば。文の主語に依存するスラブ語の動詞の共役。もちろん、スウィックです。 – svick

+0

私たちは通常、(特にString.Formatスタイルの文字列を使用して)すべてのものをまとめてみて、変更する必要があるときに翻訳者に教えてもらうようにします – Earlz

+0

クリーンなコードの場合、 – Paparazzi

答えて

5

個々の文字列にアクセスできる自動生成ファイルを使用する方がはるかに簡単です - RESXファイルの "カスタムツール"をPublicResXFileCodeGeneratorに設定してください。

using MyProject.Resources; 
... 
localizedText = Resources.SomeReasonableName; 

サイドノート:

  • が自動生成されたIDと一緒に、複数のRESXファイルがあなたの選択肢の合理的な数を与えるインテリセンスの付加的な利点を持っていた

    コードは次のようになります。

  • 翻訳の処理方法によっては、RESXファイルの重複したテキストについて心配する必要はありません(OK /文字列の種類を除く)。翻訳時に重複した文字列を扱う方が簡単かもしれません。
+0

しかし、これはわずかに改善されているので、改善はありません。 – svick

+1

@svick、あなたの電話。 "コンパイル時と実行時の比較"のように "やや"。また、文字列がフィーチャーによってファイルに編成されている場合、妥当な数の選択肢で、すべてが1つのファイルに収まるようにインテリセンスを得ることができます。しかし、少なくとも実行時の代わりにコンパイル時のエラーが発生します。 –

0

あなたにいくつかのアイデアを与えるかもしれない。このJavaソリューションがあります: http://rodionmoiseev.github.com/c10n/

アイデアは、インタフェースのメソッドにアノテーションを使用して、ソースコード自体に翻訳を格納することです。次に、特殊なユーティリティを使用して、インターフェイスメソッドを呼び出すときに、ローカライズされた文字列値を返すプロキシ(インターフェイスを動的に実装するクラス)を動的に作成することができます。

"MY_MAGIC_STRING"この方法では、MyMagicString()メソッドが呼び出され、スペル/タイプの安全性が増し、リファクタリングが容易になります。

+0

リンクを含む回答を投稿することはあまり役に立ちません。ライブラリが何をしているのかを簡単に説明できますか? – svick

+0

これが起こることを知っていた:Sそれは今より少しはっきりしていると思う。 – rodion

関連する問題