如何覆盖Oracle APEX语言组件以修复塞尔维亚语下日历星期显示异常
Oracle APEX 20.1 塞尔维亚语日历星期显示异常标准修复方案
该问题为APEX 20.1.0.00.13版本的已知小缺陷,由塞尔维亚语内置语言包缺失FullCalendar日历组件的星期文本配置导致,无需通过DOM强制赋值的方式修复,以下为官方推荐的规范实现方式:
方案1:单日历区域配置覆盖(最推荐,无性能损耗)
APEX日历组件底层基于FullCalendar v3实现,可直接在对应日历区域的「初始化时执行JavaScript代码」属性中注入本地化配置,在日历渲染前完成文本替换,不会出现DOM闪烁也无额外性能消耗:
function(options) { // 顺序为周日到周六,可根据塞尔维亚语的星期显示习惯调整顺序和文本 options.dayNamesShort = ['Нед', 'Пон', 'Уто', 'Сре', 'Чет', 'Пет', 'Суб']; // 如需覆盖长星期名称可补充以下配置 // options.dayNames = ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота']; return options; }
方案2:全局注册本地化(适合多页面多日历场景)
如果应用全局使用塞尔维亚语且存在多个日历组件,可在应用级的「全局JavaScript」配置项中提前注册FullCalendar的塞尔维亚语本地化规则,所有后续创建的日历会自动继承配置,无需逐个区域修改:
// 全局注册塞尔维亚语日历本地化配置 $.fullCalendar.lang('sr', { dayNamesShort: ['Нед', 'Пон', 'Уто', 'Сре', 'Чет', 'Пет', 'Суб'], dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'], // 如有月份名称等其他本地化缺失也可在此补充 monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун','Јул','Авг','Сеп','Окт','Нов','Дец'] });
配置完成后清空APEX服务器缓存和浏览器缓存即可生效。
方案3:优化后的jQuery应急方案(仅临时调试使用)
如果需要临时使用DOM修改的方式验证效果,可优化原代码绑定日历渲染事件,避免页面加载时元素未渲染导致的赋值失效和重复执行问题:
// 仅在日历渲染完成后执行一次赋值 $(document).on('fcRendered', '.fc', function() { $('.fc-fri').children().first().text('Пет'); // 其余星期项可按照相同逻辑补充 });
内容的提问来源于stack exchange,提问作者adict
相关产品推荐
相关产品推荐

