Все кейсы

Мультиязычная архитектура для open-source платформы

Спроектировал i18n-архитектуру open-source проекта с поддержкой 11 языков. Новый язык добавляется за 30 минут без знания кода.

NuxtNuxt UIPiniaVueUse
Мультиязычная архитектура для open-source платформы

Задача

NextOrders - open-source платформа доставки, задумывалась для разных стран.  Стандартный подход с JSON-файлами переводов быстро превращается в хаос: ключи рассинхронизируются, а контрибьюторы из других стран не могут добавить свой язык без погружения в код.  Нужно было сделать так, чтобы перевод мог добавить переводчик, а не программист.

Решение

Построил i18n на nuxt-i18n: один JSON-файл на язык, плоские ключи с неймспейсами.  Все ключи типизированы через TypeScript - IDE подсказывает и ругается на пропущенные переводы.  Сделал locale-template.json с комментариями - контрибьютор копирует, переименовывает, переводит.  Pluralization через ICU - русский, арабский, любой язык работает из коробки.  Роутинг с префиксами, автоопределение языка, hreflang теги и RTL-поддержка через CSS logical properties.

Результат

Платформа поддерживает 11 языков.  Контрибьюторы из 5 стран добавили свои языки сами - в среднем 30 минут на 120 ключей.  Ни один PR с переводом не потребовал помощи с кодом.

144

Похожие кейсы

Пайплайн транскодирования аудио
Серверный пайплайн: загрузка FLAC/MP3/OGG, транскодирование в нужные форматы, стриминг через S3. Lossless воспроизведение в браузере с любого устройства.
NuxtTypeScriptS3Node.js
Интеграция каталога MusicBrainz
Подключил каталог MusicBrainz (127 000+ артистов), скробблинг в ListenBrainz, Telegram Mini App для мобильного доступа к библиотеке.
NuxtTypeScriptTelegram Mini App
SEO-архитектура для сайтов доставки
Отдельные страницы товаров с Schema.org разметкой, SSR, мета-теги. Клиентские сайты выходят в топ Google по локальным запросам.
NuxtTypeScriptTailwind CSS
Онлайн-оплата без комиссии для ресторанов
Интеграция прямого эквайринга для клиентов SaaS-платформы доставки еды. 0% комиссии на заказы вместо 3-5% у агрегаторов.
NuxtTypeScriptNode.js

Нужно решить похожую задачу?

Напишите - обсудим ваш проект или идею.

© 2026 Николай Косарев