You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Apex多语言应用配置主步骤(含en/ar示例,满足特定需求)

Oracle Apex 多语言配置实现步骤(以en/ar为例)

一、基础全球化配置

  • 进入应用 → 共享组件 → 全球化 → 编辑全球化属性
    • 设置主要语言为en,添加备用语言为ar,勾选「启用动态语言切换」
    • 暂时将「会话语言」设为「从浏览器语言或应用程序设置派生」,后续通过代码覆盖逻辑
  • 维护翻译文本:
    • 在共享组件 → 文本消息中,为每个需要翻译的消息添加en和ar版本
    • 或导出应用文本为XLIFF文件,完成翻译后重新导入

二、登录页语言处理(认证前)

1. 自动检测浏览器语言

在登录页(默认页1)添加页面加载前PL/SQL流程:

DECLARE
    l_browser_lang VARCHAR2(10);
BEGIN
    -- 获取浏览器Accept-Language头信息
    l_browser_lang := OWA_UTIL.GET_CGI_ENV('HTTP_ACCEPT_LANGUAGE');
    -- 提取主语言代码(如从"ar-EG,en-US;q=0.9"中截取"ar")
    l_browser_lang := CASE WHEN INSTR(l_browser_lang, ',') > 0 
                           THEN SUBSTR(l_browser_lang, 1, INSTR(l_browser_lang, ',')-1)
                           ELSE l_browser_lang END;
    -- 过滤仅支持的语言,默认回退到en
    l_browser_lang := CASE WHEN l_browser_lang IN ('en', 'ar') THEN l_browser_lang ELSE 'en' END;
    
    -- 将语言赋值给页面项(创建P1_SELECTED_LANG作为隐藏/显示项)
    :P1_SELECTED_LANG := l_browser_lang;
    -- 临时设置会话语言,让登录页渲染对应语言
    APEX_UTIL.SET_SESSION_LANGUAGE(l_browser_lang);
END;
  • 在登录页创建选择列表项P1_SELECTED_LANG,选项配置为:
    Display Value: English, Return Value: en
    Display Value: العربية, Return Value: ar
    
    默认值绑定为:P1_SELECTED_LANG(由上述流程自动赋值)

2. 登录时保留语言选择

在应用的认证方案中添加后认证PL/SQL流程:

-- 将登录时选择的语言设置为会话语言
APEX_UTIL.SET_SESSION_LANGUAGE(:P1_SELECTED_LANG);

三、导航栏语言切换(无会话重建)

1. 创建导航栏语言切换控件

  • 进入共享组件 → 列表 → 创建新列表,类型选择「导航栏」
  • 添加两个列表项:
    • 项1:标签English,目标类型选「URL」,URL填javascript:void(0);
    • 项2:标签العربية,目标类型选「URL」,URL填javascript:void(0);
  • 将该列表添加到应用的导航栏区域(通常是全局页0的导航栏)

2. 实现无重建会话的切换逻辑

为每个列表项添加动态动作:

  1. 触发条件:「点击」当前列表项
  2. 动作:「执行PL/SQL代码」,代码如下(以切换到ar为例,en同理替换):
BEGIN
    -- 设置会话语言,此API不会重建会话
    APEX_UTIL.SET_SESSION_LANGUAGE('ar');
    -- 刷新当前页面以加载新语言资源
    APEX_JAVASCRIPT.EXECUTE('window.location.reload();');
END;
  • 若使用选择列表控件,可将动态动作触发条件设为「值变化」,并通过页面项传递选中的语言值:

BEGIN
APEX_UTIL.SET_SESSION_LANGUAGE(:P0_SELECTED_LANG);
APEX_JAVASCRIPT.EXECUTE('window.location.reload();');
END;

注意将`P0_SELECTED_LANG`的「会话状态保护」设为「无」,确保值能正确传递

## 四、验证场景
- 未认证会话:设置浏览器默认语言为阿拉伯语,访问登录页,确认自动加载ar语言界面
- 登录页切换:手动选择语言后登录,验证会话语言与选择一致
- 导航栏切换:在任意页面切换语言,页面刷新后显示对应语言,且会话ID未变更(可通过`V('APP_SESSION')`查看)
- RTL布局适配:在全球化属性中,为`ar`设置「文本方向」为「从右到左」,确保页面布局自动调整

内容的提问来源于stack exchange,提问作者shady
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:16:17