【问题标题】:Fullcalendar locale not changing header bar in v5Fullcalendar 语言环境不更改 v5 中的标题栏
【发布时间】:2022-01-21 23:24:54
【问题描述】:

我在更改完整日历的 headerToolbar 的语言环境时遇到问题。

奇怪的是它适用于月份和日期名称,而不是标题。

代码如下:

let calendar = new FullCalendar.Calendar(calendarEl, {
    headerToolbar: {
        locale: getLanguage(),
        left: 'prev,next',
        center: 'title',
        right: 'timeGridWeek,dayGridMonth,listWeek',
    },
    initialView: 'timeGridWeek',
    weekNumbers: true,
    weekText: "",
    weekends: false,
    firstDay: 1,
    slotMinTime: "07:00:00",
    slotMaxTime: "18:00:00",
    eventTimeFormat: {
        hour: '2-digit',
        minute: '2-digit',
        hour12: false, 
    },
    locale: getLanguage(),
    eventDisplay: "block",
    eventTextColor: "#fff"
});

getLanguage() 返回浏览器语言,在我的情况下它应该(并且确实)返回 no-NB。

function getLanguage() {
    let result = window.localStorage[LANGUAGE];
    return result ? result : navigator.language || navigator.userLanguage || 'no';
}

为什么不改变headerToolbar的本地化?

【问题讨论】:

标签: javascript internationalization fullcalendar locale fullcalendar-5


【解决方案1】:

当您谈论标题工具栏的本地化时,我假设您是在专门讨论按钮中视图的名称,因为标题的日期部分显然已经本地化了。

在您的情况下为什么没有改变的答案仅仅是因为 fullCalendar 的语言环境文件不包含 nono-NB(挪威)的条目。因此没有文本 fullCalendar 可以用来替换视图和其他按钮的名称。

在撰写本文时,您可以在https://cdn.jsdelivr.net/npm/fullcalendar@5.10.1/locales-all.js 查看最新版本,并看到该区域代码没有条目。

不过,nb 有一个条目,我相信它是挪威博克马尔语。因此,如果合适,您可以使用它。

另一种解决方案是修改语言环境文件,为您希望在日历中支持的语言代码添加您自己的条目。 (如果你采用这种方法,你也可以将你的贡献提交给 fullCalendar 项目,看看他们是否会接受它到下一个版本默认提供的文件中。)

另一种替代解决方案是为每个视图创建custom view settings,您可以在其中定义自己的按钮文本,即使是内置视图。

(PS 在您的示例中日期仍然本地化的原因是因为这实际上是由浏览器的 JavaScript 引擎中内置的 JS Date 库完成的。FullCalendar 仅使用结果。它的区域设置(如果可用)可能会覆盖演示文稿的某些方面,否则它将只使用浏览器默认生成的任何内容。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多