Đặ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
- "Thêm phần Tại sao Intlayer thay thế"v8.11.231/5/2026
- "Phát hành Trình biên dịch"v7.3.127/11/2025
- "Cập nhật bảng so sánh"v5.8.019/8/2025
- "Khởi tạo lịch sử"v5.5.1029/6/2025
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
Tại sao bạn nên cân nhắc sử dụng Intlayer?
Intlayer là gì?
Intlayer là một thư viện quốc tế hóa được thiết kế đặc biệt cho các nhà phát triển JavaScript. Nó cho phép khai báo nội dung của bạn ở bất cứ đâu trong mã của bạn. Nó chuyển đổi các khai báo nội dung đa ngôn ngữ thành các từ điển có cấu trúc để tích hợp dễ dàng vào mã của bạn. Sử dụng TypeScript, Intlayer làm cho quá trình phát triển của bạn mạnh mẽ và hiệu quả hơn.
Tại sao Intlayer thay thế các lựa chọn thay thế?
So với các giải pháp chính như next-intl hay i18next, Intlayer là giải pháp đi kèm với các tính năng tối ưu hóa tích hợp như:
Thay vì tải các tệp JSON lớn vào trang của bạn, hãy chỉ tải nội dung cần thiết. Intlayer giúp giảm tới 50% kích thước bundle và kích thước trang.
Xác định phạm vi nội dung ứng dụng của bạn tạo điều kiện bảo trì cho 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 mà không phải lo lắng về việc xem lại toàn bộ cơ sở mã nội dung của mình. Ngoài ra, Intlayer được nhập đầy đủ để đảm bảo tính chính xác cho nội dung của bạn.
Nội dung cùng định vị giảm ngữ cảnh cần thiết của Mô hình ngôn ngữ lớn (LLM). Intlayer cũng đi kèm 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, để giúp trải nghiệm của nhà phát triển (DX) trở nên mượt mà hơn nữa đối với các tác nhân AI.
Intlayer cung cấp nhiều tính năng bổ sung mà các giải pháp i18n khác không có, chẳng hạn như Hỗ trợ Markdown, tìm nạp nội dung bên ngoài, nội dung tệp loading, cập nhật nội dung trực tiếp, trình soạn thảo trực quan, v.v.
Sử dụng tính năng tự động hóa để dịch trong quy trình CI/CD của bạn bằng cách sử dụng LLM mà bạn chọn với chi phí do nhà cung cấp AI của bạn chi trả. Intlayer cũng cung cấp trình biên dịch để tự động trích xuất nội dung cũng như nền tảng web để giúp dịch ở chế độ nền.
Việc kết nối các tệp JSON lớn với các thành phần có thể dẫn đến các vấn đề về hiệu suất và khả năng phản hồi. Intlayer tối ưu hóa việc tải nội dung của bạn tại thời điểm build.
Không chỉ là giải pháp i18n, Intlayer còn cung cấp trình chỉnh sửa trực quan và CMS đầy đủ để giúp bạn quản lý nội dung đa ngôn ngữ của mình trong thời gian thực, giúp việc cộng tác với người dịch, người viết quảng cáo và các thành viên khác trong nhóm trở nên liền mạch. Nội dung có thể được lưu trữ cục bộ và/hoặc từ xa.
Nếu bạn sử dụng các khung khác nhau cho các phần khác nhau của ứng dụng (ví dụ: React, React-native, Vue, Angular, Svelte, v.v.), Intlayer sẽ cung cấp cách sử dụng một synatax chung và cách triển khai trên tất cả các khung giao diện người dùng chính. Bạn cũng sẽ có thể chia sẻ khai báo nội dung của mình trên hệ thống thiết kế, ứng dụng, chương trình phụ trợ, v.v.
Tại sao Intlayer được tạo ra?
Intlayer được tạo ra để giải quyết một vấn đề phổ biến ảnh hưởng đến tất cả các thư viện i18n phổ biến như next-intl, react-i18next, react-intl, next-i18next, react-intl, và vue-i18n.
Tất cả các giải pháp này đều áp dụng một cách tiếp cận tập trung để liệt kê và quản lý nội dung của bạn. Ví dụ:
Sao chép mã vào clipboard
.├── locales│ ├── en.json│ ├── es.json│ └── fr.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxHoặc ở đây sử dụng namespaces:
Sao chép mã vào clipboard
.├── locales│ ├── en│ │ ├── footer.json│ │ └── navbar.json│ ├── fr│ │ ├── footer.json│ │ └── navbar.json│ └── es│ ├── footer.json│ └── navbar.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxLoại kiến trúc này làm chậm quá trình phát triển và làm cho codebase trở nên phức tạp hơn để duy trì vì nhiều lý do:
Đối với bất kỳ component mới nào được tạo, bạn nên:
- Tạo resource/namespace mới trong thư mục
locales - Nhớ import namespace mới trong page của bạn
- Dịch nội dung của bạn (thường được thực hiện thủ công bằng copy/paste từ các nhà cung cấp AI)
- Tạo resource/namespace mới trong thư mục
Đối với bất kỳ thay đổi nào được thực hiện trên components của bạn, bạn nên:
- Tìm kiếm resource/namespace liên quan (xa component)
- Dịch nội dung của bạn
- Đảm bảo nội dung của bạn được cập nhật cho bất kỳ locale nào
- Xác minh namespace của bạn không bao gồm các keys/values không được sử dụng
- Đảm bảo cấu trúc của các tệp JSON của bạn giống nhau cho tất cả locales
Trên các dự án chuyên nghiệp sử dụng các giải pháp này, các nền tảng bản địa hóa thường được sử dụng để giúp quản lý dịch nội dung của bạn. Tuy nhiên, điều này có thể nhanh chóng trở nên tốn kém cho các dự án lớn.
Để giải quyết vấn đề này, Intlayer áp dụng một cách tiếp cận phạm vi nội dung của bạn trên mỗi component và giữ nội dung của bạn gần component của bạn, như chúng ta thường làm với CSS (styled-components), types, documentation (storybook), hoặc unit tests (jest).
Sao chép mã vào clipboard
.└── components └── MyComponent ├── index.content.ts ├── index.test.tsx ├── index.stories.tsx └── index.tsxSao chép mã vào clipboard
import { t, type Dictionary } from "intlayer";
const componentExampleContent = {
key: "component-example",
content: {
myTranslatedContent: t({
vi: "Xin chào Thế giới",
en: "Hello World",
es: "Hola Mundo",
fr: "Bonjour le monde",
}),
},
} satisfies Dictionary;
export default componentExampleContent;Sao chép mã vào clipboard
import { useIntlayer } from "react-intlayer";
export const ComponentExample = () => {
const { myTranslatedContent } = useIntlayer("component-example");
return <span>{myTranslatedContent}</span>;
};Cách tiếp cận này cho phép bạn:
Tăng tốc độ phát triển
- Các tệp
.content.{{ts|mjs|cjs|json}}có thể được tạo bằng cách sử dụng extension VSCode - Các công cụ hoàn thành tự động AI trong IDE của bạn (như GitHub Copilot) có thể giúp bạn khai báo nội dung của bạn, giảm copy/paste
- Các tệp
Làm sạch codebase của bạn
- Giảm độ phức tạp
- Tăng khả năng bảo trì
Sao chép components và nội dung liên quan của chúng dễ dàng hơn (Ví dụ: login/register components, vv)
- Bằng cách hạn chế rủi ro tác động đến nội dung của các components khác
- Bằng cách copy/paste nội dung của bạn từ ứng dụng này sang ứng dụng khác mà không cần phụ thuộc bên ngoài
Tránh làm ô nhiễm codebase của bạn bằng các keys/values không được sử dụng cho các components không được sử dụng
- Nếu bạn không sử dụng một component, Intlayer sẽ không import nội dung liên quan của nó
- Nếu bạn xóa một component, bạn sẽ dễ dàng nhớ để xóa nội dung liên quan của nó vì nó sẽ có trong cùng một thư mục
Giảm chi phí suy luận cho các AI agents để khai báo nội dung đa ngôn ngữ của bạn
- AI agent sẽ không phải quét toàn bộ codebase của bạn để biết nơi triển khai nội dung của bạn
- Dịch có thể dễ dàng thực hiện bằng các công cụ hoàn thành tự động AI trong IDE của bạn (như GitHub Copilot)
Tối ưu hóa hiệu suất tải
- Nếu một component được lazy-loaded, nội dung liên quan của nó sẽ được tải cùng lúc
Các tính năng bổ sung của Intlayer
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
| Tính năng | Mô tả |
|---|---|
| Hỗ trợ đa Framework Intlayer tương thích với tất cả các framework và thư viện chính, bao gồm Next.js, React, Vite, Vue.js, Nuxt, Preact, Express, và nhiều hơn nữa. |
| Quản lý nội dung được hỗ trợ bởi JavaScript Tận dụng tính linh hoạt của JavaScript để định nghĩa và quản lý nội dung của bạn một cách hiệu quả. - Khai báo nội dung |
| Compiler Intlayer Compiler trích xuất tự động nội dung từ các thành phần và tạo các tệp từ điển. - Compiler |
| Tệp khai báo nội dung theo Locale Tăng tốc độ phát triển của bạn bằng cách khai báo nội dung của bạn một lần, trước khi tự động tạo. - Tệp khai báo nội dung theo Locale |
| Môi trường An toàn về Kiểu Tận dụng TypeScript để đảm bảo định nghĩa nội dung và mã của bạn không có lỗi, đồng thời hưởng lợi từ tính năng hoàn thành tự động của IDE. - Cấu hình TypeScript |
| Thiết lập đơn giản Bắt đầu nhanh chóng với cấu hình tối thiểu. Điều chỉnh các cài đặt cho quốc tế hóa, định tuyến, AI, xây dựng và xử lý nội dung một cách dễ dàng. - Khám phá tích hợp Next.js |
| Truy xuất nội dung được đơn giản hóa Không cần gọi hàm t của bạn cho mỗi phần nội dung. Truy xuất tất cả nội dung của bạn trực tiếp bằng cách sử dụng một hook duy nhất.- Tích hợp React |
| Triển khai thành phần máy chủ nhất quán Phù hợp hoàn hảo với các thành phần máy chủ Next.js, sử dụng cách triển khai giống nhau cho cả thành phần máy khách và máy chủ, không cần chuyển hàm t của bạn qua mỗi thành phần máy chủ. - Server Components |
| Codebase được tổ chức Giữ codebase của bạn được tổ chức hơn: 1 thành phần = 1 từ điển trong cùng một thư mục. Các bản dịch gần với các thành phần tương ứng của chúng nâng cao khả năng bảo trì và rõ ràng. - Cách Intlayer hoạt động |
| Định tuyến nâng cao Hỗ trợ đầy đủ định tuyến ứng dụng, thích ứng liền mạch với các cấu trúc ứng dụng phức tạp, cho Next.js, React, Vite, Vue.js, v.v. - Khám phá tích hợp Next.js |
| Hỗ trợ Markdown Nhập và diễn giải các tệp locale và Markdown từ xa cho nội dung đa ngôn ngữ như chính sách quyền riêng tư, tài liệu, v.v. Diễn giải và làm cho siêu dữ liệu Markdown có thể truy cập được trong mã của bạn. - Content files |
| Trình chỉnh sửa hình ảnh & CMS miễn phí Trình chỉnh sửa hình ảnh và CMS miễn phí có sẵn cho những người viết nội dung, loại bỏ nhu cầu có nền tảng bản địa hóa. Giữ nội dung của bạn được đồng bộ hóa bằng Git, hoặc ngoại hóa hoàn toàn hoặc một phần với CMS. - Intlayer Editor - Intlayer CMS |
| Nội dung có thể Tree-shakable Nội dung có thể tree-shake, giảm kích thước của bộ bundle cuối cùng. Tải nội dung trên mỗi thành phần, loại trừ bất kỳ nội dung không sử dụng nào từ bộ bundle của bạn. Hỗ trợ tải lười để nâng cao hiệu quả tải ứng dụng. - Tối ưu hóa bản dựng ứng dụng |
| Kết xuất tĩnh Không cản trở kết xuất tĩnh. - Tích hợp Next.js |
| Dịch được hỗ trợ bởi AI Biến trang web của bạn thành 231 ngôn ngữ chỉ bằng một clic bằng cách sử dụng các công cụ dịch được hỗ trợ bởi AI nâng cao của Intlayer bằng cách sử dụng nhà cung cấp/khóa API AI của riêng bạn. - Tích hợp CI/CD - Intlayer CLI - Tự động điền |
| Tích hợp MCP Server Cung cấp máy chủ MCP (Model Context Protocol) cho tự động hóa IDE, cho phép quản lý nội dung và quy trình i18n liền mạch trực tiếp trong môi trường phát triển của bạn. - MCP Server |
| Phần mở rộng VSCode Intlayer cung cấp phần mở rộng VSCode để giúp bạn quản lý nội dung và bản dịch của bạn, xây dựng từ điển của bạn, dịch nội dung của bạn, và nhiều hơn nữa. - VSCode Extension |
| Khả năng tương tác Cho phép khả năng tương tác với react-i18next, next-i18next, next-intl, và react-intl. - Intlayer và react-intl - Intlayer và next-intl - Intlayer và next-i18next |
| Testing Missing Translations (CLI/CI) | ✅ CLI: npx intlayer content test (CI-friendly audit) |
So sánh Intlayer với các giải pháp khác
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
| Tính năng | intlayer | react-i18next | react-intl (FormatJS) | lingui | next-intl | next-i18next | vue-i18n |
|---|---|---|---|---|---|---|---|
| Bản dịch gần các Component | ✅ Có, nội dung được đặt cùng với mỗi component | ❌ Không | ❌ Không | ❌ Không | ❌ Không | ❌ Không | ✅ Có - sử dụng Single File Components (SFCs) |
| Tích hợp TypeScript | ✅ Nâng cao, các kiểu được tạo tự động một cách nghiêm ngặt | ⚠️ Cơ bản; cần cấu hình thêm để đảm bảo an toàn | ✅ Tốt, nhưng ít nghiêm ngặt hơn | ⚠️ Typings, cần cấu hình | ✅ Tốt | ⚠️ Cơ bản | ✅ Tốt (có loại; key-safety cần thiết lập) |
| Phát hiện bản dịch bị thiếu | ✅ Lỗi TypeScript và lỗi/cảnh báo thời gian xây dựng | ⚠️ Chủ yếu là chuỗi fallback tại runtime | ⚠️ Chuỗi fallback | ⚠️ Cần cấu hình thêm | ⚠️ Fallback runtime | ⚠️ Fallback runtime | ⚠️ Fallback/cảnh báo runtime (có thể cấu hình) |
| Nội dung phong phú (JSX/Markdown/components) | ✅ Hỗ trợ trực tiếp | ⚠️ Hạn chế / chỉ nội suy | ⚠️ Cú pháp ICU, không phải JSX thực sự | ⚠️ Hạn chế | ❌ Không được thiết kế cho các nút phong phú | ⚠️ Hạn chế | ⚠️ Hạn chế (components qua <i18n-t>, Markdown qua plugins) |
| Dịch được cung cấp bởi AI | ✅ Có, hỗ trợ nhiều nhà cung cấp AI. Có thể sử dụng bằng khóa API của riêng bạn. Xem xét ngữ cảnh của ứng dụng và phạm vi nội dung của bạn | ❌ Không | ❌ Không | ❌ Không | ❌ Không | ❌ Không | ❌ Không |
| Trình chỉnh sửa trực quan | ✅ Có, Trình chỉnh sửa trực quan cục bộ + CMS tùy chọn; có thể externalize nội dung codebase; có thể nhúng | ❌ Không / có sẵn thông qua các nền tảng bản địa hóa bên ngoài | ❌ Không / có sẵn thông qua các nền tảng bản địa hóa bên ngoài | ❌ Không / có sẵn thông qua các nền tảng bản địa hóa bên ngoài | ❌ Không / có sẵn thông qua các nền tảng bản địa hóa bên ngoài | ❌ Không / có sẵn thông qua các nền tảng bản địa hóa bên ngoài | ❌ Không / có sẵn thông qua các nền tảng bản địa hóa bên ngoài |
| Định tuyến được bản địa hóa | ✅ Có, hỗ trợ các đường dẫn được bản địa hóa sẵn (hoạt động với Next.js & Vite) | ⚠️ Không tích hợp sẵn, cần các plugin (ví dụ next-i18next) hoặc cấu hình bộ định tuyến tùy chỉnh | ❌ Không, chỉ định dạng thư, định tuyến phải thủ công | ⚠️ Không tích hợp sẵn, cần các plugin hoặc cấu hình thủ công | ✅ Tích hợp sẵn, App Router hỗ trợ segment [locale] | ✅ Tích hợp sẵn | ✅ Tích hợp sẵn |
| Tạo định tuyến động | ✅ Có | ⚠️ Plugin/ecosystem hoặc thiết lập thủ công | ❌ Không được cung cấp | ⚠️ Plugin/thủ công | ✅ Có | ✅ Có | ❌ Không được cung cấp (Nuxt i18n cung cấp) |
| Đa số hóa | ✅ Các mẫu dựa trên liệt kê | ✅ Có thể cấu hình (các plugin như i18next-icu) | ✅ (ICU) | ✅ (ICU/messageformat) | ✅ Tốt | ✅ Tốt | ✅ Các quy tắc số nhiều tích hợp sẵn |
| Định dạng (ngày, số, tiền tệ) | ✅ Định dạng được tối ưu hóa (Intl ở phía dưới) | ⚠️ Qua các plugin hoặc sử dụng Intl tùy chỉnh | ✅ Định dạng ICU | ✅ ICU/CLI helpers | ✅ Tốt (trợ giúp Intl) | ✅ Tốt (trợ giúp Intl) | ✅ Định dạng ngày/số tích hợp sẵn (Intl) |
| Định dạng nội dung | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) | ⚠️ .json | ✅ .json, .js | ⚠️ .po, .json | ✅ .json, .js, .ts | ⚠️ .json | ✅ .json, .js |
| Hỗ trợ ICU | ⚠️ WIP | ⚠️ Qua plugin (i18next-icu) | ✅ Có | ✅ Có | ✅ Có | ⚠️ Qua plugin (i18next-icu) | ⚠️ Qua định dạng/trình biên dịch tùy chỉnh |
| Trợ giúp SEO (hreflang, sitemap) | ✅ Công cụ tích hợp sẵn: trợ giúp cho sitemap, robots.txt, metadata | ⚠️ Plugin cộng đồng/thủ công | ❌ Không phải là lõi | ❌ Không phải là lõi | ✅ Tốt | ✅ Tốt | ❌ Không phải là lõi (Nuxt i18n cung cấp trợ giúp) |
| Ecosystem / Cộng đồng | ⚠️ Nhỏ hơn nhưng phát triển nhanh và đáp ứng nhanh | ✅ Lớn nhất và trưởng thành | ✅ Lớn | ⚠️ Nhỏ hơn | ✅ Vừa phải, tập trung vào Next.js | ✅ Vừa phải, tập trung vào Next.js | ✅ Lớn trong ecosystem Vue |
| Server-side Rendering & Server Components | ✅ Có, được sắp xếp hợp lý cho SSR / React Server Components | ⚠️ Được hỗ trợ ở cấp trang nhưng cần truyền các hàm t trên cây component cho các component máy chủ con | ⚠️ Được hỗ trợ ở cấp trang với thiết lập bổ sung, nhưng cần truyền các hàm t trên cây component cho các component máy chủ con | ✅ Được hỗ trợ, cần thiết lập | ⚠️ Được hỗ trợ ở cấp trang nhưng cần truyền các hàm t trên cây component cho các component máy chủ con | ⚠️ Được hỗ trợ ở cấp trang nhưng cần truyền các hàm t trên cây component cho các component máy chủ con | ✅ SSR thông qua Nuxt/Vue SSR (không có RSC) |
| Tree-shaking (chỉ tải nội dung được sử dụng) | ✅ Có, mỗi component tại thời gian xây dựng qua các plugin Babel/SWC | ⚠️ Thường tải tất cả (có thể cải thiện với namespaces/code-splitting) | ⚠️ Thường tải tất cả | ❌ Không mặc định | ⚠️ Một phần | ⚠️ Một phần | ⚠️ Một phần (với code-splitting/thiết lập thủ công) |
| Tải lười biếng | ✅ Có, theo locale / theo từ điển | ✅ Có (ví dụ, backends/namespaces theo yêu cầu) | ✅ Có (chia nhỏ các gói locale) | ✅ Có (nhập danh mục động) | ✅ Có (theo tuyến/theo locale), cần quản lý namespace | ✅ Có (theo tuyến/theo locale), cần quản lý namespace | ✅ Có (thư tin locale không đồng bộ) |
| Xóa nội dung không sử dụng | ✅ Có, theo từ điển tại thời gian xây dựng | ❌ Không, chỉ thông qua phân đoạn namespace thủ công | ❌ Không, tất cả các thư bao khai báo được gộp | ✅ Có, các khóa không sử dụng được phát hiện & xóa tại lúc xây dựng | ❌ Không, có thể được quản lý thủ công bằng quản lý namespace | ❌ Không, có thể được quản lý thủ công bằng quản lý namespace | ❌ Không, chỉ có thể thông qua tải lười biếng thủ công |
| Quản lý các dự án lớn | ✅ Khuyến khích mô-đun, phù hợp với design-system | ⚠️ Cần kỷ luật tệp tốt | ⚠️ Danh mục trung tâm có thể trở nên lớn | ⚠️ Có thể trở nên phức tạp | ✅ Mô-đun với thiết lập | ✅ Mô-đun với thiết lập | ✅ Mô-đun với thiết lập Vue Router/Nuxt i18n |
Sao GitHub
Sao GitHub là một chỉ số mạnh mẽ về mức độ phổ biến của dự án, sự tin tưởng của cộng đồng và mức độ phù hợp lâu dài. Mặc dù không phải là thước đo trực tiếp về chất lượng kỹ thuật, chúng phản ánh số lượng nhà phát triển thấy dự án hữu ích, theo dõi tiến trình của nó và có khả năng áp dụng nó. Để ước tính giá trị của một dự án, các ngôi sao giúp so sánh sức hút giữa các lựa chọn thay thế và cung cấp thông tin chi tiết về sự phát triển của hệ sinh thái.
Khả năng tương tác
intlayer cũng có thể giúp quản lý các không gian tên react-intl, react-i18next, next-intl, next-i18next và vue-i18n của bạn.
Sử dụng intlayer, bạn có thể khai báo nội dung của mình theo định dạng của thư viện i18n yêu thích và intlayer sẽ tạo các không gian tên của bạn tại vị trí bạn chọn (ví dụ: /messages/{{locale}}/{{namespace}}.json).