👏Triển khai i18next ở pages (ok)
Đây là source code full nextbrand-example-full-language-pages-to-en
Bổ sung: Chắc chắn! Dưới đây là cách bạn chuyển getStaticProps sang getServerSideProps khi dùng next-i18next để dịch đa ngôn ngữ cho các trang như /[lang]/about.
getStaticProps sang getServerSideProps khi dùng next-i18next để dịch đa ngôn ngữ cho các trang như /[lang]/about.✅ Mã mẫu getServerSideProps thay cho getStaticProps
getServerSideProps thay cho getStaticPropstsxCopyEdit// pages/[lang]/about.tsx
import { GetServerSideProps } from 'next';
import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
import i18nextConfig from '../../../next-i18next.config.js';
import { useTranslation } from 'react-i18next';
export default function About() {
const { t } = useTranslation();
return (
<div className="p-4">
<h1 className="text-2xl font-bold">{t('about_title')}</h1>
<p className="mt-2">{t('about_content')}</p>
</div>
);
}
export const getServerSideProps: GetServerSideProps = async ({ params }) => {
const locale = params?.lang as string;
return {
props: {
...(await serverSideTranslations(locale, ['translation'], i18nextConfig)),
},
};
};🔁 So sánh nhanh:
⚠️ Lưu ý quan trọng
Step 1: Cấu hình ở client kết với SSG (cách này hay được sử dụng)
— Cách khai báo Layout cho tất cả các trang không, không phải thủ công cho mỗi trang about.tsx, contact.tsx
Step 2: Cấu hình ở client
✅ 1. Cập nhật file dịch
✅ 2. Tạo file src/pages/[lang]/About.tsx
src/pages/[lang]/About.tsx✅ 3. (Tuỳ chọn) Cấu hình route fallback
✅ 4. (Gợi ý) Tạo điều hướng giữa các ngôn ngữ
✅ Kết luận
✅ 1. Đảm bảo i18n đã load đúng ngôn ngữ và namespace
✅ 2. Kiểm tra lại file i18n.ts trong lib/i18n.ts
i18n.ts trong lib/i18n.ts✅ 3. Đặt lại file dịch vào thư mục public/locales
public/locales✅ 4. Bật debug để kiểm tra lỗi
✅ 5. Thêm kiểm tra namespace thủ công (tuỳ chọn)
✅ Kết luận
✅ Mục tiêu
➕ Yêu cầu:
✅ 1. Tạo điều hướng đổi ngôn ngữ động
✅ 2. Sử dụng trong các trang như About, Contact
✅ 3. Đảm bảo các route có dạng [lang]/about, [lang]/contact
[lang]/about, [lang]/contact✅ 4. Thêm từ khóa vào file dịch
✅ Kết quả
🎯 Nguyên nhân chính
✅ Cách sửa đơn giản (cho Layout.tsx)
Layout.tsx)➤ 1. Đợi đến khi ngôn ngữ được đồng bộ mới render
✅ Mẹo: sử dụng suppressHydrationWarning nếu cần (chỉ tạm thời)
suppressHydrationWarning nếu cần (chỉ tạm thời)✅ Giải pháp nâng cao (nếu muốn làm chuẩn SSR với i18n)
✅ Kết luận
PreviousTổng hợp ví dụ của chính next-intl triển khai với pages, app (ok)NextToàn bộ giải thích Triển khai i18next ở pages
Last updated