Если админка не даёт редактировать перевод, сначала выясните, запрещено ли само изменение или только публикация. Проверьте одну тестовую строку под ролью переводчика и под ролью ответственного редактора. Не выдавайте полный доступ ради включения одного поля: так трудно понять причину и легко открыть лишние операции.
Серая кнопка, отказ сервера и сообщение «версия заблокирована» требуют разных исправлений. Запишите ключ строки, язык, состояние материала и точное сообщение. Пароли, cookie сессии и полный сетевой журнал передавать для такого разбора не нужно. Если проблема появилась только у одной строки, сравните её с доступной строкой того же языка.
Три причины похожего запрета
| Наблюдение | Что проверить | Безопасный следующий шаг |
|---|---|---|
| Поле недоступно до запроса | Роль, режим просмотра, состояние версии | Открыть тестовый черновик |
| Запрос получает отказ | Серверное разрешение и область языка | Сопоставить действие с ролью |
| Черновик сохранён, сайт прежний | Утверждение и выпуск перевода | Проверить опубликованную ревизию |
Интерфейс должен объяснять запрет рядом с полем. «Только просмотр» полезнее неработающей кнопки без подписи. Если перевод берётся из внешнего каталога и местная правка будет затёрта импортом, это тоже нужно показать. Тогда редактор исправляет источник или создаёт согласованное переопределение, а не повторяет сохранение каждый день.
Разрешение на язык и разрешение на выпуск
OWASP рекомендует принцип минимальных полномочий и проверку разрешений на каждом запросе. Для редактора переводов это означает серверную проверку конкретной строки и операции, а не только скрытую кнопку. Документация сверена 11 октября 2026 года. Разделение ролей ниже — пример устройства приложения, не обязательный набор ролей для любой CMS.
Условная политика редакции:
translator: read + edit_draft для назначенных языков
reviewer: approve для назначенных разделов
publisher: release утверждённой ревизии
Все операции проверяются сервером.Уточните область доступа: язык, раздел, проект или их сочетание. Переводчик карточек товара может не иметь права менять договорные формулировки. Отдельно проверьте прямой API-запрос на стенде: запрос с разрешённой ролью, но чужим ключом должен получить отказ. Делайте это только на собственных тестовых данных и с разрешением на проверку приложения.
Замороженная версия и правка без потери работы
Представим выпуск, уже отправленный на согласование. Правка прямо внутри него меняет то, что проверяет рецензент. Удобнее создать новый черновик от этой ревизии и сохранить ссылку на исходную. При публикации сервер проверяет, не изменился ли исходник; иначе редактор увидит конфликт, а не тихую замену чужого текста.
Не снимайте блокировку у всех материалов сразу. Сначала выясните, кто и зачем её установил: согласование, внешний импорт или активная работа другого редактора. Для потерянной блокировки нужен штатный способ освобождения с записью причины. Удаление строк в базе вручную может уничтожить связь перевода с версией и историю утверждения.
Репетиция, которая проверяет не только кнопку
- Переводчик меняет тестовую строку и повторно открывает черновик: текст сохранён.
- На публичной странице до утверждения остаётся прежняя версия.
- Рецензент утверждает конкретную ревизию; выпуск показывает её текст.
- Переводчик другого языка не может изменить ту же строку прямым запросом.
- После отзыва роли старая открытая вкладка больше не сохраняет изменения.
Если тест проходит, но рабочая строка всё ещё недоступна, сравните её источник и состояние, а не расширяйте роль. Для доработки панели подготовьте эту пару строк, правила выпуска и список операций сотрудников. По ним можно сделать понятное объяснение запрета и восстановление черновика без передачи полного управления сайтом.