• Как устроено
  • Быстрый старт
  • Доступ и токен
    • Страницы
      • Frontmatter
      • Синтаксис markdown
      • Переводы страниц
    • Фреймы
      • Вставки onpress/
      • Бинды data-op-bind
      • Сборка и копии
    • Готовые фреймы
      • assistant
      • outline
      • faq
      • article
      • docs
      • site__header
      • site__footer
      • article__faq
      • landing
      • assistant__chat
      • site__404
      • news
      • news__category
      • news__post
      • news__more
      • news__share
      • author__page
      • author__byline
      • author__card
      • author__avatar
      • author__socials
      • author__head
      • home
      • pricing
    • Данные
      • Повторитель onpress/repeat
  • Стили
  • Меню
  • Сайдбар документации
  • Языки сайта
  • Настройки и кэш
  • SEO
  • Медиа
  • Сайты и домены
  • Пользователи и профиль
  • Дашборд и вход
    • Рецепты
      • Сайт с нуля
      • Раздел документации
      • Лендинг
      • FAQ
      • Свой фрейм из готового
      • Многоязычный сайт
      • Поменять меню
      • Перенести страницу
      • Картинки в статье
      • Список из данных
      • Сменить оформление
    • Справочник API
      • Страницы
      • Переводы
      • Фреймы
      • Данные
      • Меню
      • Сайдбар документации
      • Стили
      • Настройки, главная, кэш
      • Языки
      • SEO
      • Медиа
      • Сайты
      • Пользователи и профиль
      • Вход и служебное
    • Ошибки и проблемы
      • Коды ошибок
OnPress OnPress
  • Документация
  • Контакты
Войти
  • Как устроено
  • Быстрый старт
  • Доступ и токен
    • Страницы
      • Frontmatter
      • Синтаксис markdown
      • Переводы страниц
    • Фреймы
      • Вставки onpress/
      • Бинды data-op-bind
      • Сборка и копии
    • Готовые фреймы
      • assistant
      • outline
      • faq
      • article
      • docs
      • site__header
      • site__footer
      • article__faq
      • landing
      • assistant__chat
      • site__404
      • news
      • news__category
      • news__post
      • news__more
      • news__share
      • author__page
      • author__byline
      • author__card
      • author__avatar
      • author__socials
      • author__head
      • home
      • pricing
    • Данные
      • Повторитель onpress/repeat
  • Стили
  • Меню
  • Сайдбар документации
  • Языки сайта
  • Настройки и кэш
  • SEO
  • Медиа
  • Сайты и домены
  • Пользователи и профиль
  • Дашборд и вход
    • Рецепты
      • Сайт с нуля
      • Раздел документации
      • Лендинг
      • FAQ
      • Свой фрейм из готового
      • Многоязычный сайт
      • Поменять меню
      • Перенести страницу
      • Картинки в статье
      • Список из данных
      • Сменить оформление
    • Справочник API
      • Страницы
      • Переводы
      • Фреймы
      • Данные
      • Меню
      • Сайдбар документации
      • Стили
      • Настройки, главная, кэш
      • Языки
      • SEO
      • Медиа
      • Сайты
      • Пользователи и профиль
      • Вход и служебное
    • Ошибки и проблемы
      • Коды ошибок
Справочник API
Markdown
Открыть в ИИ
  • Открыть в ChatGPT
  • Открыть в Claude
  • Открыть в Gemini
  • Открыть в Perplexity
  • Открыть в Grok
  • Открыть в DeepSeek

Справочник: переводы

Группа переводов — страницы одного содержания на разных языках. Из неё строятся hreflang и переключатель языков. Ручки — под $API/site/$SITE/pages/{ref}/translations; {ref} — id, слаг или путь с тильдами (ru~o-nas). На сайте без Polylang все отвечают 409 polylang_inactive. Все проверки идут до записи, неудачная не пишет ничего. После изменения группы каждая затронутая страница (и выпавшая) получает событие обновления — пересобираются hreflang и её кэш; их id — в content_saved. Как переводить страницы — переводы.

GET /pages/{ref}/translations

curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/pages/6428/translations"
{
  "success": true,
  "site_id": "x9HTLHECq",
  "page": { "id": 6428, "lang": "en", "title": "Проба API" },
  "translations": { "en": 6428, "ru": 6431 },
  "pages": {
    "en": { "id": 6428, "title": "Проба API", "status": "publish", "url": "/proba-api/", "link": "https://test.onpress.pro/proba-api/" },
    "ru": { "id": 6431, "title": "Проба API по-русски", "status": "publish", "url": "/ru/proba-api/", "link": "https://test.onpress.pro/ru/proba-api/" }
  },
  "missing_languages": []
}

translations всегда содержит саму страницу под её языком. missing_languages — языки сайта, на которых перевода нет.

PUT /pages/{ref}/translations

Положить группу целиком.

ПолеТипСмысл
translationsobject{язык: ссылка} — id, слаг или путь; null, "", 0 — «нет страницы на этом языке»

Карта и есть группа: кто был и отсутствует — выходит (unlinked). Страница из адреса — всегда участник под своим языком, её можно не указывать.

curl -s -X PUT "$API/site/$SITE/pages/6444/translations" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"translations": {"en": 6444, "ru": "/ru/docs-tr-proba/"}}'
{
  "success": true,
  "site_id": "x9HTLHECq",
  "page": { "id": 6444 },
  "translations": { "en": 6444, "ru": 6445 },
  "pages": { "en": { "id": 6444, "…": "…" }, "ru": { "id": 6445, "…": "…" } },
  "changed": true,
  "group": { "term_id": 172, "created": true },
  "unlinked": [],
  "deleted_groups": [],
  "content_saved": [6444, 6445]
}

Повтор той же карты — changed: false, group.term_id: null, ничего не пишется. deleted_groups — группы, которые опустели от переноса и удалены.

Отказы: 400 bad_translations (не объект), 409 translations_rejected (rejected: [{lang, ref, reason}] — неизвестный язык, нет страницы, язык страницы не совпадает с ключом, одна страница дважды, чужая страница под языком страницы из адреса), 409 page_in_other_group (its_group, target_group — сначала выведите страницу из её группы), 409 page_has_no_language.

POST /pages/{ref}/translations/{lang}

Добавить один перевод, сохранив остальных.

ПолеСмысл
pageперевод: id, слаг или путь
curl -s -X POST "$API/site/$SITE/pages/6444/translations/ru" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"page": 6445}'
{
  "success": true,
  "site_id": "x9HTLHECq",
  "page": { "id": 6444 },
  "linked": { "lang": "ru", "id": 6445 },
  "translations": { "en": 6444, "ru": 6445 },
  "changed": true,
  "group": { "term_id": 172, "created": false },
  "unlinked": [],
  "deleted_groups": [],
  "content_saved": [6444, 6445]
}

Прежний перевод этого языка выходит из группы (unlinked). Отказы: 400 page_required, 422 unknown_language, 409 same_language ({lang} — язык самой страницы), 409 page_language_mismatch (actual_lang), 409 page_in_other_group.

DELETE /pages/{ref}/translations

Вывести страницу из группы. Страница остаётся опубликованной со своим языком.

curl -s -X DELETE "$API/site/$SITE/pages/6445/translations" -H "Authorization: Bearer $OP_TOKEN"
{
  "success": true,
  "site_id": "x9HTLHECq",
  "page": { "id": 6445 },
  "was_in": { "ru": 6445, "en": 6444 },
  "remaining": { "en": 6444 },
  "unlinked": true,
  "changed": true,
  "group_deleted": false,
  "content_saved": [6445, 6444]
}

Группа без страниц удаляется (group_deleted: true), группа из одной страницы остаётся. Страница вне группы — unlinked: false, changed: false.

translation_of при публикации

Перевод можно связать сразу при публикации полем translation_of во frontmatter POST /pages/markdown — в той же транзакции, что и запись. Правила и отказы — в справочнике страниц и в переводах.

arrow_backНазад
Справочник: страницы
Далееarrow_forward
Справочник: фреймы
На этой странице
  • GET /pages/{ref}/translations
    • PUT /pages/{ref}/translations
      • POST /pages/{ref}/translations/{lang}
        • DELETE /pages/{ref}/translations
          • translation_of при публикации
          OnPress
          OnPress
          ИП Зуев И.В. ИНН: 360408359441
          © 2026
          политика конфиденциальности публичная оферта
          • visa
          • mastercard
          • sber
          • tpay