Regras

Max PrilutskiyCEO e cofundador7 min de leitura

Uma regra é uma convenção linguística identificada que o motor de localização aplica a um idioma de destino — "abreviar Straße para Str. em moradas", e não "ser mais informal". As regras vivem em conjuntos de regras: contentores da organização que o motor aplica por associação, para que um único conjunto de regras possa orientar todos os motores que dele precisem.

As regras antes chamavam-se instruções

No dashboard, chamam-se regras e são agrupadas em conjuntos de regras. A API REST continua a expor uma regra individual em /instructions, com os nomes dos campos inalterados — o que mudou foi o local onde a regra é escrita: rulesetId substituiu ownerEngineId.

Como funciona#

Um conjunto de regras pertence à sua organização, não a um motor. É ao associá-lo a um motor que as respetivas regras passam a ser aplicadas - nada é copiado para o motor.

ObjetoCampos
Conjunto de regrasNome, descrição. Pode conter qualquer número de regras.
RegraNome, idioma de destino (ou *), texto.

Quando chega um pedido de tradução, o motor recolhe todas as regras de todos os conjuntos de regras associados cujo idioma de destino corresponde ao targetLocale do pedido e inclui-as no prompt do LLM, juntamente com a voz da marca e o glossário. As regras não competem entre si: todas as regras correspondentes são incluídas, ordenadas pelo idioma com melhor correspondência primeiro, para que a orientação mais específica venha à frente.

CampoDescrição
NomeUma designação curta que identifica a regra (por exemplo, "tratamento formal em alemão")
Idioma de destinoO idioma a que esta regra se aplica, ou * para todos os idiomas (Qualquer idioma no dashboard)
TextoA regra linguística, escrita em linguagem natural

Muitas regras por idioma

Crie tantas regras quantas forem necessárias para cada idioma. Cada regra deve tratar de um único aspeto - é isso que a torna testável individualmente, passível de avaliação pela avaliação por IA de regras e segura de eliminar.

Os conjuntos de regras pertencem à organização#

AçãoEfeito
Criar um conjunto de regrasExiste ao nível da organização e não se aplica a nada até ser associado
Associá-lo a um motorTodas as regras nele contidas passam a aplicar-se às traduções desse motor
Associá-lo a vários motoresAs mesmas regras orientam todos eles - edite uma vez, todos os motores seguem
Associar vários conjuntos de regras a um motorTodas as regras se combinam
Desassociá-lo de um motorO motor deixa de o aplicar. O conjunto de regras e as respetivas regras são mantidos.
Eliminar um conjunto de regrasÉ recusado enquanto algum motor ainda o estiver a aplicar - desassocie-o primeiro. Ao eliminá-lo, elimina também as respetivas regras.
Eliminar um motorOs conjuntos de regras e as regras mantêm-se. Pertencem à organização, não ao motor.

Faça a gestão dos conjuntos de regras em Infrastructure → Rulesets. O separador Rules de um conjunto de regras reúne as respetivas regras; o separador Definições lista os motores da organização, onde pode aplicar o conjunto de regras a um motor ou deixar de o aplicar. Já o separador Definições de um motor inclui uma secção Rulesets que mostra o que o motor aplica, com Add ruleset para associar outro.

Regras predefinidas#

A Lingo.dev mantém um catálogo de regras prontas a usar — convenções de idioma de que a maioria das equipas precisa e que poucas se lembram de pôr por escrito. Estas são associadas diretamente a um motor, em vez de serem aplicadas através de um conjunto de regras, e podem ser removidas a qualquer momento.

O dashboard não tem um ecrã para regras predefinidas. Consulte o catálogo e associe entradas através da API ou do servidor MCP:

ChamadaFerramenta MCPFinalidade
GET /predefined-instructionspredefinedInstructions_listListar o catálogo
GET /engines/:id/predefined-instructionsengines_listPredefinedInstructionsListar as regras predefinidas aplicadas por um motor
PUT /engines/:id/predefined-instructionspredefinedInstructions_setForEngineSubstituir o conjunto aplicado por um motor — envie a lista completa de ids; tudo o que ficar de fora é removido
DELETE /engines/:id/predefined-instructions/:predefinedInstructionIdpredefinedInstructions_detachDeixar de aplicar uma entrada a um motor
GET /predefined-instructions/:id/engines?organizationId=predefinedInstructions_listEnginesListar os motores da sua organização que aplicam uma entrada

Cada entrada do catálogo tem um idioma de destino, um nome, uma descrição, um type (standard, convention ou preference) e um category. As entradas que partilham um groupKey são alternativas para o mesmo idioma — um motor pode aplicar, no máximo, uma delas, e um pedido que selecione duas é rejeitado. Associar e remover requer engine:edit no motor; qualquer pessoa com sessão iniciada pode consultar o catálogo.

As regras selecionadas são colocadas no prompt antes das suas, para que uma regra criada por si refine ou substitua a base, em vez de entrar em conflito com ela.

Regras vs. voz da marca#

Ambas moldam o resultado da tradução, mas em níveis diferentes:

Voz da MarcaRegra
ÂmbitoTom geral, estilo, formalidadeUma regra linguística específica
Por idiomaUm texto por idioma, uma voz por idioma por motorMuitas regras por idioma
AplicaçãoO único texto com melhor correspondênciaTodas as regras correspondentes se combinam
WildcardSim (* funciona como voz predefinida)Sim (* aplica-se a todos os idiomas)
Exemplo"Use informal du, technical tone""Always abbreviate Straße to Str. in addresses"

Use uma voz da marca para definir como o seu produto comunica num idioma - formalidade, registo, estilo de frase.

Use regras para codificar convenções específicas que, de outra forma, o modelo poderia falhar - abreviaturas, pontuação, formatação de unidades ou padrões gramaticais específicos do idioma.

Funcionam em conjunto: a voz da marca define a voz, e as regras tratam dos casos limite.

Como escrever regras eficazes#

Cada regra deve ser uma única instrução, clara e inequívoca. O motor inclui o texto completo no prompt do LLM, por isso a clareza faz toda a diferença.

Boas regras#

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 %.

O que evitar#

  • Orientações vagas que se sobrepõem à voz da marca ("be more casual") - nesse caso, coloque isso na voz da marca
  • Várias convenções sem relação entre si na mesma regra — separe-as para que cada uma possa ser testada de forma independente
  • Regras que contradizem o glossário - os termos do glossário têm prioridade na hierarquia do motor

Idioma wildcard#

Defina o idioma de destino como * (Qualquer idioma no dashboard) para aplicar uma regra a todos os idiomas. Útil para convenções independentes da língua:

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.

As regras específicas do idioma e as regras wildcard são ambas incluídas quando o motor processa um pedido - combinam-se, não se sobrepõem.

Usar regras com a API#

As regras são aplicadas automaticamente quando chama o endpoint localize. O motor recolhe todas as regras que correspondem ao targetLocale do pedido (mais quaisquer regras *) dos conjuntos de regras aplicados pelo motor, juntamente com quaisquer regras predefinidas que lhe estejam associadas. Não são necessários parâmetros adicionais.

ChamadaObjetivo
POST /rulesetsCriar um conjunto de regras para a organização
GET /organizations/:id/rulesetsListar os conjuntos de regras da organização com contagem de regras e de motores
GET /rulesets/:id/rulesListar as regras de um conjunto de regras
POST /instructions com rulesetIdAdicionar uma regra a um conjunto de regras
PUT /engines/:id/rulesetsSubstituir o conjunto de conjuntos de regras que um motor aplica
DELETE /engines/:id/rulesets/:rulesetIdDeixar de aplicar um conjunto de regras a um motor
GET /engines/:id/instructionsListar todas as regras que um motor aplica através dos seus conjuntos de regras (as regras predefinidas são listadas em separado)

ownerEngineId em POST /instructions continua a funcionar - escreve no conjunto de regras do próprio motor, criando um se o motor não tiver nenhum. Dê preferência a rulesetId.

Acesso#

org:ruleset:read e org:ruleset:edit regem os conjuntos de regras e as regras dentro deles; associar um deles a um motor também requer engine:edit nesse motor. Uma permissão por conjunto de regras dá a alguém acesso de leitura e edição a um único conjunto de regras, em vez de a todos os conjuntos de regras da organização; estas permissões são definidas através da API ou do MCP, não no dashboard. Consulte Funções e permissões.

Gerir regras via MCP#

Se utilizar o servidor MCP da Lingo.dev, o seu assistente de programação com IA pode criar, atualizar e eliminar regras e conjuntos de regras diretamente:

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."

Próximos passos#