Политика резервного языка (fallback) по локалям
Как docs AACSearch обрабатывают отсутствующие переводы между en, de, es, fr и ru. Описывает пол EN, правило RU-паритета и пометку stub-страниц.
AACSearch поставляет docs в пяти локалях: en, de, es, fr, ru. Переключатель локали всегда ведёт на реальную страницу — он не отдаёт 404. Эта страница объясняет, как это гарантируется и что видит читатель, когда перевод ещё не готов.
Три tier'а
| Tier | Локаль | Политика |
|---|---|---|
| 1 | en | Источник истины. Каждая страница сначала появляется здесь. |
| 1 | ru | Пол политики (Invariant 10). Каждая страница /en/** ДОЛЖНА существовать по тому же пути в /ru/**. CI ломается при разрыве. |
| 2 | de, es, fr | Best-effort. Отсутствующие файлы автостабятся из EN с [TODO i18n — see issue #76] в description, в CI это warning. |
Разделение намеренное. RU — крупнейшая не-английская аудитория продукта и единственная локаль с письменной compliance/billing-поверхностью, которая требует точности. de/es/fr — это SEO и удобство чтения; fallback на EN-копию для них допустим до прохода перевода.
Как выглядит stub
Когда de/es/fr не имеет перевода, файл по тому же пути идёт с EN-телом и
токеном [TODO i18n — see issue #76] в description. Тело на английском,
но страница достижима: переключатель локали резолвится, поиск
индексирует канонический URL, а TODO-маркер легко grep'нуть для будущих
проходов перевода.
---
title: Streaming responses
description: [TODO i18n — see issue #76] How to stream long-running…
---Все stub'ы видны командой:
rg -l '\[TODO i18n' apps/docs/content/docs/{de,es,fr}Что мы НЕ делаем
- 404 при переключении локали. Переключатель — это навигационный контракт. Локаль никогда не должна ломать рабочий URL.
- Прячем stub-страницы. Они участвуют в сайдбаре, sitemap и поисковом индексе. TODO-маркер — единственный сигнал необходимости перевода.
- Переводим slug URL. Пути стабильны между локалями — варьируется
только текст тела. Английский slug остаётся.
/ru/security/api-keysи/en/security/api-keysведут к одной концепции.
Когда пол сдвигается
Добавление RU обязательно для любой новой EN-страницы. Если PR добавляет
apps/docs/content/docs/en/foo/bar.mdx, тот же PR должен добавить
apps/docs/content/docs/ru/foo/bar.mdx. CI-гейт
(apps/docs/scripts/check-locale-parity.py) это обеспечивает — он
считает отсутствующие RU-файлы ошибкой, а de/es/fr — warning'ом.
Если не можете написать RU-перевод сами: stub'аем RU-файл из EN с
[TODO i18n — see issue #76] и заводим follow-up задачу с тегом i18n.
Страница всё равно реальна, просто с явным маркером долга.
Внутренние ссылки в docs
Все внутренние ссылки используют locale-relative пути
(/reference/feature-status, не /en/reference/feature-status). Слой
Fumadocs MDX переписывает их в активную локаль при рендере — один и тот
же источник работает из любой из пяти локалей без поломок при
переключении.
В сомнениях — ссылайтесь на EN-slug, Fumadocs разрулит.
Issues, отслеживающие политику
- #76 — Enforce RU/EN docs parity and locale-safe links (эта политика)
- #74 — Глоссарий и канонические переводы терминов
- #64 / #67 — Docs quality gates и CI
Гайд по позиционированию
Каноническое позиционирование AACSearch OS. Эта страница держит блог, comparison-страницы, маркетинг и кейсы в рамках Search Operating System.
Глоссарий
Канонические термины AACSearch OS с зафиксированными переводами EN ↔ RU. Словарь, к которому сводятся docs, маркетинг, дашборд и SDK. Бренды не переводим; концепты переводим.