0

grails アプリを多言語対応にしようとしています。翻訳したいテキストごとに、次のことを行う必要があります。

<%=t9n.tr(s: "Delete Filter")%>

対照的に、以下は機能しますが ("Delete Filter" を文字列として出力します)、i18n-gettext は翻訳する文字列を見つけられません。

${t9n.tr(s: "Delete Filter")}

だから私は次のようなものを試していました

<g:link controller="user" title="<%=t9n.tr(s: 'Delete Filter')%>">foo</g:link>

以下は機能しますが、2 行のコードが必要なため見栄えが悪くなります。

<% the_title = t9n.tr(s: "Delete Filter")%>
<g:link controller="user" title="${the_title}">foo</g:link>

何か案は?助けていただければ幸いです

4

2 に答える 2

0

Grails には、独自の i18n メカニズムが含まれています。ローカライズ ファイルは /grails-app/i18n/ の下にあります。

GSP ファイルでは、次のタグを使用できます。

    <g:message code="my.key" default="My key" />

コードでは、メソッドを使用できます。

    message( code:'my.key' )

そして、GSP のいくつかの複雑な状況では、これを組み合わせることができます。

    <g:link controller="user" title="${ message( code:'delete.filter' ) }">foo</g:link>
于 2012-05-31T14:40:31.227 に答える
0

問題は、gettext が gsp ファイルを解析できないことです。プラグインは、翻訳が必要な文字列を認識するために PHP パーサーを使用するように gettext を構成します。<% %>タグ内で失敗するのはそのため です。

悲しいことに、これに対する簡単な解決策はありません。私は gettext ですべてのパーサーを使用しましたが、どれも PHP パーサーよりも優れた機能を持っていません。

編集:現在、迅速な(汚い)修正に取り組んでいます。

于 2012-05-30T21:41:06.143 に答える