Đặt câu hỏi và nhận tóm tắt tài liệu bằng cách tham chiếu trang này và nhà cung cấp AI bạn chọn
Nội dung của trang này đã được dịch bằng AI.
Xem phiên bản mới nhất của nội dung gốc bằng tiếng AnhNếu bạn có ý tưởng để cải thiện tài liệu này, vui lòng đóng góp bằng cách gửi pull request trên GitHub.
Liên kết GitHub tới tài liệuSao chép Markdown của tài liệu vào bộ nhớ tạm
Dịch website Next.js 15 sử dụng next-intl với Intlayer | Quốc tế hóa (i18n)
Hướng dẫn này sẽ dẫn bạn qua các thực hành tốt nhất của next-intl trong ứng dụng Next.js 15 (App Router), và chỉ cách tích hợp Intlayer lên trên để quản lý dịch thuật và tự động hóa mạnh mẽ.
Xem so sánh tại next-i18next vs next-intl vs Intlayer.
- Dành cho người mới: làm theo từng bước để có một ứng dụng đa ngôn ngữ hoạt động.
- Dành cho lập trình viên trung cấp: chú ý tối ưu payload và tách biệt server/client.
- Dành cho lập trình viên cao cấp: lưu ý về static generation, middleware, tích hợp SEO và các hook tự động hóa.
Những nội dung chúng ta sẽ đề cập:
- Cài đặt và cấu trúc file
- Tối ưu cách tải các thông điệp
- Sử dụng component phía client và server
- Metadata, sitemap, robots cho SEO
- Middleware cho định tuyến locale
- Thêm Intlayer lên trên (CLI và tự động hóa)
Cài đặt ứng dụng của bạn sử dụng next-intl
Cài đặt các dependencies của next-intl -
Sao chép mã vào clipboard
Sao chép mã vào clipboard
Cài đặt và Tải Nội dung
Chỉ tải các namespace mà các route của bạn cần và xác thực locale sớm. Giữ các component phía server đồng bộ khi có thể và chỉ gửi các thông điệp cần thiết đến client.
Sao chép mã vào clipboard
Sao chép mã vào clipboard
Sao chép mã vào clipboard
Sử dụng trong một component phía client
Hãy lấy ví dụ về một component phía client hiển thị bộ đếm.
Dịch thuật (dạng được tái sử dụng; tải chúng vào messages của next-intl theo cách bạn muốn)
Sao chép mã vào clipboard
Sao chép mã vào clipboard
Component phía client
Sao chép mã vào clipboard
Đừng quên thêm message "about" vào messages phía client của trang (chỉ bao gồm các namespace mà client của bạn thực sự cần).
Sử dụng trong component phía server
Component UI này là một component phía server và có thể được render bên dưới một component phía client (page → client → server). Giữ nó đồng bộ bằng cách truyền các chuỗi đã được tính trước.
Sao chép mã vào clipboard
Ghi chú:
- Tính toán
formattedCountphía server (ví dụ:const initialFormattedCount = format.number(0)). - Tránh truyền các hàm hoặc đối tượng không thể tuần tự hóa vào các component phía server.
Sao chép mã vào clipboard
Sao chép mã vào clipboard
Sao chép mã vào clipboard
Middleware cho định tuyến locale
Thêm một middleware để xử lý phát hiện và định tuyến locale:
Sao chép mã vào clipboard
Thực hành tốt nhất
- Đặt thuộc tính
langvàdircho html: Trongsrc/app/[locale]/layout.tsx, tính toándirthông quagetLocaleDirection(locale)và đặt<html lang={locale} dir={dir}>. - Phân tách messages theo namespace: Tổ chức JSON theo locale và namespace (ví dụ:
common.json,about.json). - Giảm thiểu tải trọng cho client: Trên các trang, chỉ gửi các namespace cần thiết đến
NextIntlClientProvider(ví dụ,pick(messages, ['common', 'about'])). - Ưu tiên các trang tĩnh: Xuất
export const dynamic = 'force-static'và tạo các tham số tĩnh cho tất cả cáclocales. - Các component server đồng bộ: Truyền các chuỗi đã được tính trước (nhãn đã dịch, số đã định dạng) thay vì các cuộc gọi async hoặc các hàm không thể tuần tự hóa.
Triển khai Intlayer trên nền next-intl
Cài đặt các phụ thuộc của intlayer:
Sao chép mã vào clipboard
Tạo file cấu hình intlayer:
Sao chép mã vào clipboard
Thêm các script vào package.json:
Sao chép mã vào clipboard
Ghi chú:
intlayer fill: sử dụng nhà cung cấp AI của bạn để điền các bản dịch còn thiếu dựa trên các locale đã cấu hình.intlayer test: kiểm tra các bản dịch bị thiếu hoặc không hợp lệ (sử dụng trong CI).
Bạn có thể cấu hình các đối số và nhà cung cấp; xem thêm tại Intlayer CLI.