Saltar al contenido

Docs / Conceptos

Página traducida automáticamente

Esta página se tradujo automáticamente, así que puede contener errores o sonar un poco rara. La versión en inglés es la fuente de la verdad. Leer el original en inglés.

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.

Disponible a partir de 0.12.0

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_BR.json, 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_BR 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.

ProveedorIdiomasCódigo enviadoGlosarioTono
anthropicSin lista fija. Claude multilingual supportTal como está escrito, más los nombres en inglés del idioma, la escritura y la regiónTérminos del locale en el promptEn el prompt
openaiSin lista fija. Using the OpenAI API in different languagesTal como está escrito, más los nombresTérminos del locale en el promptEn el prompt
geminiGemini language supportTal como está escrito, más los nombresTérminos del locale en el promptEn el prompt
opencodeLo que cubra el modelo de Zen que elijasTal como está escrito, más los nombresTérminos del locale en el promptEn el prompt
openai-compatibleLo que cubra el modelo que ejecutasTal como está escrito, más los nombresTérminos del locale en el promptEn el prompt
deeplDeepL supported languagesNormalizado a los códigos de DeepLSolo un glosario de DeepL creado de antemano, por glossaryId, para 32 idiomasFormality de DeepL para algunos idiomas, no con una clave gratuita
google-translateCloud 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á escritoNingunoNinguno
libretranslateLos modelos instalados en tu servidor; la lista upstream muestra los que se pueden instalarSolo el idioma, salvo pt-BR, zh-Hans y zh-HantNingunoNinguno
noneNo aplica: no se llama a ningún proveedorNo se envía nadaNo aplicaNo 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 tone o 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 aviso LOCALE_UNVERIFIED_BY_PROVIDER.
  • unsupported: no figuran ni el código ni su idioma base. translate, watch y una nueva traducción de una sola clave rechazan la ejecución entera con LOCALE_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_NOT_WELL_TESTED, 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 localeDeepLGoogle Cloud TranslationLibreTranslateProveedores LLM
pt-BR / pt-PTPT-BR / PT-PTpt-BR / pt-PTpt-BR / ptPortuguese (Brazil) / Portuguese (Portugal)
es-419, es-MXES-419es-419, es-MXesSpanish (Latin America), Spanish (Mexico)
zh-Hans / zh-HantZH-HANS / ZH-HANTzh-CN / zh-TWzh-Hans / zh-HantChinese (Simplified) / Chinese (Traditional)
sr-Latn / sr-CyrlSR para ambossr-Latn / sr-Cyrlsr para ambosSerbian (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_RATIO_OUTLIER 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_few). Cuando al origen le falta una categoría que necesita el destino, la ejecución informa PLURAL_CATEGORIES_INCOMPLETE; con generatePlurals: true y 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-Forms tal 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 atributo dir que 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_REORDERED, porque en otro idioma otro orden suele ser correcto.
  • 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-Arab de derecha a izquierda, ku de izquierda a derecha). Solo cambia la visualización.
  • verbatra pseudo --mode bidi muestra tu fuente de derecha a izquierda en un pseudolocale ar-XB y 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.
Editar en GitHub

En esta página