2012-04-08 7 views
4

に名前をローカライズにあたって、あなたがすべてのレイアウトを取得するためにLiferayのJSONサービスAPI上から見ることができるように、次のコードのLiferayは - javascriptの

function populateLayout(scopeGroupId){ 
    Liferay.Service.Portal.Layout.getLayouts(
     { 
      groupId: scopeGroupId, 
      privateLayout: false 
     }, 
     function(layouts){ 
      for(var i=0;i<layouts.length;i++){ 
       var layout = layouts[i]; 
       alert(layout.name); 
      } 
     } 
    ); 
} 

を考えてみましょう。私は特に選択ボックスに配置するレイアウト名が必要です。私は、名前が異なるロケールをサポートするためのXML文字列として格納されていることを知っています。このXML文字列と言語IDを使用してレイアウトの名前を取得するjavascript APIがあるかどうか疑問に思っていました。以下のようにするためのJava APIがあります。私は同等のjavascript APIが必要な場合はそれが必要です。

layout.getName(locale) 

または

LocalizationUtil.getLocalization(String xml, String languageId) 
+0

答えを見つけましたか? –

答えて

0

私はLiferayのJavaScriptのLIBSには、このようなユーティリティはありません信じています。

ほとんどの場合、人々はLiferayでそれを行う必要があり、サーバ側のコンテンツを解析し、解析されたコンテンツをクライアントに送信します。しばしば、クライアントはデフォルトロケールの値だけを必要とします。それ以上のものが必要な場合、開発者はそれをHTML自体に書き込む方法を見つけます。例えば、 the input-localized tagここで、開発者は出力に直接JSオブジェクトを作成するコードを記述します。

これは理にかなっています。つまり、XMLを解析するのはリソースがかかりすぎるため、クライアントサイドのJavaScriptでは回避することになります。 Liferayでそれを行うユーティリティがあるかもしれませんが、別のアプローチを提案しています。JavaScriptで何を使いたいのかを尋ね、HTMLで書きます。 、

Map<Locale, String> names = layout.getNameMap(); 

<script> 
    <% for (String name : names.values()) { %> 
    alert('<%= name %>'); 
    <% } %> 
</script> 

あまり明確ではありません:たとえば、代わりに次ののJavaScriptコードを書くの

var names = Liferay.Util.Localization.nonExistentMethodToGetLocaleMap(layout.name); 
for (var locale : names) { 
    alert(names[locale]); 
} 

は、以下のJSPコードを表示し、書き込みにレイアウトするサーバー側でを決めます私は同意しますが、むしろ効率的です。

関連する問題