Інтернаціоналізація (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 день.







