gpt4 book ai didi

Liferay - 在 javascript 中获取本地化名称

转载 作者:行者123 更新时间:2023-12-01 05:33:42 25 4
gpt4 key购买 nike

考虑以下代码

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);
}
}
);
}

从上面 Liferay 的 JSON 服务 API 可以看出获取所有布局。我特别需要在选择框中填充布局名称。我知道名称存储为 xml 字符串以支持不同的语言环境。我想知道是否有 javascript api 使用这个 xml 字符串和语言 ID 来获取布局的名称。有一个 java api 用于执行与下面相同的操作。如果有的话,我需要等效的 javascript API。
layout.getName(locale)

或者
LocalizationUtil.getLocalization(String xml, String languageId)

最佳答案

我相信 Liferay 的 JavaScript 库上没有这样的实用程序。

大多数时候人们需要在 Liferay 中进行,他们只是在服务器端解析内容并将解析后的内容发送到客户端。通常,客户端只需要默认语言环境中的值;如果需要更多,开发人员会想办法用 HTML 本身编写它。见例如the input-localized tag开发人员直接在输出中编写代码以创建 JS 对象。

这是有道理的:解析 XML 会占用大量资源,因此人们宁愿在客户端 JavaScript 上避免它。甚至可能在 Liferay 中有一个实用程序可以做到这一点,但我建议采用另一种方法:只需询问您想在 JavaScript 中使用什么并在 HTML 中编写它。例如,而不是编写以下 JavaScript 代码

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

在服务器端决定显示哪些布局并编写以下 JSP 代码:
Map<Locale, String> names = layout.getNameMap();

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

不太清楚,我同意,但相当有效。

关于Liferay - 在 javascript 中获取本地化名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10060280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com