Liferay 应用程序显示模板显示错误的语言

Liferay Appilcation Display Template showing wrong language

目前我正在为 Asset Publisher 开发一个 ADT,它显示每个 Web 内容的简短版本。在 Web 内容结构中有一个名为 "content" 的字段,它只是一个简单的 HTML 字段。

<dynamic-element dataType="html" fieldNamespace="ddm" indexType="text" localizable="true" name="content" readOnly="true" repeatable="false" required="true" showLabel="true" type="ddm-text-html" width="25">
    <meta-data locale="de_DE">
        <entry name="label">
            <![CDATA[Content]]>
        </entry>
        <entry name="predefinedValue">
            <![CDATA[]]>
        </entry>
        <entry name="tip">
            <![CDATA[]]>
        </entry>
    </meta-data>
</dynamic-element>

创建 Web 内容时,创建者可以将翻译设置为英语(美国)。

有趣的是,如果他不添加翻译,ADT 将显示 Field 的德语版本 "content"(这是正确的方式)。添加翻译时,ADT显示的是英文(但应该显示德文,因为德文被设置为默认语言)。

ADT的相关部分是这样的:

<#assign aArticleXML = saxReaderUtil.read(aArticle.getContent()) >
<#assign content = aArticleXML.valueOf("//dynamic-element[@name='content']/dynamic-content/text()") />
...
<p>${content}</p>

有人知道这个问题吗?

感谢您的帮助。

经过一段时间我自己弄明白了。

您可以在 ADT 中的文章上调用两个函数。

    如果您的 Web 内容没有可用的翻译,
  • getContent() 会显示您的默认语言。如果您的 Web 内容有翻译,那么此功能将以翻译形式获取您的字段(在我的例子中:英语)
  • getContentByLocale(string locale) 通过 Liferay 中设置的语言环境获取字段。而这种方法正是我一直在寻找的解决方案

感谢所有尝试解决此问题的人。