Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Ініціалізація історії"v5.5.1029.06.2025
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюIf 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 у express-intlayer
Функція t у пакеті express-intlayer, це основна утиліта для надання локалізованих відповідей у вашому додатку Express. Вона спрощує інтернаціоналізацію (i18n), динамічно підбираючи контент залежно від бажаної мови користувача.
Огляд
Функція t використовується для визначення та отримання перекладів для заданого набору мов. Вона автоматично визначає відповідну мову для повернення на основі налаштувань запиту клієнта, таких як заголовок Accept-Language. Якщо бажана мова недоступна, вона коректно повертає локаль за замовчуванням, вказану у вашій конфігурації.
Ключові можливості
- Динамічна локалізація: автоматично обирає найвідповідніший переклад для клієнта.
- Повернення до локалі за замовчуванням: у разі недоступності бажаної мови використовується локаль за замовчуванням, що забезпечує безперервність користувацького досвіду.
- Легкий і швидкий: спроектовано для високопродуктивних застосунків, забезпечуючи мінімальні накладні витрати.
- Підтримка Strict Mode: Забезпечує суворе дотримання оголошених локалей для надійної роботи.
Підпис функції
Скопіюйте код у буфер обміну
t(translations: Record<string, string>): string;Параметри
translations: Об'єкт, де ключі, це коди локалей (наприклад,en,fr,es-MX), а значення, відповідні перекладені рядки.
Повертає
- Рядок, що представляє вміст мовою, яку віддає перевагу клієнт.
Завантаження обробника запитів інтернаціоналізації
Щоб забезпечити правильну роботу функціональності інтернаціоналізації, що надається express-intlayer, ви повинні завантажити middleware інтернаціоналізації на початку вашого Express-застосунку. Це активує функцію t і гарантує коректне визначення локалі та обробку перекладів.
Розмістіть middleware app.use(intlayer()) перед будь-якими маршрутами у вашому додатку, щоб усі маршрути використовували інтернаціоналізацію:
Скопіюйте код у буфер обміну
import express, { type Express } from "express";
import { intlayer } from "express-intlayer";
const app: Express = express();
// Завантажте обробник запитів інтернаціоналізації
app.use(intlayer());
// Визначте маршрути після завантаження middleware
app.get("/", (_req, res) => {
res.send(
t({
en: "Hello, World!",
fr: "Bonjour le monde!",
es: "¡Hola, Mundo!",
})
);
});Чому це потрібно
- Виявлення локалі: проміжне ПЗ
intlayerобробляє вхідні запити, щоб визначити переважну локаль користувача на основі заголовків, cookies або інших налаштованих методів. - Контекст перекладу: встановлює необхідний контекст для функції
t, щоб вона працювала правильно, гарантуючи повернення перекладів потрібною мовою. - Запобігання помилкам: без цього middleware використання функції
tпризведе до помилок виконання, оскільки необхідна інформація про локаль не буде доступна.
Приклади використання
Базовий приклад
Подача локалізованого контенту різними мовами:
Скопіюйте код у буфер обміну
app.get("/", (_req, res) => {
res.send(
t({
uk: "Ласкаво просимо!",
en: "Welcome!",
fr: "Bienvenue!",
es: "¡Bienvenido!",
})
);
});Запити клієнтів:
- Клієнт з
Accept-Language: frотримаєBienvenue!. - Клієнт з
Accept-Language: esотримає¡Bienvenido!. - Клієнт з
Accept-Language: deотримаєWelcome!(локаль за замовчуванням).
Обробка помилок
Надайте повідомлення про помилки кількома мовами:
Скопіюйте код у буфер обміну
app.get("/error", (_req, res) => {
res.status(500).send(
t({
uk: "Сталася непередбачена помилка.",
en: "An unexpected error occurred.",
fr: "Une erreur inattendue s'est produite.",
es: "Ocurrió un error inesperado.",
})
);
});Використання варіантів локалі
Specify translations for locale-specific variants:
Скопіюйте код у буфер обміну
app.get("/greet", (_req, res) => { res.send( t({ en: "Hello!", "en-GB": "Hello, mate!", fr: "Bonjour!", "es-MX": "¡Hola, amigo!", "es-ES": "¡Hola!", }) );});Додаткові теми
Механізм fallback
Якщо бажана локаль недоступна, функція t підставить значення з локалі за замовчуванням, визначеної в конфігурації (defaultLocale):
Скопіюйте код у буфер обміну
import { Locales, type IntlayerConfig } from "intlayer";
const config = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
defaultLocale: Locales.ENGLISH,
},
} satisfies IntlayerConfig;
export default config;Наприклад:
- Якщо
defaultLocaleвстановлено вLocales.CHINESE, а клієнт запитуєLocales.DUTCH, повернутий переклад за замовчуванням буде значеннямLocales.CHINESE. - Якщо
defaultLocaleне визначено, функціяtвикористає значенняLocales.ENGLISH.
Примусове застосування режиму strict
Налаштуйте функцію t для забезпечення суворої відповідності задекларованим локалям:
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Режим | Поведінка |
|---|---|
strict | Усі задекларовані локалі повинні мати переклади. Відсутні локалі призведуть до помилок. |
inclusive | Задекларовані локалі повинні мати переклади. Відсутні локалі спричиняють попередження, але приймаються. |
loose | Будь-яка наявна локаль приймається, навіть якщо не задекларована. |
Приклад конфігурації:
Скопіюйте код у буфер обміну
import { type IntlayerConfig } from "intlayer";
const config = {
// ... Ваша існуюча конфігурація
internationalization: {
// ... Ваші існуючі налаштування інтернаціоналізації
strictMode: "strict", // Застосовує строгий режим
},
} satisfies IntlayerConfig;
export default config;Інтеграція з TypeScript
Функція t є типобезпечною при використанні з TypeScript. Визначте типобезпечний об'єкт перекладів:
Скопіюйте код у буфер обміну
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));
});Загальні помилки та усунення неполадок
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Проблема | Причина | Рішення |
|---|---|---|
t функція не працює | Middleware не підключено | Переконайтеся, що app.use(intlayer()) додано перед маршрутами. |
| Помилка відсутніх перекладів | Увімкнено строгий режим без усіх локалей | Надайте всі необхідні переклади. |
Поради для ефективного використання
- Централізуйте переклади: Використовуйте централізований модуль або JSON-файли для керування перекладами, щоб покращити підтримуваність.
- Перевіряйте переклади: Переконайтеся, що кожен мовний варіант має відповідний переклад, щоб уникнути непотрібного fallback.
- Поєднуйте з фронтенд i18n: Синхронізуйте з фронтендовою інтернаціоналізацією для безперервного користувацького досвіду в додатку.
- Вимірюйте продуктивність: Перевірте час відгуку вашого додатку при додаванні перекладів, щоб забезпечити мінімальний вплив.
Висновок
Функція t, потужний інструмент для інтернаціоналізації бекенду. Правильно використовуючи її, ви можете створити більш інклюзивний та зручний додаток для глобальної аудиторії. Для просунутого використання та детальних опцій конфігурації див. документацію.