Правила

Max PrilutskiyГенеральный директор и соучредитель6 мин чтения

Правило — это одна конкретная языковая конвенция, которую движок локализации применяет к целевой локали: например, «сокращать Straße до Str. в адресах», но не «писать более неформально». Правила хранятся в наборах правил — контейнерах на уровне организации, которые привязываются к движку. Так один набор правил управляет всеми нужными движками сразу.

Правила раньше назывались инструкциями

В дашборде они называются правилами и объединяются в наборы. REST API по-прежнему открывает доступ к отдельному правилу по адресу /instructions с теми же именами полей — изменилось только место, где пишется правило: rulesetId заменил ownerEngineId.

Как это работает#

Набор правил принадлежит организации, а не движку. Правила начинают работать только после подключения набора к движку — ничего не копируется в сам движок.

ОбъектПоля
Набор правилНазвание, описание. Содержит любое количество правил.
ПравилоНазвание, целевая локаль (или *), текст.

Когда приходит запрос на перевод, движок собирает все правила из подключённых наборов, чья целевая локаль совпадает с локалью запроса targetLocale, и включает их в промпт LLM вместе с тональностью бренда и глоссарием. Правила не конкурируют: включаются все подходящие, отсортированные от наиболее точного совпадения к менее точному.

ПолеОписание
НазваниеКороткая метка для правила (например, «Официальное обращение на немецком»)
Целевая локальЛокаль, к которой применяется это правило, или * для всех локалей (Любая локаль в панели управления)
ТекстЛингвистическое правило, написанное на естественном языке

Много правил для одной локали

Создавайте столько правил, сколько нужно локали. Каждое должно касаться одного аспекта — так его можно тестировать отдельно, оценивать через AI-оценку правил и безопасно удалять.

Наборы правил принадлежат организации#

ДействиеРезультат
Создать набор правилСуществует на уровне организации и ни к чему не применяется, пока не подключён
Подключить к движкуВсе правила набора применяются к переводам этого движка
Подключить к нескольким движкамОдни и те же правила управляют всеми — правь один раз, все движки следуют
Подключить несколько наборов к одному движкуВсе их правила объединяются
Отключить от движкаДвижок перестаёт применять набор. Сам набор и его правила сохраняются.
Удалить набор правилНельзя, пока набор подключён хотя бы к одному движку — сначала отключите. При удалении правила удаляются вместе с набором.
Удалить движокНаборы правил и правила остаются. Они принадлежат организации, а не движку.

Управляйте наборами правил в разделе Наборы правил раздела Инфраструктура. Вкладка Правила содержит правила набора; вкладка Настройки показывает движки организации — здесь вы подключаете набор правил к движку или отключаете его. На вкладке Настройки самого движка есть раздел Наборы правил со списком применяемых правил и кнопкой Добавить набор правил для подключения нового.

Предустановленные правила#

Lingo.dev ведёт каталог готовых правил — языковых соглашений, которые нужны большинству команд, но мало кто удосуживается их записать. Правила подключаются к движку напрямую, без наборов правил, и отключить их можно в любой момент.

В панели управления нет отдельного экрана для предустановленных правил. Просматривайте каталог и подключайте записи через API или сервер MCP:

ВызовИнструмент MCPНазначение
GET /predefined-instructionspredefinedInstructions_listПросмотреть каталог
GET /engines/:id/predefined-instructionsengines_listPredefinedInstructionsПросмотреть предустановленные правила, применяемые движком
PUT /engines/:id/predefined-instructionspredefinedInstructions_setForEngineЗаменить набор, применяемый движком, — передайте полный список ids; всё, что не вошло в список, будет отключено
DELETE /engines/:id/predefined-instructions/:predefinedInstructionIdpredefinedInstructions_detachПрекратить применение одной записи к движку
GET /predefined-instructions/:id/engines?organizationId=predefinedInstructions_listEnginesПросмотреть движки организации, применяющие эту запись

Каждая запись каталога содержит целевую локаль, название, описание, type (standard, convention или preference) и category. Записи с одинаковым groupKey — это альтернативы для одной локали: движок может применять не более одной из них, а запрос, выбирающий сразу две, будет отклонён. Для подключения и отключения нужны права engine:edit на движке; любой авторизованный пользователь может просматривать каталог.

Готовые правила помещаются в промпт раньше ваших собственных, поэтому ваши правила уточняют или переопределяют базу — а не борются с ней.

Правила vs. тональность бренда#

Оба инструмента влияют на перевод, но на разных уровнях:

Тональность брендаПравило
ОхватОбщий тон, стиль, формальностьОдно конкретное лингвистическое правило
На локальОдин текст на локаль, одна тональность на локаль на движокМного правил для одной локали
ПрименениеОдин наиболее подходящий текстВсе подходящие правила объединяются
МаскаДа (* — тональность по умолчанию)Да (* применяется ко всем локалям)
Пример«Неформальное du, технический тон»«Всегда сокращай Straße до Str. в адресах»

Тональность бренда задаёт, как ваш продукт говорит на том или ином языке: формальность, регистр, структуру предложений.

Правила фиксируют конкретные соглашения, которые модель иначе упустила бы: сокращения, пунктуацию, форматирование единиц измерения или специфические грамматические паттерны локали.

Они работают вместе: тональность бренда задаёт голос, правила берут на себя частные случаи.

Как писать эффективные правила#

Каждое правило — одно чёткое утверждение. Движок включает его полный текст в LLM-промпт, поэтому формулировка имеет значение.

Хорошие правила#

text
Always use the Oxford comma in English lists.
text
In Japanese, use full-width parentheses ()instead of half-width ().
text
For German addresses, abbreviate "Straße" to "Str." and
"Nummer" to "Nr."
text
When translating percentage values for French, add a
non-breaking space before the percent sign: 42 %.

Чего избегать#

  • Размытые рекомендации, которые пересекаются с тональностью бренда («будь проще») — лучше перенесите их в тональность бренда
  • Несколько не связанных между собой конвенций в одном правиле — разделите их, чтобы каждую можно было проверить отдельно
  • Правила, противоречащие глоссарию, — термины глоссария имеют приоритет в иерархии движка

Маска локали#

Задайте целевую локаль * (Любая локаль в панели управления), чтобы применить правило ко всем локалям. Удобно для соглашений, не зависящих от языка:

text
Never translate product feature names: "Smart Compose",
"Quick Actions", "Flow Builder".
text
Preserve Markdown formatting in all translated strings.
Keep bold (**), italic (*), and link syntax [text](url) intact.

Правила для конкретной локали и правила с маской включаются одновременно при обработке запроса — они объединяются, а не заменяют друг друга.

Правила и API#

Правила применяются автоматически при вызове эндпоинта локализации. Движок собирает все правила, соответствующие targetLocale запроса (а также правила *), из подключённых наборов правил — вместе с прикреплёнными предустановленными правилами. Никаких дополнительных параметров не нужно.

ВызовНазначение
POST /rulesetsСоздать набор правил для организации
GET /organizations/:id/rulesetsПолучить список наборов правил организации с количеством правил и движков
GET /rulesets/:id/rulesПолучить список правил в наборе
POST /instructions с rulesetIdДобавить правило в набор
PUT /engines/:id/rulesetsЗаменить набор наборов правил, применяемых движком
DELETE /engines/:id/rulesets/:rulesetIdОтключить один набор правил от движка
GET /engines/:id/instructionsПросмотреть все правила, применяемые движком через его наборы правил (предустановленные правила перечисляются отдельно)

ownerEngineId на POST /instructions по-прежнему работает — запись идёт в собственный набор правил движка, который создаётся автоматически при необходимости. Рекомендуем использовать rulesetId.

Доступ#

org:ruleset:read и org:ruleset:edit управляют наборами правил и правилами внутри них; подключение набора к движку также требует engine:edit на этом движке. Разрешение на уровне отдельного набора правил даёт права на чтение и редактирование только этого набора — а не всех наборов организации; разрешения настраиваются через API или MCP, а не через панель управления. См. Роли и разрешения.

Управление правилами через MCP#

Если вы используете MCP-сервер Lingo.dev, ваш AI-ассистент для разработки может создавать, обновлять и удалять правила и наборы правил напрямую:

text
"Create a ruleset called German conventions and apply it to
the marketing engine."
text
"Add a rule to that ruleset: always abbreviate Straße to Str.
in addresses."
text
"Add a wildcard rule: never translate the term Smart Compose."
text
"List the predefined rules for German and attach the ones
you recommend to the marketing engine."

Следующие шаги#