Đặ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
Bằng cách tích hợp Intlayer MCP Server vào trợ lý AI ưa thích của bạn, bạn có thể truy xuất toàn bộ tài liệu trực tiếp từ ChatGPT, DeepSeek, Cursor, VSCode, v.v.
Xem tài liệu MCP ServerLịch sử phiên bản
- 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 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
Tài liệu: Hàm t trong express-intlayer
Hàm t trong gói express-intlayer là tiện ích cốt lõi để cung cấp các phản hồi được địa phương hóa trong ứng dụng Express của bạn. Nó đơn giản hóa việc quốc tế hóa (i18n) bằng cách chọn nội dung một cách động dựa trên ngôn ngữ ưu tiên của người dùng.
Tổng quan
Hàm t được sử dụng để định nghĩa và truy xuất các bản dịch cho một tập hợp ngôn ngữ nhất định. Nó tự động xác định ngôn ngữ phù hợp để trả về dựa trên cài đặt yêu cầu của client, chẳng hạn như header Accept-Language. Nếu ngôn ngữ ưu tiên không có sẵn, nó sẽ tự động chuyển về locale mặc định được chỉ định trong cấu hình của bạn một cách mượt mà.
Các tính năng chính
- Địa phương hóa động: Tự động chọn bản dịch phù hợp nhất cho client.
- Chuyển về locale mặc định: Chuyển về locale mặc định nếu ngôn ngữ ưu tiên của client không có sẵn, đảm bảo trải nghiệm người dùng liên tục.
- Nhẹ và nhanh: Thiết kế cho các ứng dụng hiệu năng cao, đảm bảo chi phí tài nguyên tối thiểu.
- Hỗ trợ Chế độ Nghiêm ngặt: Thực thi tuân thủ nghiêm ngặt các locale đã khai báo để đảm bảo hành vi đáng tin cậy.
Chữ ký Hàm
t(translations: Record<string, string>): string;Tham số
- translations: Một đối tượng trong đó các khóa là mã locale (ví dụ: en, fr, es-MX) và các giá trị là các chuỗi đã được dịch tương ứng.
Trả về
- Một chuỗi đại diện cho nội dung theo ngôn ngữ ưu tiên của client.
Tải Bộ Xử lý Yêu cầu Quốc tế hóa
Để đảm bảo chức năng quốc tế hóa do express-intlayer cung cấp hoạt động chính xác, bạn phải tải middleware quốc tế hóa ở đầu ứng dụng Express của bạn. Điều này kích hoạt hàm t và đảm bảo xử lý đúng việc phát hiện locale và dịch thuật.
Đặt middleware app.use(intlayer()) trước bất kỳ route nào trong ứng dụng của bạn để đảm bảo tất cả các route đều được hưởng lợi từ tính năng quốc tế hóa:
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
import express, { type Express } from "express";import { intlayer } from "express-intlayer";const app: Express = express();// Tải bộ xử lý yêu cầu quốc tế hóaapp.use(intlayer());// Định nghĩa các route sau khi đã tải middlewareapp.get("/", (_req, res) => { res.send( t({ en: "Hello, World!", fr: "Bonjour le monde!", es: "¡Hola, Mundo!", }) );});Tại sao điều này là cần thiết
- Phát hiện ngôn ngữ: Middleware intlayer xử lý các yêu cầu đến để phát hiện ngôn ngữ ưu tiên của người dùng dựa trên headers, cookies hoặc các phương pháp cấu hình khác.
- Ngữ cảnh dịch thuật: Thiết lập ngữ cảnh cần thiết để hàm t hoạt động chính xác, đảm bảo các bản dịch được trả về đúng ngôn ngữ.
- Ngăn ngừa lỗi: Nếu không có middleware này, việc sử dụng hàm t sẽ gây ra lỗi thời gian chạy vì thông tin ngôn ngữ cần thiết sẽ không có sẵn.
Ví dụ sử dụng
Ví dụ cơ bản
Phục vụ nội dung được địa phương hóa bằng các ngôn ngữ khác nhau:
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
app.get("/", (_req, res) => { res.send( t({ en: "Welcome!", fr: "Bienvenue!", es: "¡Bienvenido!", }) );});Yêu cầu từ phía client:
- Một client với Accept-Language: fr sẽ nhận được Bienvenue!.
- Một client với Accept-Language: es sẽ nhận được ¡Bienvenido!.
- Một client với Accept-Language: de sẽ nhận được Welcome! (ngôn ngữ mặc định).
Xử lý lỗi
Cung cấp thông báo lỗi bằng nhiều ngôn ngữ:
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
app.get("/error", (_req, res) => { res.status(500).send( t({ en: "An unexpected error occurred.", fr: "Une erreur inattendue s'est produite.", es: "Ocurrió un error inesperado.", }) );});Sử dụng các biến thể ngôn ngữ
Chỉ định các bản dịch cho các biến thể ngôn ngữ cụ thể:
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
app.get("/greet", (_req, res) => { res.send( t({ en: "Hello!", "en-GB": "Hello, mate!", fr: "Bonjour!", "es-MX": "¡Hola, amigo!", "es-ES": "¡Hola!", }) );});Các Chủ Đề Nâng Cao
Cơ Chế Dự Phòng (Fallback Mechanism)
Nếu một locale ưu tiên không có sẵn, hàm t sẽ tự động chuyển sang locale mặc định được định nghĩa trong cấu hình:
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
import { Locales, type IntlayerConfig } from "intlayer";const config = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, },} satisfies IntlayerConfig;export default config;Ví dụ:
- Nếu defaultLocale là Locales.CHINESE và một client yêu cầu Locales.DUTCH, bản dịch trả về sẽ mặc định là giá trị của Locales.CHINESE.
- Nếu defaultLocale không được định nghĩa, hàm t sẽ tự động chuyển sang giá trị của Locales.ENGLISH.
Bắt Buộc Chế Độ Strict
Cấu hình hàm t để bắt buộc tuân thủ nghiêm ngặt các locale đã khai báo:
| Chế độ | Hành vi |
|---|---|
| strict | Tất cả các locale đã khai báo phải có bản dịch. Thiếu locale sẽ gây lỗi. |
| inclusive | Các locale đã khai báo phải có bản dịch. Thiếu locale sẽ cảnh báo nhưng vẫn chấp nhận. |
| loose | Bất kỳ locale nào tồn tại đều được chấp nhận, kể cả khi không được khai báo. |
Ví dụ cấu hình:
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
import { type IntlayerConfig } from "intlayer";const config = { // ... Cấu hình hiện có của bạn internationalization: { // ... Cấu hình quốc tế hóa hiện có của bạn strictMode: "strict", // Bắt buộc chế độ nghiêm ngặt },} satisfies IntlayerConfig;export default config;Tích hợp TypeScript
Hàm t an toàn về kiểu khi sử dụng với TypeScript. Định nghĩa một đối tượng bản dịch an toàn về kiểu:
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
import { type LanguageContent } from "express-intlayer";const translations: LanguageContent<string> = { en: "Good morning!", fr: "Bonjour!", es: "¡Buenos días!",};app.get("/morning", (_req, res) => { res.send(t(translations));});Các lỗi phổ biến và cách khắc phục
| Vấn đề | Nguyên nhân | Giải pháp |
|---|---|---|
| Hàm t không hoạt động | Middleware chưa được tải | Đảm bảo app.use(intlayer()) được thêm trước các route. |
| Lỗi thiếu bản dịch | Chế độ Strict được bật nhưng không có đủ các locale | Cung cấp đầy đủ các bản dịch cần thiết. |
Mẹo sử dụng hiệu quả
- Tập trung quản lý bản dịch: Sử dụng một module tập trung hoặc các file JSON để quản lý bản dịch nhằm cải thiện khả năng bảo trì.
- Xác thực bản dịch: Đảm bảo mỗi biến thể ngôn ngữ đều có bản dịch tương ứng để tránh việc fallback không cần thiết.
- Kết hợp với i18n phía frontend: Đồng bộ hóa với hệ thống quốc tế hóa phía frontend để mang lại trải nghiệm người dùng liền mạch trên toàn ứng dụng.
- Đánh giá hiệu năng: Kiểm tra thời gian phản hồi của ứng dụng khi thêm bản dịch để đảm bảo ảnh hưởng tối thiểu.
Kết luận
Hàm t là một công cụ mạnh mẽ cho việc quốc tế hóa backend. Bằng cách sử dụng hiệu quả, bạn có thể tạo ra một ứng dụng thân thiện với người dùng và bao quát hơn cho đối tượng toàn cầu. Để biết cách sử dụng nâng cao và các tùy chọn cấu hình chi tiết, hãy tham khảo tài liệu.