22 lines
747 B
TypeScript
22 lines
747 B
TypeScript
export default defineEventHandler((event: any) => {
|
||
// 服务端中间件,直接执行
|
||
const cookie = getCookie(event, 'i18n_redirected');
|
||
const acceptLanguage = getHeader(event, 'accept-language') || '';
|
||
|
||
let detectedLang = 'en'; // 默认英文
|
||
|
||
// 优先检查 cookie:如果有 cookie 就使用 cookie 中的语言
|
||
if (cookie && ['cn', 'en'].includes(cookie)) {
|
||
detectedLang = cookie;
|
||
}
|
||
// 如果没有 cookie,则根据浏览器语言检测
|
||
else if (acceptLanguage.includes('zh')) {
|
||
detectedLang = 'cn';
|
||
}
|
||
// 设置到 context 供后续使用
|
||
event.context.locale = detectedLang;
|
||
|
||
// 设置响应头
|
||
setHeader(event, 'X-Detected-Language', detectedLang);
|
||
});
|