Stop Managing Translations in JSON Files — There's a Better Way

#i18n#localization#nextjs#react#translations

TL;DR

Управление переводами в JSON файлах становится проблемой с ростом приложения. Better i18n предлагает современный подход с интеграцией в GitHub, CDN доставкой и AI-переводами, упрощая процесс локализации.

Введение

Каждое мультиязычное приложение начинается с простой структуры JSON файлов для переводов. Однако со временем количество ключей увеличивается, переводы теряются, а поддержка становится сложной. Проблема не в JSON, а в том, что переводы находятся вне рабочего процесса разработки. Better i18n решает эту проблему, интегрируя переводы в процесс разработки и обеспечивая автоматизацию и контроль.

Основная часть

Проблемы управления переводами в JSON

С ростом приложения возникают следующие проблемы:

Решение с Better i18n

Better i18n предлагает следующий рабочий процесс:

  1. Разработчик добавляет t('pricing.title') в коде.
  2. CLI сканирует код, обнаруживает новый ключ.
  3. Ключ появляется в панели переводов.
  4. Переводчик или AI добавляет перевод.
  5. Better i18n создает PR в GitHub репозитории.
  6. Команда проверяет PR → CI проверки проходят → мердж.
  7. CDN кэш обновляется → пользователи видят новый перевод.

Установка и использование в Next.js

Установите необходимые пакеты:

npm install @better-i18n/next @better-i18n/cli

Настройте middleware:

// middleware.ts
import { createI18nMiddleware } from '@better-i18n/next';

export default createI18nMiddleware({
  locales: ['en', 'tr', 'de', 'ja'],
  defaultLocale: 'en',
});

export const config = {
  matcher: ['/((?!api|_next|.*\\..*).*)'],
};

Используйте переводы в компонентах:

import { useTranslations } from '@better-i18n/next';

export default function PricingPage() {
  const t = useTranslations('pricing');

  return (
    <main>
      <h1>{t('title')}</h1>
      <p>{t('subtitle')}</p>
      {/* другие элементы */}
    </main>
  );
}

CLI и автоматизация

Сканируйте код на наличие ключей:

npx @better-i18n/cli scan

Синхронизируйте результаты с панелью переводов:

npx @better-i18n/cli sync

Практическое применение

Better i18n поддерживает ICU MessageFormat, обеспечивая корректную обработку множественных форм, дат и чисел. AI-переводы учитывают контекст и глоссарий, что повышает качество переводов.

Для мобильных приложений используется пакет @better-i18n/expo, обеспечивающий оффлайн поддержку и обновления переводов без пересборки приложения.

Заключение

Better i18n предлагает современный подход к управлению переводами, интегрируя их в процесс разработки и обеспечивая автоматизацию и контроль. Это позволяет избежать проблем с JSON файлами и упрощает процесс локализации для разработчиков и переводчиков.

Ссылки:


Источник: https://dev.to/erayg/stop-managing-translations-in-json-files-theres-a-better-way-4fd6