Интернационализация (i18n) в Strapi
Strapi имеет встроенный плагин i18n для многоязычного контента. Каждая запись существует в нескольких локалях независимо. API возвращает контент нужной локали по параметру ?locale=.
Включение i18n
# Плагин i18n входит в комплект Strapi
# Включить в config/plugins.js:
module.exports = {
i18n: { enabled: true },
}
В Admin: Settings → Internationalization → Add a locale. Добавить ru, en, uk.
Локализация Content Type
В Content-Type Builder для каждого поля включить «Enable localization»:
// src/api/article/content-types/article/schema.json
{
"options": { "draftAndPublish": true },
"pluginOptions": { "i18n": { "localized": true } },
"attributes": {
"title": {
"type": "string",
"pluginOptions": { "i18n": { "localized": true } }
},
"content": {
"type": "richtext",
"pluginOptions": { "i18n": { "localized": true } }
},
"slug": {
"type": "uid",
"targetField": "title",
"pluginOptions": { "i18n": { "localized": true } }
},
"publishedAt": {
"type": "datetime"
// НЕ локализовано — одна дата для всех языков
}
}
}
API-запросы с локалью
# Получить статьи на русском (default)
GET /api/articles?locale=ru
# Получить статьи на английском
GET /api/articles?locale=en
# Получить статью со всеми переводами
GET /api/articles/1?locale=all
# Создать перевод
POST /api/articles
{ "data": { "title": "English Title", "locale": "en", "localizations": [1] } }
Интеграция с Next.js i18n
// lib/strapi.ts
export async function getArticles(locale: string = 'ru') {
const res = await fetch(
`${process.env.STRAPI_URL}/api/articles?locale=${locale}&populate=cover,category`,
{ headers: { Authorization: `Bearer ${process.env.STRAPI_API_TOKEN}` } }
)
return res.json()
}
// next.config.js
module.exports = {
i18n: {
locales: ['ru', 'en', 'uk'],
defaultLocale: 'ru',
},
}
// app/[locale]/articles/page.tsx
export default async function ArticlesPage({ params }: { params: { locale: string } }) {
const { data } = await getArticles(params.locale)
return <ArticleList articles={data} />
}
Переключатель языков в Strapi Admin
Strapi admin автоматически показывает переключатель локалей в форме редактирования при включённом i18n. Переводы привязаны к одному документу — можно переходить между языками и видеть прогресс перевода.
Сроки
Настройка i18n для 3 языков с локализацией 3–5 content types — 1 день.







