Đặ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
Lịch sử phiên bản
- "Init history"v9.0.05/6/2026
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 AnhIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Migrating from react-i18next / i18next to Intlayer
Tại sao nên chuyển từ react-i18next / i18next sang Intlayer?
Thay vì tải các tệp JSON khổng lồ vào trang của bạn, chỉ tải nội dung cần thiết. Intlayer giúp giảm kích thước bundle và trang của bạn tới 50%.
Phạm vi nội dung ứng dụng của bạn tạo điều kiện thuận lợi cho việc bảo trì các ứng dụng quy mô lớn. Bạn có thể sao chép hoặc xóa một thư mục tính năng duy nhất mà không cần lo lắng về việc kiểm tra toàn bộ codebase nội dung của mình. Ngoài ra, Intlayer được gõ hoàn toàn để đảm bảo độ chính xác của nội dung của bạn.
Intlayer cũng là giải pháp có phát triển tích cực nhất trong hệ sinh thái i18n — các vấn đề được sửa chữa nhanh chóng, các bộ điều hợp framework mới được giới thiệu thường xuyên, và API cốt lõi được liên tục cải tiến dựa trên phản hồi sản xuất thực tế.
Đặt nội dung cùng vị trí giảm bối cảnh cần thiết bởi Large Language Models (LLMs). Intlayer cũng đi kèm với một bộ công cụ, chẳng hạn như CLI để kiểm tra các bản dịch bị thiếu, LSP, MCP, và agent skills, để làm cho trải nghiệm nhà phát triển (DX) còn suôn sẻ hơn cho các agent AI.
Sử dụng tự động hóa để dịch trong pipeline CI/CD của bạn bằng cách sử dụng LLM mà bạn chọn với chi phí của nhà cung cấp AI của bạn. Intlayer cũng cung cấp một compiler để tự động hóa việc trích xuất nội dung, cũng như một nền tảng web để giúp dịch trong nền.
Kết nối các tệp JSON khổng lồ với các thành phần có thể dẫn đến các vấn đề về hiệu suất và phản ứng. Intlayer tối ưu hóa tải nội dung của bạn tại thời điểm xây dựng.
Hơn chỉ là một giải pháp i18n, Intlayer cung cấp một visual editor tự lưu trữ và một full CMS để giúp bạn quản lý nội dung đa ngôn ngữ của mình theo thời gian thực, làm cho cộng tác với các dịch giả, biên tập viên và các thành viên nhóm khác trở nên liền mạch. Nội dung có thể được lưu trữ cục bộ và/hoặc từ xa.
Chiến lược di chuyển
Có hai chiến lược bổ sung cho việc di chuyển từ react-i18next / i18next sang Intlayer:
Compat adapter (được khuyến nghị cho các ứng dụng hiện có) — Cài đặt
@intlayer/react-i18next(cho các thành phần React) và/hoặc@intlayer/i18next(cho instancei18ncốt lõi). Các gói này công khai API chính xác giống nhau nhưreact-i18next/i18nextnhưng ủy thác toàn bộ công việc dịch cho Intlayer dưới nắp. Bạn giữ lại các lệnh gọiuseTranslation,Trans,withTranslation,i18next.t()hiện có — thay đổi duy nhất là đường dẫn import.Di chuyển toàn bộ — Dần dần thay thế các API
react-i18nextbằng các hook Intlayer native (useIntlayer,IntlayerProvider) và đặt nội dung cùng vị trí trong các file.content.tsbên cạnh các thành phần của bạn.
Hướng dẫn này bao gồm Chiến lược 1 trước (compat adapter plug-and-play), sau đó hướng dẫn qua quá trình di chuyển toàn bộ tùy chọn.
Mục lục
Sự di chuyển nhanh chóng
Các bước sau đây là tối thiểu cần thiết để chạy ứng dụng react-i18next hiện tại của bạn trên Intlayer mà không cần thay đổi mã.
Cài đặt Dependencies
Cài đặt các gói core của Intlayer và các bộ chuyển đổi tương thích:
bashSao chép mãSao chép mã vào clipboard
npx intlayer-cli init --interactivecờ
--interactivelà tùy chọn. Sử dụngintlayer-cli initnếu bạn là agent AI.Lệnh này sẽ phát hiện môi trường của bạn và cài đặt các gói cần thiết. Ví dụ:
bashSao chép mãSao chép mã vào clipboard
npm install intlayer react-intlayer @intlayer/react-i18next @intlayer/i18next @intlayer/sync-json-pluginBạn có thể giữ
react-i18nextvài18nextđược cài đặt — các bộ chuyển đổi tương thích sử dụng chúng nhưdevDependencies/ tùy chọnpeerDependenciescho các loại TypeScript. Bạn không cần thay đổi bất kỳ peerspackage.jsonnào.Cấu hình Intlayer
Lệnh
intlayer inittạo mộtintlayer.config.tskhởi động. Cập nhật nó để khớp với các locale hiện tại của bạn và chỉ pluginsyncJSONđến các tệp tin của bạn:intlayer.config.tsSao chép mãSao chép mã vào clipboard
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // Thêm tất cả các locale hiện tại của bạn ở đây ], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ // khớp với cú pháp placeholder react-i18next: {{name}} format: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], }; export default config;sourceánh xạ một locale đến đường dẫn tệp JSON của nó.locationcho Intlayer watcher biết thư mục nào cần giám sát những thay đổi. Tùy chọnformat: 'i18next'đảm bảo rằng các placeholder như{{name}}được phân tích cú pháp một cách chính xác.Thêm Plugin Intlayer vào Bundler của bạn
Bọc cấu hình bundler hiện tại của bạn bằng plugin tương thích. Nó tổng hợp plugin core Intlayer, dây dẫn các nội dung theo dõi, và — rất quan trọng — tiêm module aliases để các lệnh
import … from 'react-i18next'(và'i18next') hiện tại của bạn được chuyển hướng một cách trong suốt đến@intlayer/react-i18next/@intlayer/i18nexttại thời gian xây dựng. Không cần thay đổi tệp tin nguồn.Đối với Vite:
vite.config.tsSao chép mãSao chép mã vào clipboard
import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import { reactI18nextVitePlugin } from "@intlayer/react-i18next/plugin"; export default defineConfig({ plugins: [react(), reactI18nextVitePlugin()], });reactI18nextVitePlugin()bọc pluginintlayer()củavite-intlayervà thêm các aliasreact-i18next/i18next. Sử dụng pluginintlayer()đơn giản từvite-intlayerbiên dịch các từ điển nhưng không thêm các alias đó — bạn sau đó sẽ phải đổi tên các import thành@intlayer/*theo cách thủ công (xem Bước 4).Đối với Next.js:
Nếu bạn đang sử dụng
next-i18next(tích hợp Pages Router), hãy cài đặt@intlayer/next-i18nextvànext-intlayer:bashSao chép mãSao chép mã vào clipboard
npm install @intlayer/next-i18next next-intlayerSau đó thêm plugin tương thích vào
next.config.tscủa bạn (nó tiêm các aliasnext-i18next/react-i18next/i18next):next.config.tsSao chép mãSao chép mã vào clipboard
import type { NextConfig } from "next"; import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin"; const withIntlayer = createNextI18nPlugin(); const nextConfig: NextConfig = { /* các tùy chọn của bạn */ }; export default withIntlayer(nextConfig);Bạn không còn cần
i18next.init()hoặc khởi động provider thủ công. Intlayer biên dịch tất cả các từ điển tại thời gian xây dựng, vì vậy không có bước tải hạng nhân tài nào. Nhà cung cấp bị tính bí danh xử lý việc khởi tạo cho bạn.
Đó là tất cả cho sự di chuyển nhanh chóng. Ứng dụng của bạn hiện chạy trên Intlayer trong khi giữ nguyên mọi import và API react-i18next.
Các khóa dịch được gõ — tự động. Khi Intlayer biên dịch các từ điển của bạn,
useTranslationvàgetFixedTđược gõ dựa trên nội dung thực tế của bạn. Các khóa được tự động hoàn thành trong IDE của bạn và các đường dẫn không hợp lệ gây ra lỗi TypeScript tại thời gian xây dựng — không cần thiết lập thêm.tsxSao chép mãSao chép mã vào clipboard
// 'about' là một khóa từ điển được đăng ký → t() chỉ chấp nhận các đường dẫn dot hợp lệconst { t } = useTranslation("about");t("counter.label"); // ✓ tự động hoàn thànht("does.not.exist"); // ✗ lỗi TypeScript// Phía máy chủ (instance i18next)const tAbout = i18n.getFixedT(null, "about");tAbout("counter.label"); // ✓ được gõ
Quá trình di chuyển hoàn toàn
Các bước dưới đây là tùy chọn và có thể được thực hiện từng bước. Chúng mở khóa bộ tính năng Intlayer đầy đủ: trình chỉnh sửa trực quan, CMS, các tệp nội dung được gõ, dịch được hỗ trợ bởi AI, và hơn thế nữa.
Đổi tên nhập rõ ràng (tùy chọn)
Tùy chọnCác plugin Intlayer đã xử lý aliasing ở mức bundler. Nếu bạn muốn làm cho sự phụ thuộc rõ ràng trong các tệp nguồn của mình, bạn có thể đổi tên các bản import theo cách thủ công:
Hiển thị tất cả nội dung bảngMở bảng trong một cửa sổ bật lên để xem toàn bộ nội dung dữ liệu một cách rõ ràng
Trước Sau import { useTranslation } from 'react-i18next'import { useTranslation } from '@intlayer/react-i18next'import { Trans } from 'react-i18next'import { Trans } from '@intlayer/react-i18next'import { withTranslation } from 'react-i18next'import { withTranslation } from '@intlayer/react-i18next'import { I18nextProvider } from 'react-i18next'import { I18nextProvider } from '@intlayer/react-i18next'import { initReactI18next } from 'react-i18next'import { initReactI18next } from '@intlayer/react-i18next'import i18next from 'i18next'import i18next from '@intlayer/i18next'import { createInstance } from 'i18next'import { createInstance } from '@intlayer/i18next'import { t } from 'i18next'import { t } from '@intlayer/i18next'Đối với Next.js (
next-i18next):Hiển thị tất cả nội dung bảngMở bảng trong một cửa sổ bật lên để xem toàn bộ nội dung dữ liệu một cách rõ ràng
Trước Sau import { serverSideTranslations } from 'next-i18next/serverSideTranslations'import { serverSideTranslations } from '@intlayer/next-i18next'import { appWithTranslation } from 'next-i18next'import { appWithTranslation } from '@intlayer/next-i18next'import { useTranslation } from 'next-i18next'import { useTranslation } from '@intlayer/next-i18next'Bật Tự động dịch được hỗ trợ bởi AI
Tùy chọnSau khi Intlayer được kết nối, hãy sử dụng CLI của nó để điền các bản dịch còn thiếu tự động:
bashSao chép mãSao chép mã vào clipboard
# Kiểm tra các bản dịch còn thiếu (thêm vào CI)npx intlayer test# Điền các bản dịch còn thiếu bằng AInpx intlayer fillThêm cấu hình AI vào
intlayer.config.ts:intlayer.config.tsSao chép mãSao chép mã vào clipboard
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ format: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], ai: { apiKey: process.env.OPENAI_API_KEY, // provider: "openai", // mặc định // model: "gpt-4o-mini", // mặc định }, }; export default config;Xem tài liệu CLI Intlayer để biết tất cả các tùy chọn có sẵn.
Những gì bạn có thể xóa sau khi di chuyển
Khi các compat adapters đã được triển khai, boilerplate react-i18next / i18next sau đây có thể được xóa:
Mở bảng trong một cửa sổ bật lên để xem toàn bộ nội dung dữ liệu một cách rõ ràng
| File / pattern | Lý do nó không còn cần thiết |
|---|---|
i18next.init() calls | Intlayer's provider khởi tạo mọi thứ tự động; không có bước tải lúc runtime. |
I18nextProvider / initReactI18next | The Intlayer plugin xử lý injection và bootstrapping under the hood. |
JSON language bundles (locales/*.json) | JSON bundles chỉ cần thiết nếu bạn vẫn sử dụng plugin syncJSON. Khi bạn di chuyển sang các file .content.ts bạn có thể xóa thư mục JSON. |
Khi bạn sẵn sàng tiến xa hơn, Intlayer tự động khám phá tất cả các file .content.ts và .content.json ở bất kỳ đâu trong codebase của bạn (theo mặc định, ở bất kỳ đâu trong ./src). Bạn có thể đặt một file my-component.content.ts ngay cạnh MyComponent.tsx của bạn và Intlayer sẽ nhận nó khi build mà không cần cấu hình bổ sung — không cần imports, không cần registration, không cần file index tập trung. Điều này làm cho việc co-locating translations với pages và components hoàn toàn không gặp trở ngại.
Cấu hình TypeScript
Intlayer sử dụng module augmentation để cung cấp đầy đủ intellisense TypeScript cho các khóa dịch của bạn. Đảm bảo rằng tsconfig.json của bạn bao gồm các loại được tạo tự động:
Sao chép mã vào clipboard
{ // ... Các cấu hình TypeScript hiện có của bạn "include": [ // ... Các cấu hình TypeScript hiện có của bạn ".intlayer/**/*.ts", // Bao gồm các loại được tạo tự động ],}Cấu hình Git
Thêm thư mục được tạo bởi Intlayer vào .gitignore của bạn:
Sao chép mã vào clipboard
# Bỏ qua các tệp được tạo bởi Intlayer.intlayerĐi Xa Hơn
- Visual Editor — Quản lý bản dịch một cách trực quan trong trình duyệt của bạn: Intlayer Visual Editor
- CMS — Externalize và quản lý nội dung từ xa: Intlayer CMS
- VS Code Extension — Nhận tính năng tự động hoàn thành và phát hiện lỗi dịch trong thời gian thực: Intlayer VS Code Extension
- CLI Reference — Danh sách đầy đủ các lệnh CLI: Intlayer CLI
- Intlayer with React — Hướng dẫn thiết lập đầy đủ cho React: intlayerwithvite+react.md
- Intlayer with Next.js — Hướng dẫn thiết lập đầy đủ cho Next.js: intlayerwithnextjs_16.md