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

ASP.NET Core 3.1项目中用JS获取Portable Object本地化当前语言

获取ASP.NET Core多语言应用的当前语言(JS版)

没问题,这事儿其实挺容易搞定的,咱们结合你给出的代码一步步来:

首先,你用的CookieRequestCultureProvider.DefaultCookieName对应的实际Cookie名称是.AspNetCore.Culture——这是ASP.NET Core用来存储当前文化设置的默认Cookie名。这个Cookie的值格式一般是c=zh-CN|uic=zh-CN,其中c就是你通过SetLanguage方法设置的culture参数,uic是UI文化,咱们要拿的就是前者(或者 fallback到后者)。

接下来直接上可用的JS代码:

1. 通用Cookie读取函数+文化解析函数

// 通用工具函数:根据名称获取Cookie值
function getCookie(name) {
    const value = `; ${document.cookie}`;
    const parts = value.split(`; ${name}=`);
    if (parts.length === 2) return parts.pop().split(';').shift();
}

// 获取当前应用的语言文化
function getCurrentCulture() {
    // 读取ASP.NET Core的文化Cookie
    const cultureCookie = getCookie('.AspNetCore.Culture');
    
    // 如果Cookie不存在,返回你的默认语言(比如'en-US',根据你的实际情况调整)
    if (!cultureCookie) return 'en-US';
    
    // 解析Cookie的格式:c=xx-XX|uic=xx-XX
    const cultureSegments = cultureCookie.split('|');
    
    // 先找请求文化(c=开头的部分)
    const requestCulture = cultureSegments.find(segment => segment.startsWith('c='));
    if (requestCulture) {
        return requestCulture.split('=')[1];
    }
    
    // 如果没找到请求文化, fallback到UI文化
    const uiCulture = cultureSegments.find(segment => segment.startsWith('uic='));
    return uiCulture ? uiCulture.split('=')[1] : 'en-US';
}

// 调用示例
const currentLang = getCurrentCulture();
console.log('当前语言:', currentLang);

2. 更灵活的写法(避免硬写Cookie名称)

如果你不想在JS里硬写.AspNetCore.Culture这个字符串,可以在Razor视图(比如布局页_Layout.cshtml)里把.NET的常量值注入到JS中,这样以后哪怕框架调整Cookie名称(虽然概率极低),代码也不用改:

<script>
    // 从后端注入Cookie名称常量
    const cultureCookieName = '@CookieRequestCultureProvider.DefaultCookieName';
    
    // 调整上面的getCurrentCulture函数,用这个变量代替硬写的名称
    function getCurrentCulture() {
        const cultureCookie = getCookie(cultureCookieName);
        // 后面的逻辑和之前一致即可
    }
</script>

这样就完美适配你的多语言设置啦,不管用户切换到哪种语言,JS都能准确拿到当前的文化值。

内容的提问来源于stack exchange,提问作者Simone Spagna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:02:28