首页 > 解决方案 > 无法根据我的 systemLocal 变量呈现 outputText

问题描述

我有一个页面模板,在 webcenter 门户中带有带有 2 个输出文本的页脚,这些文本将根据语言任务流中选择的语言进行呈现。

我有使用 jdeveloper 创建的自定义模板,并放置了以下输出标签:

 <af:outputFormatted id ="copyright" rendered="#    {facesContext.externalContext.requestLocale} eq 'en'" value="the english text"   />


 <af:outputFormatted id ="copyright" rendered="#{facesContext.externalContext.requestLocale} eq 'ar'" value="the arabic text"   />

而这个 El 表达式总是返回 false 那么如何根据所选语言呈现这些组件呢?

标签: oracle-adfwebcenter

解决方案


问题是您过早关闭 el 表达式 ("requestLocale } ") 。要修复它,请替换:

<af:outputFormatted id="copyright" rendered="#{facesContext.externalContext.requestLocale} eq 'en'" value="the english text"   />

经过

<af:outputFormatted id="copyright" rendered="#{facesContext.externalContext.requestLocale eq 'en'}" value="the english text"   />

或者,作为一种替代解决方案,您只能使用一个 outputFormatted 的所有值,如下所示:

<af:outputFormatted id="copyright"  value="#{facesContext.externalContext.requestLocale eq 'en' ? 'the english text':(facesContext.externalContext.requestLocale eq 'ar' ? 'the arabic text' : 'Default text')}"   />

但是,如果您正在 ADF 中寻找翻译功能,您应该按照此处文档中的说明查找翻译包文件:https ://docs.oracle.com/cd/E15051_01/web.1111/b31973/af_global.htm# ADFUI425

国际化是设计和开发易于适应特定当地语言和文化的产品的过程。本地化是通过翻译文本和添加特定于区域设置的组件来使产品适应特定的本地语言或文化的过程。一个成功本地化的应用程序似乎是在当地文化中开发的。JDeveloper 支持使用抽象类 java.util.ResourceBundle 轻松本地化 ADF Faces 组件,以提供特定于语言环境的资源。

当您的应用程序将被多个国家/地区的用户查看时,您可以配置您的 JSF 页面或应用程序以使用不同的语言环境,以便它为用户浏览器的语言设置显示正确的语言。例如,如果您知道您的页面将在意大利查看,您可以本地化您的页面,以便当用户的浏览器设置为使用意大利语时,浏览器页面中的文本字符串将以意大利语显示。

ADF Faces 组件可能包含作为组件一部分的文本,例如 af:table 组件使用资源字符串 af_table.LABEL_FETCHING 作为在初始加载数据期间表获取数据时显示在浏览器中的消息文本或滚动表格时。JDeveloper 将这些文本资源自动翻译成 28 种语言。这些文本资源在资源包中被引用。如果您将浏览器设置为使用意大利语言,则组件中包含的任何文本都将自动以意大利语显示。有关皮肤和资源包的更多信息,请参阅第 20 章,“使用样式和皮肤自定义外观”。

对于添加到组件的任何文本,例如,如果您通过设置 text 属性定义 af:commandButton 组件的标签,则必须提供包含实际文本的资源包,为每个语言环境创建资源包的版本,并在应用程序的 faces-config.xml 文件中添加一个元素来定义默认和支持的语言环境。您还必须向应用程序的 faces-config.xml 文件添加一个元素,以使资源包可用于应用程序中的所有页面。配置并注册资源包后,表达式语言 (EL) 编辑器将显示包中的密钥,从而更容易在应用程序页面中引用包。

为了简化为添加到 ADF 组件的文本创建文本资源的过程,JDeveloper 支持可视化编辑器中任何可翻译字符串的自动资源包同步。当您直接在可视化编辑器或 Property Inspector 中编辑组件时,会在基础资源包中自动创建文本资源。


推荐阅读