Đặ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
- "Khởi tạo lịch sử"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 vue-i18n to Intlayer
Tại sao nên chuyển từ vue-i18n sang Intlayer?
Thay vì tải những tệp JSON khổng lồ vào các 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 lên tới 50%.
Phân giới hạn 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ể nhân đôi 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 xem xét toàn bộ codebase nội dung của bạn. Ngoài ra, Intlayer hoàn toàn được gõ để đả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 adapter framework mới được tích hợp 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 cùng địa điểm nội dung giảm ngữ cảnh cần thiết bởi các Mô hình Ngôn ngữ Lớn (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) thậm chí còn mượt mà hơn cho các AI agents.
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 lựa chọn của bạn với chi phí của nhà cung cấp AI của bạn. Intlayer cũng cung cấp compiler để tự động hóa 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 việc 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 visual editor tự lưu trữ và một CMS đầy đủ để giúp bạn quản lý nội dung đa ngôn ngữ của bạn theo thời gian thực, làm cho cộng tác với các nhà dịch, biên tập viên sao chép 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 nhau để di chuyển từ vue-i18n sang Intlayer:
Compat adapter (được khuyến nghị cho các ứng dụng hiện có) — Cài đặt
@intlayer/vue-i18n(cho các Vue component). Package này cung cấp cùng API nhưvue-i18nnhưng ủy thác tất cả công việc dịch cho Intlayer phía sau. Bạn giữ lại các lệnh gọi$t,useI18n(), và<i18n-t>hiện có — thay đổi duy nhất là đường dẫn import và khởi tạo.Di chuyển toàn bộ — Dần dần thay thế các API của
vue-i18nbằng các Intlayer hook gốc (useIntlayer) và đặt cùng vị trí nội dung trong các tệp.content.tsbên cạnh các component của bạn.
Hướng dẫn này bao gồm Chiến lược 1 trước tiên (compat adapter drop-in), sau đó hướng dẫn qua các di chuyển toàn bộ tùy chọn.
Mục lục
Hướng dẫn di chuyển nhanh chóng
Các bước sau đây là mức tối thiểu cần thiết để chạy ứng dụng vue-i18n hiện tại của bạn trên Intlayer mà không cần thay đổi mã trong các component.
Cài đặt Dependencies
Cài đặt các gói core của Intlayer và adapter 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à một AI agent.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 vue-intlayer @intlayer/vue-i18n @intlayer/sync-json-pluginBạn có thể giữ
vue-i18nđược cài đặt — adapter tương thích sử dụng nó như mộtdevDependency/peerDependencycho các kiểu TypeScript.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à trỏ pluginsyncJSONvào các tệp tin message 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 vue-i18n: {name} format: "icu", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], }; export default config;sourceánh xạ một locale tới đường dẫn tệp JSON của nó.locationcho Intlayer watcher biết thư mục nào để theo dõi các thay đổi. Tùy chọnformat: 'icu'đảm bảo rằng các placeholder được phân tích cú pháp chính xác chovue-i18n.Thêm plugin Intlayer vào Bundler của bạn
Bao bọc cấu hình bundler hiện tại của bạn bằng plugin tương thích. Nó sáng tác plugin core Intlayer, thiết lập content watching, và — quan trọng nhất — chèn một module alias để các lệnh gọi
import … from 'vue-i18n'hiện tại của bạn được chuyển hướng trong suốt tới@intlayer/vue-i18ntại thời gian xây dựng. Không cần thay đổi tệp source.Cho Vite:
vite.config.tsSao chép mãSao chép mã vào clipboard
import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import { vueI18nVitePlugin } from "@intlayer/vue-i18n/plugin"; export default defineConfig({ plugins: [vue(), vueI18nVitePlugin()], });vueI18nVitePlugin()bao bọc pluginintlayer()củavite-intlayervà thêm aliasvue-i18n. Sử dụng pluginintlayer()đơn thuần từvite-intlayerbiên dịch dictionaries nhưng không thêm alias — sau đó bạn sẽ cần đổi tên imports thành@intlayer/vue-i18ntheo cách thủ công (xem Bước 4).Cho Nuxt:
Nếu bạn đang sử dụng
@nuxtjs/i18n(tích hợp Nuxt), cài đặtnuxt-intlayervà thêm nó vàonuxt.config.tscủa bạn:bashSao chép mãSao chép mã vào clipboard
npm install nuxt-intlayernuxt.config.tsSao chép mãSao chép mã vào clipboard
export default defineNuxtConfig({ modules: ["nuxt-intlayer"], // Bạn có thể an toàn loại bỏ @nuxtjs/i18n từ các module của bạn });Bạn không còn cần
createI18n()hoặc bootstrap provider thủ công. Intlayer biên dịch tất cả dictionaries tại thời gian xây dựng, vì vậy không có bước tải thời gian chạy. Provider được tạo alias xử lý khởi tạo cho bạn.
Đó là tất cả những gì cần thiết cho hướng dẫn di chuyển nhanh chóng. Ứng dụng của bạn giờ đây chạy trên Intlayer trong khi giữ nguyên mọi lệnh gọi và API vue-i18n.
Các khóa dịch được gõ — tự động. Sau khi Intlayer biên dịch các dictionaries của bạn,
useI18nđược gõ đối với nội dung thực tế của bạn khi bạn chuyển tùy chọnnamespace. 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 các lỗi TypeScript tại thời gian xây dựng — không cần thiết lập bổ sung.tsSao chép mãSao chép mã vào clipboard
// 'about' là một khóa dictionary được đăng kýconst { t } = useI18n({ namespace: "about" });t("counter.label"); // ✓ tự động hoàn thànht("does.not.exist"); // ✗ Lỗi TypeScript
Hoàn tất quá trình di chuyển
Các bước dưới đây là tùy chọn và có thể thực hiện từng bước. Chúng mở khóa bộ tính năng đầy đủ của Intlayer: trình chỉnh sửa trực quan, CMS, các tệp nội dung được gõ, dịch tự động bằng AI, v.v.
Đổi tên import rõ ràng (tùy chọn)
Tùy chọnCác plugin Intlayer đã xử lý aliasing ở cấp bundler. Nếu bạn muốn làm cho 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 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 { useI18n } from 'vue-i18n'import { useI18n } from '@intlayer/vue-i18n'import { createI18n } from 'vue-i18n'import { createI18n } from '@intlayer/vue-i18n'Đây là các thay thế drop-in — không cần thay đổi nào đối với chữ ký cuộc gọi, đối số hoặc các loại trả về.
Bật Tự động hóa 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: "icu", 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 Intlayer CLI để 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
Sau khi các bộ chuyển đổi tương thích được đặt vào, các boilerplate vue-i18n sau đây có thể bị 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 | Tại sao nó không còn cần thiết |
|---|---|
createI18n() calls | Provider của Intlayer khởi tạo mọi thứ tự động; không có bước tải tại runtime. |
Vue plugin registration (app.use(i18n)) | Plugin Intlayer xử lý injection và bootstrapping ở phía sau. |
JSON language bundles (locales/*.json) | Các bundle JSON chỉ cần thiết nếu bạn vẫn sử dụng plugin syncJSON. Sau khi 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 để đi xa hơn, Intlayer tự động phát hiện 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 bên trong ./src). Bạn có thể đặt một file my-component.content.ts ngay cạnh MyComponent.vue của bạn và Intlayer sẽ nhận nó tại thời điểm build mà không cần cấu hình bổ sung — không imports, không registration, không file index tập trung. Điều này làm cho việc đặt cùng vị trí translations với pages và components hoàn toàn không gây khó khăn.
Cấu hình TypeScript
Intlayer sử dụng module augmentation để cung cấp đầy đủ TypeScript intellisense 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ự động tạo:
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ự động tạo ],}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 Sâu 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 — Quản lý nội dung từ xa: Intlayer CMS
- VS Code Extension — Nhận khuyến nghị tự động hoàn thành mã và phát hiện lỗi dịch theo thời gian thực: Intlayer VS Code Extension
- CLI Reference — Danh sách đầy đủ các lệnh CLI: Intlayer CLI
- Intlayer with Vue — Hướng dẫn thiết lập hoàn chỉnh cho Vue: intlayerwithvite+vue.md
- Intlayer with Nuxt — Hướng dẫn thiết lập hoàn chỉnh cho Nuxt: intlayerwithnuxt.md