Reglas
Una regla es una convención lingüística específica con nombre que el motor de localización aplica a un idioma de destino: "abreviar Straße como Str. en las direcciones", no "ser más casual". Las reglas viven en conjuntos de reglas: contenedores propiedad de la organización que un motor aplica al adjuntarlos, de modo que un solo conjunto de reglas puede regir todos los motores que lo necesiten.
Antes, las reglas se llamaban instrucciones
En el dashboard se llaman reglas y se agrupan en conjuntos de reglas. La API REST todavía expone una regla individual en /instructions con los mismos nombres de campos; lo que cambió fue dónde se escribe una regla: rulesetId reemplazó a ownerEngineId.
Cómo funciona#
Un conjunto de reglas le pertenece a tu organización, no a un motor. Al adjuntarlo a un motor es cuando sus reglas empiezan a aplicarse; no se copia nada al motor.
| Objeto | Campos |
|---|---|
| Conjunto de reglas | Nombre, descripción. Puede contener cualquier cantidad de reglas. |
| Regla | Nombre, idioma de destino (o *), texto. |
Cuando llega una solicitud de traducción, el motor recopila cada regla de cada conjunto de reglas adjunto cuyo idioma de destino coincide con el targetLocale de la solicitud y la incluye en el prompt del LLM junto con la voz de marca y el glosario. Las reglas no compiten: se incluyen todas las que coinciden, ordenadas primero por el idioma con mejor coincidencia, para que la guía más precisa vaya primero.
| Campo | Descripción |
|---|---|
| Nombre | Una etiqueta breve para identificar la regla (por ejemplo, "tratamiento formal en alemán") |
| Idioma de destino | El idioma al que se aplica esta regla, o * para todos los idiomas (Cualquier idioma en el panel) |
| Texto | La regla lingüística, escrita en lenguaje natural |
Muchas reglas por idioma
Crea tantas reglas como necesite un idioma. Cada regla debe abordar un solo aspecto: eso es lo que hace que pueda probarse de forma individual, que la evaluación de IA de reglas pueda puntuarla y que sea seguro eliminarla.
Los conjuntos de reglas son propiedad de la organización#
| Acción | Efecto |
|---|---|
| Crear un conjunto de reglas | Existe a nivel de organización y no se aplica a nada hasta que se adjunta |
| Adjuntarlo a un motor | Cada una de sus reglas se aplica a las traducciones de ese motor |
| Adjuntarlo a varios motores | Las mismas reglas rigen para todos: edita una vez y todos los motores las siguen |
| Adjuntar varios conjuntos de reglas a un motor | Todas sus reglas se combinan |
| Desvincularlo de un motor | El motor deja de aplicarlo. El conjunto de reglas y sus reglas se conservan. |
| Eliminar un conjunto de reglas | Se rechaza mientras algún motor siga aplicándolo; primero desvincúlalo. Al eliminarlo, sus reglas se eliminan con él. |
| Eliminar un motor | Los conjuntos de reglas y las reglas siguen existiendo. Le pertenecen a la organización, no al motor. |
Administra los conjuntos de reglas en Infrastructure → Rulesets. La pestaña Rules de un conjunto de reglas contiene sus reglas; la pestaña Settings muestra los motores de la organización, donde puedes aplicar el conjunto de reglas a un motor o dejar de aplicarlo. A su vez, la pestaña Settings de un motor incluye una sección Rulesets que muestra qué aplica ese motor, con Add ruleset para adjuntar otro.
Reglas predefinidas#
Lingo.dev selecciona un catálogo de reglas listas para usar: convenciones de idioma que la mayoría de los equipos necesitan y que pocas veces alguien piensa en documentar. Se adjuntan directamente a un motor, en lugar de hacerlo mediante un conjunto de reglas, y puedes quitarlas en cualquier momento.
El panel no tiene una pantalla para las reglas predefinidas. Explora el catálogo y adjunta entradas mediante la API o el servidor MCP:
| Llamada | Herramienta de MCP | Propósito |
|---|---|---|
GET /predefined-instructions | predefinedInstructions_list | Mostrar el catálogo |
GET /engines/:id/predefined-instructions | engines_listPredefinedInstructions | Mostrar las reglas predefinidas que aplica un motor |
PUT /engines/:id/predefined-instructions | predefinedInstructions_setForEngine | Reemplazar el conjunto de entradas que aplica un motor: envía la lista completa de ids; todo lo que se omita se quita |
DELETE /engines/:id/predefined-instructions/:predefinedInstructionId | predefinedInstructions_detach | Dejar de aplicar una entrada a un motor |
GET /predefined-instructions/:id/engines?organizationId= | predefinedInstructions_listEngines | Mostrar los motores de tu organización que aplican una entrada |
Cada entrada del catálogo tiene un idioma de destino, un nombre, una descripción, un type (standard, convention o preference) y un category. Las entradas que comparten un groupKey son alternativas para el mismo idioma: un motor puede aplicar como máximo una de ellas, y se rechaza cualquier solicitud que elija dos. Para adjuntar y quitar entradas se necesita engine:edit en el motor; cualquier persona que haya iniciado sesión puede consultar el catálogo.
Las reglas curadas se colocan en el prompt antes que las tuyas, para que una regla que escribas refine o anule la base en lugar de competir con ella.
Reglas vs. voces de marca#
Ambas influyen en el resultado de la traducción, pero en distintos niveles:
| Voz de marca | Regla | |
|---|---|---|
| Alcance | Tono general, estilo, formalidad | Una regla lingüística específica |
| Por idioma | Un texto por idioma, una voz por idioma para cada motor | Muchas reglas por idioma |
| Aplicación | El único texto con la mejor coincidencia | Se combinan todas las reglas coincidentes |
| Comodín | Sí (* actúa como la voz predeterminada) | Sí (* se aplica a todos los idiomas) |
| Ejemplo | "Usa du informal, tono técnico" | "Siempre abrevia Straße como Str. en direcciones" |
Usa una voz de marca para definir cómo habla tu producto en un idioma: formalidad, registro y estilo de las oraciones.
Usa reglas para plasmar convenciones específicas que el modelo, de otro modo, pasaría por alto: abreviaturas, puntuación, formato de unidades o patrones gramaticales propios del idioma.
Funcionan juntas: la voz de marca marca el tono; las reglas se encargan de los casos límite.
Cómo escribir reglas efectivas#
Cada regla debe ser una sola afirmación clara e inequívoca. El motor incluye el texto completo en el prompt del LLM, así que la claridad importa.
Buenas reglas#
Always use the Oxford comma in English lists.In Japanese, use full-width parentheses ()instead of half-width ().For German addresses, abbreviate "Straße" to "Str." and
"Nummer" to "Nr."When translating percentage values for French, add a
non-breaking space before the percent sign: 42 %.Qué evitar#
- Indicaciones vagas que se superponen con la voz de marca ("sé más casual"): eso va en la voz de marca
- Varias convenciones no relacionadas en una sola regla: sepáralas para que cada una pueda probarse de forma independiente
- Reglas que contradicen el glosario: los términos del glosario tienen prioridad en la jerarquía del motor
Idioma comodín#
Configura el idioma de destino como * (Cualquier idioma en el panel) para aplicar una regla a todos los idiomas. Es útil para convenciones independientes del idioma:
Never translate product feature names: "Smart Compose",
"Quick Actions", "Flow Builder".Preserve Markdown formatting in all translated strings.
Keep bold (**), italic (*), and link syntax [text](url) intact.Tanto las reglas específicas por idioma como las reglas comodín se incluyen cuando el motor procesa una solicitud: se combinan, no se reemplazan.
Usar reglas con la API#
Las reglas se aplican automáticamente cuando llamas al endpoint localize. El motor recopila todas las reglas que coinciden con el targetLocale de la solicitud (además de cualquier regla de *) de los conjuntos de reglas que aplica, junto con cualquier regla predefinida adjunta a ese motor. No se necesitan parámetros adicionales.
| Llamada | Propósito |
|---|---|
POST /rulesets | Crear un conjunto de reglas para la organización |
GET /organizations/:id/rulesets | Mostrar los conjuntos de reglas de la organización con el recuento de reglas y motores |
GET /rulesets/:id/rules | Mostrar las reglas de un conjunto de reglas |
POST /instructions con rulesetId | Agregar una regla a un conjunto de reglas |
PUT /engines/:id/rulesets | Reemplazar el conjunto de conjuntos de reglas que aplica un motor |
DELETE /engines/:id/rulesets/:rulesetId | Dejar de aplicar un conjunto de reglas a un motor |
GET /engines/:id/instructions | Mostrar todas las reglas que aplica un motor a través de sus conjuntos de reglas (las reglas predefinidas se muestran por separado) |
ownerEngineId en POST /instructions todavía funciona: escribe en el conjunto de reglas propio del motor y crea uno si el motor no tiene ninguno. Es preferible usar rulesetId.
Acceso#
org:ruleset:read y org:ruleset:edit rigen los conjuntos de reglas y las reglas que contienen; para adjuntar uno a un motor también se necesita engine:edit en ese motor. Un permiso por conjunto de reglas le da a una persona acceso de lectura y edición a un solo conjunto de reglas, en lugar de a todos los conjuntos de reglas de la organización; estos permisos se configuran mediante la API o MCP, no desde el panel. Consulta Roles y permisos.
Administrar reglas mediante MCP#
Si usas el servidor MCP de Lingo.dev, tu asistente de programación con IA puede crear, actualizar y eliminar reglas y conjuntos de reglas directamente:
"Create a ruleset called German conventions and apply it to
the marketing engine.""Add a rule to that ruleset: always abbreviate Straße to Str.
in addresses.""Add a wildcard rule: never translate the term Smart Compose.""List the predefined rules for German and attach the ones
you recommend to the marketing engine."