2

次のような単純なコードがあるとします。

public class ExternalizeStringDemo {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

ここで、おそらく国際化/ローカリゼーションなどを容易にするために、挨拶を外部化したいと思います。Eclipse を使用して、String Externalization ウィザード (Source/Externalize Strings) を使用して、次のように構成できます。

代替テキスト

ウィザードを続行すると、次の変更が提案されます。

  • ファイルを作成Personal Toys/src/Messages.java
  • ファイルを作成Personal Toys/src/messages.properties
  • 編集ExternalizeStringDemo.java
    • "Hello World"になるMessages.getString("DEMO_GREETING")

私の質問は簡単です。代わりに、キーをフィールド名として使用するためにアクセスを外部化するように Eclipse に依頼できますか? つまり、アクセスをegにしたいのですMessages.DEMO_GREETING

注:[Substitution pattern]が simple${key}の場合、生成されるコードはMessages."DEMO_GREETING"であり、有効な Java コードではありません。


これが不可能な場合、次善の策は何ですか? (私はEclipseの正規表現の検索/置換を考えていますか?)。

4

1 に答える 1

5

Eclipse には、まさにこれを行う新しい文字列外部化メカニズムがあります。Java の代わりに独自の新しいメッセージ バンドルを使用します。org.eclipse.osgi….jarこれを使用するには、プロジェクトのビルド パスにを含める必要があります。

help.eclipse.org- Java 開発ユーザー ガイド > リファレンス > ウィザードとダイアログ > 文字列の外部化ウィザード

  • Eclipse の文字列外部化メカニズムを使用する
    • オフにすると、標準の外部化メカニズムが使用されます。それ以外の場合は、新しい Eclipse 文字列外部化メカニズムが使用されます。
    • 注: プロジェクトのビルド パスに含まれる場合にのみ表示されます。org.eclipse.osgi.util.NLS

前後は機能ドキュメントに示されています:

古いコード:

public class MyClass {
   public void myMethod() {
      String message;
      ...
      // no args
      message = Messages.getString("key.one"); //$NON-NLS-1$
      ...
      // bind one arg
      message = MessageFormat.format(
          Messages.getString("key.two"),
          new Object[] {"example usage"}
        ); //$NON-NLS-1$ //$NON-NLS-2$
      ...
   }
}

新しいコード:

public class MyClass {
   public void myMethod() {
      String message;
      ...
      // no args
      message = Messages.key_one;
      ...
      // bind one arg
      message = NLS.bind(Messages.key_two, "example usage"); //$NON-NLS-1$
      ...
   }
}

スクリーンショット

セットアップ:

代替テキスト

次に、提案された変更:

代替テキスト

関連リンク

于 2010-10-08T02:38:10.093 に答える