環境:JSF 2.1.7 SEAM 2.3.0 JBOSS 5.1.2
私のアプリケーションには、ローカライズする必要のある文字列があります
「WorldSiteのプライバシーポリシーとCookieに関する通知に同意します」
イタリック体のプライバシーポリシーとCookie通知が他のページへのハイパーリンクである場合。
もともと私たちのフェイスレットは次のように設定されていました:
<h:outputText value="#{messages['iAgreeTo']}" />
<h:outputLink target="_blank" value="#{bean.privacyPolicy}">#{messages['privacyPolicy']}</h:outputLink>
<h:outputText value="#{messages['and']}"/>
<h:outputLink target="_blank" value="/jsf/Notice.xhtml">
<h:outputText value="#{messages['cookieNotice']}"/>
<f:param name="content" value="Cookie-Notice"/>
<f:param name="application" value="#{bean.application}"/>
</h:outputLink>
注:/jsf/Notice.xhtmlを取得して次のように書き換えるURL書き換えがあります。
rewrite pattern: /#{application}/Notice/#{content}
result:http://contextRoot/contextPath/myApp/Notice/Cookie-Notice
これにより、個々のキーの断片的な翻訳が可能になりました
iAgreeTo=I agree to WorldSite's 
privacyPolicy=Privacy Policy
and= and 
cookieNotice=Cookie Notice
ただし、これには一部の言語(「iAgreeTo」および「and」キー)の回避策が必要でした。
iAgreeTo=J'accepte la 
privacyPolicy=Politique de la vie privée
and= de WorldSite et les 
cookieNotice=Note D'information sur les Cookies
理想的には、リンクをキー内で移動できるようにしたいと思います。このようなもの:
iAgreePhrase=I agree to WorldSite's #{messages['privacyPolicyLink']} and the #{messages['cookieNoticeLink']}
privacyPolicy=Privacy Policy
cookieNotice=Cookie Notice
//The following non-translatable keys held in a separate file
privacyPolicyLink=<h:outputLink target="_blank" value="#{bean.privacyPolicy}">#{messages['privacyPolicy']}</h:outputLink>
cookieNoticeLink=<h:outputLink target="_blank" id="cookieNoticeLink" value="/jsf/Notice.xhtml">\
#{messages['cookieNotice']}\
<f:param name="content" value="Cookie-Notice"/>\
<f:param name="application" value="#{bean.application}"/>\
</h:outputLink>
ただし、ファセットはJSFタグ(h:outputLink)をHTMLタグに展開するのではなく、文字列として返します。タグを使用することはできます<a>
が、プロパティファイルに書き換えロジックを配置しているため、保守が困難です。
iAgreePhrase=I agree to WorldSite's #{messages['privacyPolicyLink']} and the #{messages['cookieNoticeLink']}
privacyPolicy=Privacy Policy
cookieNotice=Cookie Notice
//The following non-translatable keys held in a separate file
privacyPolicyLink=<a target="_blank" href="#{bean.privacyPolicy}">#{messages['privacyPolicy']}</a>
cookieNoticeLink=<a target="_blank" href="#{contextPath}/#{bean.application}/Notice/Terms-and-Conditions">\
#{messages['cookieNotice']}</a>
リソースバンドルに書き換えロジックを配置せずに、目的の効果を達成する方法はありますか?私が持っているいくつかの考えは、アプリケーションコンテナにファセットレットを2回処理/並べ替えることを強制しているため、最初にリソースバンドルを挿入してから、JSFタグを展開します。
または、Beanで書き換えられたURLを作成し、それをリソースバンドルから呼び出すことができる場合がありますか?