Налаштування локалізації контенту Contentful

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування локалізації контенту Contentful
Проста
від 1 робочого дня до 3 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування локалізації контенту Contentful

Contentful підтримує кілька локалей на рівні платформи: кожне поле Entry зберігає окреме значення для кожної мови. Локалі налаштовуються в Space Settings, а не в Content Model — це важливе архітектурне відмінність від плагінної локалізації в WordPress.

Налаштування локалей у Space

В Contentful Web App: Settings → Locales → Add locale. Основна локаль (default locale) визначає fallback: якщо поле не перекладене — показується значення default-локалі.

При програмній налаштуванні через CMA:

import { createClient } from 'contentful-management';

const env = await cmaClient.getSpace(spaceId).then(s => s.getEnvironment('master'));

// Додавання локалі
await env.createLocale({
  name: 'Ukrainian',
  code: 'uk',
  fallbackCode: 'en-US', // fallback на англійську
  optional: true, // поле не обов'язково перекладати
});

Структура даних локалізованих полів

В API-відповіді кожне поле повертається у вигляді об'єкту з ключами по коду локалі:

{
  "fields": {
    "title": {
      "en-US": "How to build a CMS",
      "ru": "Как создать CMS",
      "uk": "Як створити CMS"
    },
    "heroImage": {
      "en-US": { "sys": { "type": "Link", "id": "abc123" } }
    }
  }
}

Поля, у яких вимкнена локалізація в Content Type, повертають одне значення без ключа локалі.

Запит з потрібною локаллю

// Запит контенту на конкретній мові
const entries = await client.getEntries<TypeBlogPostSkeleton>({
  content_type: 'blogPost',
  locale: 'uk', // SDK автоматично обере uk-значення
});

// entries.items[0].fields.title — уже строка, не об'єкт

Next.js i18n + Contentful

// next.config.ts
i18n: {
  locales: ['en', 'ru', 'uk'],
  defaultLocale: 'en',
}

// app/[locale]/blog/page.tsx
export default async function BlogPage({ params }) {
  const contentfulLocale = localeMap[params.locale]; // 'en' -> 'en-US'
  const posts = await client.getEntries({
    content_type: 'blogPost',
    locale: contentfulLocale,
    order: ['-fields.publishedAt'],
  });
  return <BlogList posts={posts.items} />;
}

Fallback-поведінка: якщо uk-локаль не заповнена, Contentful автоматично повертає значення en-US при умові налаштування fallbackCode. На фронтенді це прозоро — немає потреби обробляти відсутні переводи.

Позначення полів як таких, що не вимагають перекладу

В Content Type Editor кожне поле має чекбокс Enable localization for this field. Поля типу slug, publishedAt, числові ідентифікатори — зазвичай не локалізуються. Це скорочує роботу перекладачів та зменшує розмір API-відповіді.

Типовий час налаштування локалізації для існуючого проекту з 3–5 локалями та 5–10 Content Types — 1–2 дні, включаючи оновлення фронтенд-логіки та налаштування маршрутизації.