Правила

Max PrilutskiyГенеральный директор и соучредительUpdated в прошлом месяце · 5 min read

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

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

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

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

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

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

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

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

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

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

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

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

Управляйте наборами в разделе Правила боковой панели организации. Вкладка Правила движка показывает, что он применяет сейчас, и позволяет подключать или отключать наборы.

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

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

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

Правила 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 на этот движок. Права на отдельный набор дают доступ на чтение и редактирование только этого набора, а не всех наборов в организации. См. Роли и права доступа.

Управление правилами через 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."

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