新着記事

2004年08月16日

WebObjectsライブラリ Project Wonder サンプルズ#3 ERXLocalizer

WebObjectsのライブラリ Project Wonder

今回のサンプルは、er.extensions.ERXLocalizerです。


このクラスは、クライアントのロケールを特定し、そのロケール用のメッセージ、プロパティを取得、利用するためのクラスです。


適切に設定を行えば、ERXSession.java のlocalizer変数にクライアントのロケール用の情報を格納したERXLocalizerのインスタンスが格納されるので、
(Project Wonder用の設定をするば、ERXSession.java はSession.javaの親クラスになっているはずです。)

session.localizer.hoge.hoge

といった具合に、KeyValueCodingで指定のプロパティに容易にアクセスすることができるようになります。



このクラスを使用するには、プロジェクトのPropertiesファイルにローカライズ用の設定を加える必要があります。


以下はPropertiesファイルの設定サンプル(一部)です。

#er.extensions.ERXLocalizer.pluralFormClassName =
er.extensions.ERXLocalizer (実際には1行で書く)
#er.extensions.ERXLocalizer.nonPluralFormClassName =
er.extensions.ERXNonPluralFormLocalizer (実際には1行で書く)
er.extensions.ERXLocalizer.defaultLanguage = Japanese
er.extensions.ERXLocalizer.availableLanguages =
(English,German,Japanese) (実際には1行で書く)
er.extensions.ERXLocalizer.frameworkSearchPath =
(app,ERExtensions,HogeBusinessLogic) (実際には1行で書く)
er.extensions.ERXLocalizer.fileNamesToWatch=
("ERXLocalizerLocalize.string",
"ERXLocalizerLocalize2.string") (実際には1行で書く)


それでは、サンプルの設定を順番に見ていきます。


サンプル中ではコメントアウトしてある以下の指定は、カスタムなクラスでERXLocalizerを置き換えたい時に使用します。
キーの値としては、クラス名を指定します。
er.extensions.ERXLocaler.pluralFormClassName
er.extensions.ERXLocalizer.nonPluralFormClassName



er.extensions.ERXLocalizer.defaultLanguage
er.extensions.ERXLocalizer.availableLanguages
この2つの指定は、キーの名前だけで、なんとなく意味が分かるでしょう。
ERXLocalizerのデフォルトのロケールの言語と、使用可能とする言語の種類を、このプロパティのキーで指定します。
er.extensions.ERXLocalizer.availableLanguages はリスト型の値で指定します。




注意するべきは、残りの2つの指定です。
これらを適切に指定しないと、ERXLocalizerはプロパティファイルを読み込んでくれません。
er.extensions.ERXLocalizer.frameworkSearchPath
er.extensions.ERXLocalizer.fileNamesToWatch



er.extensions.ERXLocalizer.frameworkSearchPath
プロパティファイルの入っているフレームワーク名をリスト型の値で指定します。
実行アプリのプロジェクトにプロパティファイルが入れられている時は、サンプルのように"app"を指定します。
フレームワークの指定の順番は気にしなくても大丈夫です。
Project Wonderを使用するのでERExtensionsフレームワークは必ず入れておきましょう。



er.extensions.ERXLocalizer.fileNamesToWatch
読み込むプロパティファイルの名前をリスト型で指定します。
このプロパティで指定しないプロパティファイルは、ERXLocalizerによって読み込みません。




説明は終わりです。
これで、ERXLocalizerは使えるものと思います。



最後に、簡単なERXLocalizerのサンプルコード(一部)をお見せします。

File: ERXLocalizerSample.java

import com.webobjects.foundation.*;
import com.webobjects.appserver.*;
import com.webobjects.eocontrol.*;
import com.webobjects.eoaccess.*;

public class ERXLocalizerSample extends WOComponent {
public NSMutableDictionary _wotemp = new NSMutableDictionary();
public ERXLocalizerSample(WOContext context) {
super(context);
}
}



File: ERXLocalizerSample.wo/ERXLocalizerSample.html

<HTML>
<BODY BGCOLOR="#FFFFFF">
String: <WEBOBJECT NAME=String1></WEBOBJECT> <BR>

<WEBOBJECT NAME=Repetition1>
Repetition: <WEBOBJECT NAME=String2></WEBOBJECT> <BR>
</WEBOBJECT>
<BR>

Dictionary: <BR>
[title] <WEBOBJECT NAME=String3></WEBOBJECT> <BR>
[value] <WEBOBJECT NAME=String4></WEBOBJECT> <BR>
[value2] <WEBOBJECT NAME=String5></WEBOBJECT> <BR>
</BODY>
</HTML>


File: ERXLocalizerSample.wo/ERXLocalizerSample.wod

Repetition1: WORepetition {
item = wotemp.item;
list = session.localizer.listkey;
}
String1: WOString {
value = session.localizer.strkey;
}
String2: WOString {
value = wotemp.item;
}
String3: WOString {
value = session.localizer.dictkey.title;
}
String4: WOString {
value = session.localizer.dictkey.value;
}
String5: WOString {
value = session.localizer.dictkey.value2;
}



File: English.lproj/ERXLocalizerLocalize.string

{
strkey = "string type of property";
}


File: Japanese.lproj/ERXLocalizerLocalize.string

{
strkey = "文字列型プロパティ";
}


File: English.lproj/ERXLocalizerLocalize2.string

{
dictkey = {
title = "dictionary type of property: title";
value = "dictionary type of property: value";
value2 = "dictionary type of property: value2";
};
listkey = (
"list type of property: 1",
"list type of property: 2",
"list type of property: 3",
);
}


File: Japanese.lproj/ERXLocalizerLocalize2.string

{
dictkey = {
title = "辞書型プロパティ: titleキー";
value = "辞書型プロパティ: valueキー";
value2 = "辞書型プロパティ: value2キー";
};
listkey = (
"リスト型プロパティ: 1番目",
"リスト型プロパティ: 2番目",
"リスト型プロパティ: 3番目",
);
}






本日は以上です。

今回作成したサンプルコード
ERXLocalizer.tar.bz2

posted by 小見 拓 at 02:20| Comment(0) | TrackBack(0) | Project Wonder | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
記事検索
 
カテゴリ
最近のコメント
QKCのインストール [3-4/18]
 ⇒ kova (05/23)
calendar.vimには日記をつける機能があったらしい。
 ⇒ とまと (03/07)
最近よく見るようになったvimスクリプトのコメントの書き方
 ⇒ 小見 拓 (02/13)
 ⇒ kana (02/11)
vimエディタ ヘルプのgrep
 ⇒ みかん (07/15)
指定したカラム位置にテキストを流し込む (vimエディタ)
 ⇒ こみ (03/20)
 ⇒ とおりすがり (03/19)
 ⇒ こみ (03/18)
 ⇒ takayama (03/18)
tempfile -- Generate temporary files (Mac OSX)
 ⇒ take3 (01/20)
 ⇒ こみ (01/19)
 ⇒ take3 (01/18)
 ⇒ こみ (01/17)
 ⇒ take3 (01/14)
WebObjectsのオープンソースプロジェクト Project Wonderってなんじゃろな。#2
 ⇒ (06/30)
 ⇒ Tetsuya Kuramochi (06/29)
 ⇒ Tetsuya Kuramochi (06/29)
WebObjectsのオープンソースプロジェクト Project Wonderってなんじゃろな。#1
 ⇒ (06/03)
 ⇒ Tetsuya Kuramochi (06/02)
最近のトラックバック
vimエディタで「文字コード、改行コードを変更して保存する。」
 ⇒ window.closed (04/25)
 ⇒ himesuke’s STEP-log (03/18)
 ⇒ PukiWiki/TrackBack 0.2 (05/07)
vimエディタの折りたたみ機能の話。その2 (foldmethod=syntax)
 ⇒ 俺の基地 (PukiWiki/TrackBack 0.3) (04/20)
ログファイルを監視して、特定のキーワードが見つかったら、何らかのコマンドを実行する。
 ⇒ Apple Fan (10/16)
ファイル保存ダイアログの初期ディレクトリについての話 (vimエディタ話)
 ⇒ ナレッジエース (07/23)
:e <C-x> (編集中のファイルと同じディレクトリにあるファイルを開く。)
 ⇒ ボクノス (02/07)
Opening many files using wildcards.
 ⇒ PukiWiki Plus! (PukiWiki/TrackBack 0.4) (10/28)
 ⇒ 川o・-・)<2nd life (07/18)
vimエディタで印刷自由自在 その8 -エディタからの直接の印刷の代わりに、2html.vimスクリプトを使用する-
 ⇒ Knoppix Temporary Directory (PukiWiki/TrackBack 0.3) (02/19)
検索でマッチした対象に対して、置換を行う。(vimエディタ話)
 ⇒ 123net :: 開発日記 (12/31)
ごみ箱にファイルを叩き込むスクリプト。(vimエディタ)
 ⇒ "OSX" .app's :Macのアプリを便利、感動、面白をベースにほぼ日刊で紹介。 (11/26)
パーセント、%、percent でのカーソル移動 (vimエディタ話)
 ⇒ プログラミング言語 (10/11)
過去ログ
Profile
小見 拓
mail@nanasi.jp
小見と申します。
神奈川でデベロッパーやってます。
名無しのVIM使い

RSS 1.0


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。