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);
- 项1:标签
- 将该列表添加到应用的导航栏区域(通常是全局页0的导航栏)
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
相关产品推荐
相关产品推荐

