You need to enable JavaScript to run this app. vue-i18n v8.24.2 挪威语(nb-NO)日期格式显示异常问题求助
优惠活动
大模型
产品
解决方案
定价
更多

vue-i18n v8.24.2 挪威语(nb-NO)日期格式显示异常问题求助

问题根因

你的i18n实例初始化时的locale取值逻辑存在问题:

// 错误的写法
locale: navigator.language.split('-')[0] || process.env.VUE_APP_I18N_LOCALE || defaultLocale,

navigator.language.split('-')[0]会将完整的地区语言码nb-NO截断为短码nb,但你在dateTimeFormats、messages中配置的语言key均为nb-NO,不存在nb对应的日期格式配置,vue-i18n找不到匹配的格式规则时就会使用默认的英文日期格式MM/dd/yyyy,和你预期的格式不符。

修复方案

方案1(推荐):调整locale取值逻辑,不截断地区编码

直接使用完整的navigator.language值作为locale判断依据,修改初始化代码为:

locale: navigator.language || process.env.VUE_APP_I18N_LOCALE || defaultLocale,

修改后如果浏览器语言为nb-NO会直接匹配你已有的配置,日期格式就能正常渲染为dd.MM.yyyy。

方案2:兼容短码场景

如果你确实需要兼容nb这类不带地区后缀的短码,可直接给nb补充一份和nb-NO完全一致的配置即可:

const dateTimeFormats = {
    "nb-NO": {
        // 原有配置不变
    },
    "nb": {
        short: {
            year: "numeric",
            month: "2-digit",
            day: "2-digit",
        },
        long: {
            year: "numeric",
            month: "2-digit",
            day: "2-digit",
            hour: "2-digit",
            minute: "2-digit",
            hour12: false,
        }
    }
} as VueI18n.DateTimeFormats;

校验方法

修改后可在初始化完成后打印console.log(i18n.locale),确认实际生效的locale值和你配置的key一致,即可快速验证问题是否解决。

内容的提问来源于stack exchange,提问作者Roar S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 06:27:03