Đặ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 các hook useIntlayer / useLocale và middleware Astro.locals vào astro-intlayer"v9.5.519/9/2026
- "Cập nhật cách sử dụng API useIntlayer của Solid sang truy cập thuộc tính trực tiếp"v8.9.04/5/2026
- "Thêm lệnh init"v7.5.930/12/2025
- "Cập nhật tích hợp Astro, cấu hình và cách sử dụng"v6.2.03/10/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 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 trang web Astro của bạn với Intlayer
Mục lục
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ư astro-i18n 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ư:
Intlayer được tối ưu hóa để hoạt động hoàn hảo với Astro bằng cách cung cấp định tuyến đa ngôn ngữ, sơ đồ trang web và tất cả các tính năng cần thiết để mở rộng quy mô quốc tế hóa (i18n).
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.
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.
Hướng dẫn từng bước để cấu hình Intlayer trong Astro
Xem mẫu ứng dụng trên GitHub.
Cài đặt các phụ thuộc
Cài đặt các gói cần thiết bằng trình quản lý gói ưa thích của bạn:
bashSao chép mãSao chép mã vào clipboard
flag
--interactivelà tuỳ chọn. Sử dụngintlayer-cli initnếu bạn là một 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
intlayer Gói cốt lõi cung cấp các công cụ i18n để quản lý cấu hình, bản dịch, khai báo nội dung, chuyển mã và các lệnh CLI.
astro-intlayer Bao gồm plugin tích hợp Astro để tích hợp Intlayer với Vite bundler, một middleware phân giải ngôn ngữ của mỗi yêu cầu vào
Astro.locals.intlayer, và các hookuseIntlayer/useDictionary/useLocale. Cùng một đường dẫn import sẽ phân giải thành triển khai máy chủ trong frontmatter.astrocủa bạn và thành triển khai máy khách (được hỗ trợ bởivanilla-intlayer) trong các khối<script>.
Cấu hình dự án của bạn
Kiến trúc
Trong kiến trúc này, tích hợp
intlayer()được đăng ký trongastro.config.tssẽ xây dựng các từ điển của bạn và thêm một middleware giúp xử lý locale của mỗi yêu cầu và hiển thị nó trênAstro.locals.intlayer. Các trang nằm dưới phân đoạn restsrc/pages/[...locale]/, do đó locale mặc định được phân phối mà không có tiền tố và mọi locale khác đều có URL riêng biệt. Các tệp.astrođọc nội dung bằng các hookuseIntlayer/useLocalecủaastro-intlayer, và các khai báo nội dung được đặt cùng với các component của bạn trongsrc/.bashSao chép mãSao chép mã vào clipboard
Cấu hình
Tạo một file cấu hình để xác định các ngôn ngữ của ứng dụng:
intlayer.config.tsSao chép mãSao chép mã vào clipboard
Thông qua file cấu hình này, bạn có thể thiết lập các URL bản địa hóa, chuyển hướng middleware, tên cookie, vị trí và phần mở rộng của các khai báo nội dung, tắt log Intlayer trong console, v.v. Để biết danh sách đầy đủ các tham số có sẵn, hãy xem tài liệu cấu hình.
Tích hợp Intlayer vào cấu hình Astro của bạn
Thêm plugin
intlayervào cấu hình Astro của bạn.astro.config.tsSao chép mãSao chép mã vào clipboard
Plugin tích hợp
intlayer()được sử dụng để tích hợp Intlayer với Astro. Nó đảm bảo việc tạo các file khai báo nội dung và theo dõi chúng trong chế độ phát triển. Nó xác định các biến môi trường Intlayer bên trong ứng dụng Astro và cung cấp các alias để tối ưu hóa hiệu suất.Khai báo nội dung của bạn
Tạo và quản lý các khai báo nội dung của bạn để lưu trữ các bản dịch:
src/app.content.tsxSao chép mãSao chép mã vào clipboard
Các khai báo nội dung có thể được định nghĩa ở bất kỳ đâu trong ứng dụng của bạn, miễn là chúng nằm trong
contentDir(mặc định là./src) và khớp với phần mở rộng của file khai báo nội dung (mặc định là.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Để biết thêm thông tin, hãy xem tài liệu khai báo nội dung.
Sử dụng nội dung trong Astro
Sử dụng từ điển của bạn trong các tệp
.astrovới các hook được xuất bởiastro-intlayer. Chúng chia sẻ chữ ký củareact-intlayer:useIntlayer("key")trả về nội dung của từ điển vàuseLocale()trả về ngôn ngữ hiện tại mà không cần truyền tham số.Ngôn ngữ đến từ middleware
astro-intlayer, mà tích hợp tự động đăng ký trướcsrc/middleware.tscủa riêng bạn. Nó phân giải ngôn ngữ cho mỗi yêu cầu, từ tiền tố URL, sau đó đến ngôn ngữ được lưu trữ bởi máy khách (cookie hoặc tiêu đề), sau đó đếnAccept-Language, và lưu trữ trongAstro.locals.intlayer. Các trang được kết xuất trước chỉ sử dụng URL vì chúng được kết xuất một lần cho mọi khách truy cập.Bạn cũng nên thêm siêu dữ liệu SEO như hreflang và liên kết chuẩn (canonical) vào mỗi trang và bao gồm bộ chuyển đổi ngôn ngữ để cho phép người dùng thay đổi ngôn ngữ.
src/pages/index.astroSao chép mãSao chép mã vào clipboard
Astro.locals.intlayercũng hiển thịlocale,defaultLocalevàavailableLocalescho middleware và điểm cuối của riêng bạn. Truyền ngôn ngữ hoặc bộ chọn làm đối số thứ hai (useIntlayer("app", "fr"),useIntlayer("faq", { item: 2 })) để ghi đè ngôn ngữ yêu cầu cho một lệnh gọi.Định tuyến bản địa hóa
Tạo các đoạn route động (ví dụ:
src/pages/[locale]/index.astro) để phục vụ các trang bản địa hóa:src/pages/[locale]/index.astroSao chép mãSao chép mã vào clipboard
Tích hợp Astro thêm middleware Vite giúp định tuyến nhận biết ngôn ngữ và định nghĩa môi trường trong quá trình phát triển. Bạn cũng có thể sử dụng logic của riêng mình hoặc các công cụ
intlayernhưgetLocalizedUrlđể liên kết giữa các ngôn ngữ.Thêm bộ chuyển đổi ngôn ngữ
Để cho phép người dùng chuyển đổi giữa các ngôn ngữ, bạn có thể tạo một thành phần
LocaleSwitcher. Thành phần này sẽ hiển thị danh sách tất cả các ngôn ngữ được hỗ trợ và liên kết đến cùng một trang trong mỗi ngôn ngữ.src/components/LocaleSwitcher.astroSao chép mãSao chép mã vào clipboard
Lưu ý về tính bền vững:
setLocaletừuseLocalephía client lưu tùy chọn ngôn ngữ của người dùng vào cookie. Điều này cho phép Intlayer ghi nhớ lựa chọn và tự động chuyển hướng người dùng đến ngôn ngữ ưa thích của họ trong các lần truy cập sau: các trang được render theo yêu cầu (một adapter vớioutput: 'server'hoặcprerender = false) được chuyển hướng bởi middleware Intlayer trước khi bất kỳ mã HTML nào được gửi đi, trong khi các trang được render sẵn, được phân phối dưới dạng tệp tĩnh, được chuyển hướng bởi một đoạn script nhỏ mà tích hợp đưa vào mỗi trang. Đặtrouting.enableProxythànhfalseđể tắt cả hai. Trongastro dev, cookie bị bỏ qua như một nguồn chuyển hướng trừ khirouting.enableProxyđược đặt thànhtrue, do đó cookie cũ không thể chiếm quyền kiểm soát các trang bạn đang phát triển.Khả năng tương thích giữa máy chủ và máy khách:
astro-intlayerphân giải thành các hook máy chủ trong frontmatter (đọcAstro.locals) và thành các hook máy khách củavanilla-intlayertrong các khối<script>và đảo (islands), với cùng tên và cấu trúc nội dung.setLocalevàonChangechỉ hoạt động trên máy khách, hãy gọiinstallIntlayer()một lần ở đó để khởi tạo bộ lưu trữ máy khách.astro-intlayer/clienthiển thị mục nhập máy khách một cách rõ ràng.Sitemap và Robots.txt
Intlayer cung cấp các tiện ích để tự động tạo sơ đồ trang web (sitemap) bản địa hóa và file robots.txt của bạn.
Sitemap
Intlayer comes with a built-in sitemap generator to help you create a sitemap for your application easily. It handles localized routes and adds the necessary metadata for search engines.
The Intlayer generated sitemap supports the
xhtml:linknamespace (Hreflang XML Extensions). Unlike the default sitemap generators that only list raw URLs, Intlayer automatically creates the required bidirectional links between all language versions of a page (e.g.,/about,/about?lang=fr, and/about?lang=es). This ensures search engines correctly index and serve the right language version to the right audience.Tạo
src/pages/sitemap.xml.tsđể tạo sơ đồ trang web bao gồm tất cả các route bản địa hóa của bạn.src/pages/sitemap.xml.tsSao chép mãSao chép mã vào clipboard
Robots.txt
Tạo
src/pages/robots.txt.tsđể kiểm soát hoạt động thu thập thông tin của các công cụ tìm kiếm.src/pages/robots.txt.tsSao chép mãSao chép mã vào clipboard
Trích xuất nội dung các thành phần của bạn
Tùy chọnNếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
Để đơn giản hóa quy trình này, Intlayer đề xuất một trình biên dịch / trình trích xuất để chuyển đổi các thành phần của bạn và trích xuất nội dung.
Để thiết lập, bạn có thể thêm phần
compilervào tệpintlayer.config.tscủa mình:intlayer.config.tsSao chép mãSao chép mã vào clipboard
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Phần còn lại của cấu hình compiler: { /** * Cho biết trình biên dịch có nên được bật hay không. */ enabled: true, /** * Xác định đường dẫn các tệp đầu ra */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ. */ saveComponents: false, /** * Tiền tố khóa từ điển */ dictionaryKeyPrefix: "", }, }; export default config;Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
bashSao chép mãSao chép mã vào clipboard
Build ứng dụng của bạn để chuyển đổi các thành phần và trích xuất nội dung
bashSao chép mãSao chép mã vào clipboard
Cấu hình TypeScript
Intlayer sử dụng cơ chế mở rộng module (module augmentation) để tận dụng TypeScript, làm cho cơ sở mã của bạn mạnh mẽ hơn.


Đảm bảo cấu hình TypeScript của bạn bao gồm các kiểu dữ liệu được tạo tự động.
Sao chép mã vào clipboard
Cấu hình Git
Khuyên bạn nên bỏ qua các file được tạo bởi Intlayer. Điều này ngăn chúng được commit vào kho lưu trữ Git của bạn.
Để làm điều đó, hãy thêm các hướng dẫn sau vào file .gitignore của bạn:
Sao chép mã vào clipboard
Tiện ích mở rộng VS Code
Để cải thiện trải nghiệm phát triển của bạn với Intlayer, bạn có thể cài đặt tiện ích mở rộng Intlayer chính thức cho VS Code.
Tiện ích này sẽ cung cấp:
- Tự động hoàn thành cho các khóa dịch.
- Phát hiện lỗi thời gian thực cho các bản dịch còn thiếu.
- Xem trước trực tiếp nội dung đã dịch.
- Các hành động nhanh để tạo và cập nhật bản dịch dễ dàng.
Để biết thêm thông tin về cách sử dụng tiện ích này, hãy xem tài liệu tiện ích VS Code.
Tìm hiểu sâu hơn
Nếu bạn muốn tìm hiểu thêm, bạn cũng có thể triển khai Visual Editor hoặc sử dụng CMS để quản lý nội dung bên ngoài.
Các Câu Hỏi Thường Gặp
Astro cung cấp định tuyến i18n cho tiền tố URL, nhưng để việc quản lý nội dung cho bạn:
i18ntích hợp của Astro cùng các tệp JSON/TS thủ công: không có kiểm tra kiểu, quy tắc số nhiều hay công cụ kiểm tra bản dịch thiếu.i18nexthoặc các thư viện đảo riêng biệt (vue-i18n,svelte-i18n): mỗi loại đảo cần một thư viện đầy đủ với các catalog riêng.Intlayer: một lớp nội dung chia sẻ duy nhất cho cả trang Astro và mọi framework đảo, biên dịch lúc build, có kiểu dữ liệu đầy đủ, AI dịch thuật, visual editor và CMS.
Lợi thế then chốt là cùng một từ điển phục vụ cả trang .astro và các đảo React, Vue, Svelte, Solid, Preact hoặc Lit. Xem lý do chọn Intlayer.
Ít hơn đáng kể so với các giải pháp dựa trên namespace, vì trang không bao giờ tải catalog mà nó không hiển thị. Các trang Astro được hiển thị tại thời điểm build, do đó chỉ có HTML đã dịch được gửi đi mà không kèm theo từ điển; chỉ các đảo (island) tương tác mới nhận từ điển. Từ điển động chia nội dung theo từng locale, giảm kích thước bundle tới 50%. Xem tối ưu hóa bundle và benchmark.
Phần lớn là có. Làm theo hướng dẫn di chuyển từ i18next. Bạn cũng có thể di chuyển dần dần thông qua plugin sync JSON.
Có. Plugin sync JSON giữ cho các tệp /messages/{locale}/{namespace}.json của bạn là nguồn sự thật duy nhất và tạo các từ điển Intlayer từ chúng theo cả hai hướng. Plugin sync PO làm điều tương tự cho các catalog gettext, và các tệp theo locale cho phép bạn chia nội dung theo ngôn ngữ thay vì nhóm các locale trong một tệp.
Không. Chạy npx intlayer extract và Intlayer sẽ đọc các tệp của bạn, trích xuất các chuỗi dành cho người dùng và tạo tệp .content bên cạnh mỗi tệp, nhờ đó bạn xem lại diff thay vì sao chép chuỗi vào catalog thủ công. Bước 15 của hướng dẫn này mô tả chi tiết.
Để tự động hóa hoàn toàn, Intlayer Compiler thực hiện việc tương tự trong quá trình build: quét mã nguồn trên mỗi thay đổi, tạo từ điển và đồng bộ hóa với HMR.
Hai giới hạn đáng lưu ý trước khi bạn bật compiler. Nó hoạt động bằng phân tích tĩnh, do đó các chuỗi chỉ tồn tại khi runtime, chẳng hạn như mã lỗi API hoặc các trường CMS, nằm ngoài phạm vi tiếp cận. Và nó phải phân biệt văn bản hiển thị cho người dùng với logic ứng dụng như className="active" hoặc mã trạng thái, điều này cần một vài chú thích trong một codebase lớn. Lệnh extract tránh cả hai điều này bằng cách giữ bạn luôn kiểm soát.
Năm công cụ, tất cả đều là tùy chọn:
- VS Code extension: nhảy từ khóa
useIntlayerđến tệp nội dung khai báo nó, trích xuất nội dung từ component, và chạy build, fill, test, push và pull từ command palette hoặc tab Intlayer. - LSP server: trải nghiệm tương tự trong bất kỳ trình soạn thảo nào hỗ trợ LSP, với go to definition, xem trước giá trị bản dịch khi hover, tự động hoàn thành khóa, và cảnh báo khi khóa chưa được khai báo. Hỗ trợ cả các lệnh gọi
i18next,react-i18next,next-intlvàuse-intl. - MCP server: cung cấp tài liệu và CLI Intlayer cho Cursor, VS Code, Claude Desktop, Claude Code và ChatGPT.
- Agent skills: các kỹ năng chuyên biệt như
intlayer-config,intlayer-clivàintlayer-content. - ESLint plugin: quy tắc
no-raw-textphát hiện các chuỗi chưa được bản địa hóa.
