55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
|
|
'use client';
|
||
|
|
import type { Metadata } from 'next';
|
||
|
|
import './globals.css';
|
||
|
|
import { useEffect, useState } from 'react';
|
||
|
|
|
||
|
|
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
|
||
|
|
const [currentLang, setCurrentLang] = useState('zh-CN');
|
||
|
|
|
||
|
|
useEffect(() => {
|
||
|
|
// Listen for language changes from localStorage or other sources
|
||
|
|
const handleLanguageChange = () => {
|
||
|
|
const savedLang = localStorage.getItem('language') || 'zh-CN';
|
||
|
|
setCurrentLang(savedLang);
|
||
|
|
document.documentElement.lang = savedLang;
|
||
|
|
};
|
||
|
|
|
||
|
|
handleLanguageChange();
|
||
|
|
window.addEventListener('storage', handleLanguageChange);
|
||
|
|
|
||
|
|
return () => {
|
||
|
|
window.removeEventListener('storage', handleLanguageChange);
|
||
|
|
};
|
||
|
|
}, []);
|
||
|
|
|
||
|
|
return (
|
||
|
|
<html lang={currentLang} data-oid="igtjek8">
|
||
|
|
<head data-oid="zmps16q">
|
||
|
|
<meta
|
||
|
|
name="viewport"
|
||
|
|
content="width=device-width, initial-scale=1"
|
||
|
|
data-oid="j0q4_yq"
|
||
|
|
/>
|
||
|
|
|
||
|
|
<meta name="robots" content="index, follow" data-oid="t1vprk8" />
|
||
|
|
<meta name="author" content="CloudTech" data-oid="h-qxvx6" />
|
||
|
|
<title data-oid="niq1f62">CloudTech - Professional Cloud Computing Platform</title>
|
||
|
|
<meta
|
||
|
|
name="description"
|
||
|
|
content="CloudTech provides professional cloud computing services for enterprise digital transformation"
|
||
|
|
data-oid="p-1zq94"
|
||
|
|
/>
|
||
|
|
|
||
|
|
<meta
|
||
|
|
name="keywords"
|
||
|
|
content="cloud computing, cloud services, digital transformation"
|
||
|
|
data-oid="xi3azhs"
|
||
|
|
/>
|
||
|
|
</head>
|
||
|
|
<body className="" data-oid="s4f3g.0">
|
||
|
|
{children}
|
||
|
|
</body>
|
||
|
|
</html>
|
||
|
|
);
|
||
|
|
}
|