Docs / Conceptos
Página traducida automáticamente
Idiomas y locales
Qué idiomas puede traducir verbatra, cómo llegan los códigos de locale a cada proveedor y cómo se tratan los plurales y el texto de derecha a izquierda.
verbatra no tiene una lista de idiomas propia: acepta cualquier código de locale BCP 47 válido, así que puedes usar los idiomas que admite tu proveedor, y en un proyecto solo humano, todos. verbatra escribe cada código como lo espera el proveedor, exige a cada traducción las reglas de plural de su idioma y te avisa antes de una ejecución cuando un proveedor no puede servir un locale.
Códigos de locale
Cada locale de tu configuración debe ser una etiqueta BCP 47 válida, como fr, pt-BR, sr-Latn
o es-419; para archivos llamados pt_, escribe pt-BR y pon files.localeStyle en
posix. Las reglas completas están en Códigos de locale.
El código de tu configuración es el que verbatra guarda en todas partes: rutas de archivo,
el archivo de bloqueo y la caché. Una grafía propia del
proveedor solo existe dentro de una petición. Reescribir un código que ya traduces, como pt_ a
pt-BR, conserva su historial; consulta
Un código de locale reescrito.
Cobertura por proveedor
La calidad con la que se traduce un idioma depende del proveedor; cada fila enlaza a su propia lista.
| Proveedor | Idiomas | Código enviado | Glosario | Tono |
|---|---|---|---|---|
anthropic | Sin lista fija. Claude multilingual support | Tal como está escrito, más los nombres en inglés del idioma, la escritura y la región | Términos del locale en el prompt | En el prompt |
openai | Sin lista fija. Using the OpenAI API in different languages | Tal como está escrito, más los nombres | Términos del locale en el prompt | En el prompt |
gemini | Gemini language support | Tal como está escrito, más los nombres | Términos del locale en el prompt | En el prompt |
opencode | Lo que cubra el modelo de Zen que elijas | Tal como está escrito, más los nombres | Términos del locale en el prompt | En el prompt |
openai-compatible | Lo que cubra el modelo que ejecutas | Tal como está escrito, más los nombres | Términos del locale en el prompt | En el prompt |
deepl | DeepL supported languages | Normalizado a los códigos de DeepL | Solo un glosario de DeepL creado de antemano, por glossaryId, para 32 idiomas | Formality de DeepL para algunos idiomas, no con una clave gratuita |
google-translate | Cloud Translation language support (para el nivel Basic, v2, que usa verbatra vale la lista NMT) | Normalizado para chino y noruego, si no, tal como está escrito | Ninguno | Ninguno |
libretranslate | Los modelos instalados en tu servidor; la lista upstream muestra los que se pueden instalar | Solo el idioma, salvo pt-BR, zh-Hans y zh-Hant | Ninguno | Ninguno |
none | No aplica: no se llama a ningún proveedor | No se envía nada | No aplica | No aplica |
Lo que significa en la práctica:
- Los proveedores LLM no tienen lista cerrada. Intentan cualquier idioma que nombres, y la calidad baja donde hay pocos datos de entrenamiento, así que un destino con pocos recursos merece una revisión humana. Las señales de revisión señalan los resultados más sospechosos.
- DeepL y Google Cloud Translation tienen una lista cerrada, que se comprueba antes de una ejecución.
- LibreTranslate sirve los modelos que haya instalado tu servidor.
- Un
toneo un glosario que un proveedor no puede respetar se informa como aviso; consulta Tono y glosario entre proveedores.
Cómo recibe el código cada proveedor
DeepL y Google Cloud Translation reciben algunos códigos con su propia grafía, y DeepL rechaza un
destino en o pt sin más antes de cualquier petición. Los proveedores LLM reciben el código más
los nombres en inglés del idioma,
la escritura y la región. localeMap en las options del proveedor sustituye el código por locale;
el mapeo completo está en
Códigos de locale enviados al proveedor.
Comprobar el soporte antes de una ejecución
Antes de gastar nada, verbatra juzga cada locale configurado según el proveedor, y
verbatra doctor --locales imprime los veredictos:
- supported: el código que envía verbatra está en la tabla del proveedor, o el proveedor es un LLM.
- unverified: solo figura su idioma base, el código viene de una entrada explícita de
localeMap, o el proveedor es un servidor LibreTranslate cuyos modelos solo se conocen por su lista en vivo. Se traduce, con el avisoLOCALE_.UNVERIFIED_ BY_ PROVIDER - unsupported: no figuran ni el código ni su idioma base.
translate,watchy una nueva traducción de una sola clave rechazan la ejecución entera conLOCALE_.UNSUPPORTED_ BY_ PROVIDER
Deja fuera el locale con --locales o, si el proveedor añadió el idioma después, mapéalo en
localeMap: una entrada explícita se da por buena. Las tablas incluidas son copias de las listas de
los proveedores (DeepL con 125 códigos y Google con 198, ambas del 2026-09-28); verbatra doctor --live comprueba la lista actual.
Para un proveedor LLM no se rechaza nada. Un destino fuera de los idiomas que los LLM traducen bien
de forma probada recibe el aviso LOCALE_, como recordatorio para revisar su
salida. La lista compara el idioma base, así que pt-BR cuenta
como portugués: árabe (ar), chino (zh), neerlandés (nl), inglés (en), francés (fr), alemán
(de), hindi (hi), indonesio (id), italiano (it), japonés (ja), coreano (ko), polaco
(pl), portugués (pt), ruso (ru), español (es), sueco (sv), turco (tr), ucraniano (uk)
y vietnamita (vi).
Escrituras y variantes regionales
Una subetiqueta de escritura o de región cambia lo que se pide al proveedor, no cómo guarda verbatra nada:
| Tu locale | DeepL | Google Cloud Translation | LibreTranslate | Proveedores LLM |
|---|---|---|---|---|
pt-BR / pt-PT | PT-BR / PT-PT | pt-BR / pt-PT | pt-BR / pt | Portuguese (Brazil) / Portuguese (Portugal) |
es-419, es-MX | ES-419 | es-419, es-MX | es | Spanish (Latin America), Spanish (Mexico) |
zh-Hans / zh-Hant | ZH-HANS / ZH-HANT | zh-CN / zh-TW | zh-Hans / zh-Hant | Chinese (Simplified) / Chinese (Traditional) |
sr-Latn / sr-Cyrl | SR para ambos | sr-Latn / sr-Cyrl | sr para ambos | Serbian (Latin) / Serbian (Cyrillic) |
DeepL y LibreTranslate solo conservan la escritura para el chino, así que sr-Latn y sr-Cyrl
reciben la escritura que el motor use para el serbio; un proveedor LLM, al que se le dice la
escritura por su nombre, es la opción fiable. La señal LENGTH_ pondera los caracteres
según su escritura, así que un texto compacto en chino, japonés o coreano no se marca por corto, y un
término del glosario en una escritura sin espacios entre palabras se compara por inclusión.
Plurales
verbatra lee las categorías de plural de un idioma, ordinales incluidos, de las reglas CLDR de los
datos ICU de Node.js: el inglés tiene dos categorías cardinales, el ruso y el polaco cuatro, el árabe
y el galés seis, el japonés solo other. Para un locale sin reglas en Node.js, el aviso de la
ejecución asume one y other, mientras que la puerta de integridad, check y doctor solo exigen
other; la comprobación plural-rules de verbatra doctor nombra ese locale.
Cómo se mantiene correcto un plural depende del formato:
- i18next identifica cada forma con un sufijo CLDR (
items_,one items_). Cuando al origen le falta una categoría que necesita el destino, la ejecución informafew PLURAL_; conCATEGORIES_ INCOMPLETE generatePlurals: truey un proveedor LLM, verbatra escribe las formas que faltan. Consulta Añadir un idioma. - next-intl y ARB guardan un plural ICU entero en un solo valor, y se rechaza un valor cuyas ramas no encajan con el idioma de destino; consulta Ramas de plural por idioma de destino.
- Apple, Android y gettext conservan exactamente las formas que tiene cada locale, y una forma
que falta hay que añadirla a mano. gettext conserva su cabecera
Plural-Formstal como está.
Avisos de plural
verbatra check y verbatra doctor avisan de cada plural
al que le falta una categoría que usa su idioma, en cada formato de la lista anterior salvo gettext,
cuyas formas siguen su propia cabecera; los plurales de otros formatos no se comprueban. DeepL,
Google Cloud Translation y LibreTranslate traducen las formas que existen, pero nunca generan formas
nuevas.
Idiomas de derecha a izquierda
El árabe, el hebreo, el persa, el urdu y otros idiomas de derecha a izquierda no necesitan ningún tratamiento especial: un valor se lee, se envía, se comprueba y se vuelve a escribir tal cual, sin añadir, quitar ni reordenar marcas de dirección. Lo que significa para ti:
- Fija la dirección en tu aplicación, no en las cadenas, con el atributo
dir, CSS o la dirección de diseño de tu plataforma. La comprobación del marcado en línea rechaza una traducción que añade un atributodirque el origen no tiene. - Las marcas de dirección son texto corriente y pueden perderse; revisa las traducciones que
dependen de una. Incrustaciones, anulaciones o aislamientos sin cerrar (si la fuente cierra los
suyos) o anulaciones añadidas activan
BIDI_.CONTROLS_ CHANGED - Un orden de placeholders distinto solo activa
INTEGRITY_, porque en otro idioma otro orden suele ser correcto.REORDERED - Studio muestra los valores de derecha a izquierda para cada locale cuya escritura va en ese
sentido, según la dirección del navegador o la escritura probable del locale (
ku-Arabde derecha a izquierda,kude izquierda a derecha). Solo cambia la visualización. verbatra pseudo --mode bidimuestra tu fuente de derecha a izquierda en un pseudolocalear-XBy destapa los supuestos de diseño de izquierda a derecha antes de que exista ninguna traducción. Las imágenes e iconos espejados los revisas tú.
Idiomas con pocos recursos y modelos locales
Para un idioma que tu proveedor alojado cubre mal:
- Ejecuta un modelo local con
openai-compatible. Tiene que ser un modelo de chat ajustado a instrucciones que devuelva un único objeto JSON; consulta Elegir un modelo local. - Usa un modelo de traducción dedicado fuera de verbatra y trae el resultado de vuelta con el
ida y vuelta del libro de trabajo, que aplica las mismas comprobaciones
de integridad. Ninguno se conecta a
openai-compatible, porque no son modelos de chat: MADLAD-400 (Apache-2.0, más de 400 idiomas), TranslateGemma (55 idiomas, condiciones de uso de Gemma) y NLLB-200 (unos 200 idiomas, pero con licencia CC-BY-NC-4.0, así que no sirve para un producto comercial). Comprueba tú mismo la licencia de cada modelo. - Que traduzca una persona. El flujo sin traducción automática funciona con cualquier idioma.