我有一个页面模板,该页面模板在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 那么如何根据所选语言呈现这些组件?
答案 0 :(得分:0)
问题在于,您过早关闭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支持自动资源捆绑 可视化编辑器中任何可翻译字符串的同步。什么时候 您可以直接在可视编辑器或属性中编辑组件 检查器,文本资源是在基础中自动创建的 资源包。