Eclipse/プラグイン開発のTIPS集/文字列を外部化する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**Eclipseを使って文字列の外部化をする。 [#f5e5cf63]
Eclipseは、ハードコーディングされた文字列を外部ファイル(*...
Eclipseで文字列を外部化する方法は2通りあります。
:通常の外部化の方法|通常の外部化の方法とはEclipseのフレー...
:Eclipseのストリング外部化機構を使用する方法|Eclipseフレ...
今回はEclipseプラグイン開発なので、後者の方法でやってみま...
package nu.mine.kino.plugin.messagesamples;
public class Samples1 {
public static final String hoge1 = "ほげ1";
public static final String hoge2 = "ほげ2";
}
package nu.mine.kino.plugin.messagesamples;
public class Samples2 {
public static final String fuga1 = "ふが1";
public static final String fuga2 = "ふが2";
}
という二つのファイルをプラグイン内に作成しておきました。
***やってみる [#c58dcf23]
外部化のやり方は以下の通り:
プロジェクトを選択して、
ソース >> 外部化するストリングの検索
とすると、外部化できるストリングがあるソースコードの一覧...
#ref(pic01.png)
まずはSamples1.javaを選択し、外部化をクリックすると、以下...
#ref(pic02.png)
今回は「Eclipseのストリング外部化機構」を使用するので、「...
また、その他の項目は以下の通りとしました。
:生成キーの共通接頭部の入力|外部化する際のキー値に共通で...
:値と、キー|外部化したい文字列と、置換するキー値を指定し...
|LEFT:ほげ1|LEFT:Sample1_HOGE1|
|LEFT:ほげ2|LEFT:Sample1_HOGE2|
としました。また横にある各ボタンの意味は以下の通り。
|チェック|外部化|外部化する|
|×|無視|以後無視するよう、//$NON-NLS-1$ をつける|
|×'|内部化|//$NON-NLS-1$ をはずすもしくはなにもしない|
この//$NON-NLS-1$は後述します。
結局のところ以下のような状態になりました。
#ref(pic03.png)
あとは次へ次へで完成です。生成、変更されたソースコードは...
・Samples1クラス
package nu.mine.kino.plugin.messagesamples;
public class Samples1 {
public static final String hoge1 = Messages.Sample1_H...
public static final String hoge2 = Messages.Sample1_H...
}
・messages.properties
Sample1_HOGE1=ほげ1 <-実際はascii文字
Sample1_HOGE2=ほげ2 <-実際はascii文字
・Messagesクラス
package nu.mine.kino.plugin.messagesamples;
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String BUNDLE_NAME =
"nu.mine.kino.plugin.messagesamples.messages"; //$...
private Messages() {
}
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.cla...
}
public static String Sample1_HOGE1;
public static String Sample1_HOGE2;
}
以上で外部化が完了しました。以後、"ほげ1" という文字列を...
***無視とかをやってみる [#ud31eb51]
次に、Samples2クラスをやってみます。先のダイアログでSampl...
・Samples2クラス
package nu.mine.kino.plugin.messagesamples;
public class Samples2 {
public static final String fuga1 = Messages.Samples2...
public static final String fuga2 = "ふが2"; //$NON-...
}
・messages.properties
Sample1_HOGE1=ほげ1
Sample1_HOGE2=ほげ2
Samples2_FUGA1=ふが1
・Messagesクラス
package nu.mine.kino.plugin.messagesamples;
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String BUNDLE_NAME =
"nu.mine.kino.plugin.messagesamples.messages"; //$...
private Messages() {
}
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.cla...
}
public static String Sample1_HOGE1;
public static String Sample1_HOGE2;
public static String Samples2_FUGA1;
}
このように「無視」を選択した文字列については、今後このス...
#ref(pic04.png)
以上で完了です。これは国際化とかするときにむちゃくちゃ便...
***プレースホルダをつかう [#g0732d55]
外部化文字列にはプレースホルダを使用することができます。P...
public void exe() {
String foo = "こんにちは {0}さんと {1} さん";
System.out.println(foo);
}
この文字列を外部化します。messages.propertiesには
MessagesamplesPlugin_HELLO=こんにちは {0}さんと {1} さん
が追加されました。上のメソッドはfooが外部化されましたが、...
public void exe() {
String foo = Messages.MessagesamplesPlugin_HELLO;
System.out.println(NLS.bind(foo, new String[] { "AAA",...
}
テストクラスを作って、このメソッドを呼び出してみます。実...
こんにちは AAAさんと BBB さん
たしかに{0},{1}が置換されました。
って書いてて思ったんですが、これ別に外部化の話と関係なか...
**ルールを考えてみる。 [#j71478da]
さてキー値はルールを考えておいた方が良さそうです。つって...
-messages.propertiesはパッケージ毎に作成する
-Messages.javaはパッケージ内で共有化されるから、キー値は...
くらいですかね。Eclipseのソースをちょこっと見てみましたが...
でも[[プラグインの国際化>Eclipse/プラグイン開発のTIPS集/...
----
この記事は
#vote(おもしろかった[50],そうでもない[2])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**Eclipseを使って文字列の外部化をする。 [#f5e5cf63]
Eclipseは、ハードコーディングされた文字列を外部ファイル(*...
Eclipseで文字列を外部化する方法は2通りあります。
:通常の外部化の方法|通常の外部化の方法とはEclipseのフレー...
:Eclipseのストリング外部化機構を使用する方法|Eclipseフレ...
今回はEclipseプラグイン開発なので、後者の方法でやってみま...
package nu.mine.kino.plugin.messagesamples;
public class Samples1 {
public static final String hoge1 = "ほげ1";
public static final String hoge2 = "ほげ2";
}
package nu.mine.kino.plugin.messagesamples;
public class Samples2 {
public static final String fuga1 = "ふが1";
public static final String fuga2 = "ふが2";
}
という二つのファイルをプラグイン内に作成しておきました。
***やってみる [#c58dcf23]
外部化のやり方は以下の通り:
プロジェクトを選択して、
ソース >> 外部化するストリングの検索
とすると、外部化できるストリングがあるソースコードの一覧...
#ref(pic01.png)
まずはSamples1.javaを選択し、外部化をクリックすると、以下...
#ref(pic02.png)
今回は「Eclipseのストリング外部化機構」を使用するので、「...
また、その他の項目は以下の通りとしました。
:生成キーの共通接頭部の入力|外部化する際のキー値に共通で...
:値と、キー|外部化したい文字列と、置換するキー値を指定し...
|LEFT:ほげ1|LEFT:Sample1_HOGE1|
|LEFT:ほげ2|LEFT:Sample1_HOGE2|
としました。また横にある各ボタンの意味は以下の通り。
|チェック|外部化|外部化する|
|×|無視|以後無視するよう、//$NON-NLS-1$ をつける|
|×'|内部化|//$NON-NLS-1$ をはずすもしくはなにもしない|
この//$NON-NLS-1$は後述します。
結局のところ以下のような状態になりました。
#ref(pic03.png)
あとは次へ次へで完成です。生成、変更されたソースコードは...
・Samples1クラス
package nu.mine.kino.plugin.messagesamples;
public class Samples1 {
public static final String hoge1 = Messages.Sample1_H...
public static final String hoge2 = Messages.Sample1_H...
}
・messages.properties
Sample1_HOGE1=ほげ1 <-実際はascii文字
Sample1_HOGE2=ほげ2 <-実際はascii文字
・Messagesクラス
package nu.mine.kino.plugin.messagesamples;
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String BUNDLE_NAME =
"nu.mine.kino.plugin.messagesamples.messages"; //$...
private Messages() {
}
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.cla...
}
public static String Sample1_HOGE1;
public static String Sample1_HOGE2;
}
以上で外部化が完了しました。以後、"ほげ1" という文字列を...
***無視とかをやってみる [#ud31eb51]
次に、Samples2クラスをやってみます。先のダイアログでSampl...
・Samples2クラス
package nu.mine.kino.plugin.messagesamples;
public class Samples2 {
public static final String fuga1 = Messages.Samples2...
public static final String fuga2 = "ふが2"; //$NON-...
}
・messages.properties
Sample1_HOGE1=ほげ1
Sample1_HOGE2=ほげ2
Samples2_FUGA1=ふが1
・Messagesクラス
package nu.mine.kino.plugin.messagesamples;
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String BUNDLE_NAME =
"nu.mine.kino.plugin.messagesamples.messages"; //$...
private Messages() {
}
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.cla...
}
public static String Sample1_HOGE1;
public static String Sample1_HOGE2;
public static String Samples2_FUGA1;
}
このように「無視」を選択した文字列については、今後このス...
#ref(pic04.png)
以上で完了です。これは国際化とかするときにむちゃくちゃ便...
***プレースホルダをつかう [#g0732d55]
外部化文字列にはプレースホルダを使用することができます。P...
public void exe() {
String foo = "こんにちは {0}さんと {1} さん";
System.out.println(foo);
}
この文字列を外部化します。messages.propertiesには
MessagesamplesPlugin_HELLO=こんにちは {0}さんと {1} さん
が追加されました。上のメソッドはfooが外部化されましたが、...
public void exe() {
String foo = Messages.MessagesamplesPlugin_HELLO;
System.out.println(NLS.bind(foo, new String[] { "AAA",...
}
テストクラスを作って、このメソッドを呼び出してみます。実...
こんにちは AAAさんと BBB さん
たしかに{0},{1}が置換されました。
って書いてて思ったんですが、これ別に外部化の話と関係なか...
**ルールを考えてみる。 [#j71478da]
さてキー値はルールを考えておいた方が良さそうです。つって...
-messages.propertiesはパッケージ毎に作成する
-Messages.javaはパッケージ内で共有化されるから、キー値は...
くらいですかね。Eclipseのソースをちょこっと見てみましたが...
でも[[プラグインの国際化>Eclipse/プラグイン開発のTIPS集/...
----
この記事は
#vote(おもしろかった[50],そうでもない[2])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: