トップ «前の日記(2006-04-21 (Fri)) 最新 次の日記(2006-04-24 (Mon))» 編集

ふたつの川うるおう日記


2006-04-23 (Sun)

_ [雑記] 頭痛

昨日はいっぱい寝ておきたら激しい頭痛でした。寝すぎて風邪引いた?夜中薬飲んで寝たら良くなった。

| Bookmark:

_ [Java][Seasar] Mayaaで国際化

テンプレート切り替え機能を使ってみました。

Mayaaでは、テンプレートのファイル名を "$" で区切ることでテンプレートを切り替えることができるそうです。

  • index.html
    • デフォルト
  • index$ja.html
    • 日本語用

Eclipseで表示した時に、.ja.html の方が .mayaa より先に .html の次に並ぶのでAapcheのコンテントネゴシエーションと一緒のフォーマットの方が判りやすくて嬉しいかもと思いました。

  • index.html
    • デフォルト
  • index.ja.html
    • 日本語用

あと、locale=ja といったパラメータが付いちゃうのをどうにか上手いこと隠せないものかいろいろやってみたものの敗北しました。。。

次のような小細工でリンク先が index.html であっても、 index$ja.html に自動的にリダイレクトするように m:beforeRender でしたものの、これだと処理が2回走っちゃうようであんま良くなさそうなので辞めました。

var sessionLocale = session.locale;
var paramLocale = param.locale;
if (sessionLocale != paramLocale) {
    redirect(request.contextPath + request.requestedPath + "?locale=" + sessionLocale);
}

多言語のテンプレートを後から追加することを考えると、HTMLテンプレートファイルの場所をweb.xmlなどwar内のファイルでwar外のパスに設定できる機能があると便利そう。

| Bookmark:

_ [Java][Seasar] Strutsで国際化

Strutsでの国際化は、セッションにあるorg.apache.struts.action.LOCALEキーのロケール設定を変えてあげれば良いそうです。Mayaaファイルでやる場合は次のような感じ。

var ses = session.getUnderlyingContext();
ses.setAttribute("org.apache.struts.action.LOCALE", Packages.java.util.Locale.JAPANESE);
| Bookmark:
本日のツッコミ(全2件) [ツッコミを入れる]
_ suga (2006-04-23 (Sun) 19:39)

>war外のパスに設定<br>実は既にあります。<br><br>META-INF/org.seasar.mayaa.source.PageSourceFactory<br>というファイルを次のような内容で作れば動作します。<br>valueには${propertyname}の形でシステムプロパティを指定できます。(antっぽく)<br><br><?xml version="1.0" encoding="iso-8859-1"?><br><!DOCTYPE factory<br> PUBLIC "-//The Seasar Foundation//DTD Mayaa Factory 1.0//EN"<br> "http://mayaa.seasar.org/dtd/mayaa-factory_1_0.dtd"><br><factory><br> <parameter name="absolutePath" value="/path/to/templates"/><br></factory>

_ jfut (2006-04-23 (Sun) 21:11)

ありがとうございます。期待通り動作しましたー。<br><br>無設定Strutsが起動時に@StrutsActionForwardに設定したファイルを探しに行くようなので、標準語用をWEB-INF/page以下に置いて、多言語用ファイルを別ディレクトリに配置して使いたいと思います。

[]

| Return to page top | Vicuna CMS - WordPress Theme - Vicuna Ninja Style for tDiary |