Saltar al contenido
Saltar al contenido

Referencia / CLI

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.

verbatra pseudo

Genera un pseudolocale a partir de tus cadenas de origen para que destaquen los botones cortados y las etiquetas sin extraer, sin proveedor ni clave de API.

Ejecuta tu app en un idioma que no existe. pseudo construye un locale falso a partir de tus cadenas de origen: cada valor se acentúa, se alarga y se envuelve en marcadores visibles, así que los botones recortados, las frases pegadas a trozos y las etiquetas nunca extraídas saltan a la vista. Con --mode bidi muestra en cambio cada cadena de derecha a izquierda. No construye ningún proveedor, no lee ninguna clave de API ni hace peticiones de red, así que funciona antes de que exista una clave.

Sinopsis

verbatra pseudo [flags]

Ejemplos

# generar en-XA en .verbatra-local/pseudo
verbatra pseudo

# mostrar cada cadena de derecha a izquierda en ar-XB
verbatra pseudo --mode bidi

# escribirlo donde el servidor de desarrollo ya sirve archivos estáticos (no hagas commit de un archivo bidi: GitHub marca su Unicode oculto)
verbatra pseudo --out public/locales-pseudo

# resultado legible por máquina para un script
verbatra pseudo --json

Flags

FlagArgumentoPor defectoEfecto
--mode<mode>accented la transformación: accented o bidi, que muestra cada palabra de derecha a izquierda (si no, INVALID_OPTION)
--locale<code>en-XA (ar-XB con --mode bidi)el pseudolocale que se genera; solo letras, dígitos y guiones (si no, INVALID_LOCALE)
--out<path>.verbatra-local/pseudodirectorio donde se escribe el pseudolocale, relativo al directorio de trabajo y dentro de la raíz del proyecto; un valor vacío es INVALID_OUT

También acepta los flags globales --cwd, --config y --json.

Comportamiento

Qué hace la transformación

PasoLo que ves
Acentuarcada letra ASCII pasa a un doble acentuado, así que Save se lee Śáṽé
Alargarel valor crece alrededor de un tercio de su longitud traducible, más o menos lo que el alemán necesita frente al inglés
Marcarel valor se envuelve entre [ y ], así que una cadena recortada o concatenada se ve enseguida

Hello {{name}}, you have {{count}} unread messages se convierte en [Ĥéĺĺó {{name}}, ýóú ĥáṽé {{count}} úńŕéáḋ ṁéśśáġéś············].

Solo cambia el texto traducible. Los placeholders sobreviven en cualquier sintaxis que reconozcan los adaptadores de formato, y dentro de un mensaje ICU los nombres de argumento, las palabras clave plural y select y los selectores de rama se quedan como están. Las formas plurales de vue-i18n separadas por barras se transforman una a una: car | cars pasa a [ćáŕ··] | [ćáŕś··]. La transformación es determinista, así que el archivo produce diffs limpios.

Modo de derecha a izquierda

--mode bidi cambia los acentos por una anulación de derecha a izquierda, el mismo enfoque que Android y Chromium usan para su pseudolocale ar-XB, así que un diseño que da por hecho texto de izquierda a derecha se nota antes de que exista ninguna traducción de derecha a izquierda.

PasoLo que ves
Anularcada palabra va entre una marca y una anulación de derecha a izquierda (U+200F U+202E delante, U+202C U+200F detrás), así que Save se muestra como evaS
Conservarlos placeholders, la sintaxis ICU, el marcado, los dígitos y la puntuación quedan fuera de la anulación y se leen de izquierda a derecha, como en un texto real de derecha a izquierda

Nada se acentúa, se alarga ni va entre corchetes: la anchura es lo que prueba el modo por defecto. El archivo guarda las letras en su orden original, y cada valor pasa la misma puerta de integridad, así que los placeholders y las ramas de plural quedan idénticos byte a byte.

El pseudolocale por defecto es ar-XB, que Intl.Locale y la mayoría de las bibliotecas de i18n resuelven de derecha a izquierda, así que una app que deduce dir del locale se invierte sola. ar-XB sigue las reglas de plural del árabe (zero, one, two, few, many, other). Los mensajes ICU, los <plurals> de Android, gettext, los catálogos de Apple y las barras de vue-i18n resuelven una cantidad con las formas que el archivo ya tiene. i18next-json guarda cada forma en su propia clave _one u _other, así que el archivo recibe además cada categoría que le falta al origen (_zero, _two, _few, _many, y las formas ordinales igual), rellenada con la forma other del origen, y ninguna cantidad recurre a tu idioma de respaldo. Pasa --locale en-XB para conservar las reglas de plural del inglés, y pon tú dir="rtl".

Un sanitizador que elimina los caracteres de formato Unicode quita la anulación, y la cadena vuelve a mostrarse de izquierda a derecha. Los editores y escáneres de código que avisan de caracteres bidireccionales ocultos marcan el archivo, un motivo más para que se quede en .verbatra-local.

Nunca llega nada roto al archivo

Cada valor generado pasa la misma puerta de integridad que la traducción de un proveedor: los mismos placeholders que el origen, sintaxis de mensaje válida, sin degenerar, no vacío. Un valor que fallaría se copia tal cual del origen y aparece bajo copied verbatim; es un aviso, no un fallo.

Dónde va la salida

El pseudolocale se escribe fuera de tus archivos de locale reales, por defecto en .verbatra-local/pseudo, que verbatra init añade a .gitignore (pseudo añade la entrada si falta). Tu files.pattern se expande dentro de ese directorio, así que con locales/{locale}.json la ejecución por defecto escribe .verbatra-local/pseudo/locales/en-XA.json. Apunta tu servidor de desarrollo ahí, o usa --out para escribir donde tu build ya sirve archivos.

PSEUDO_OUTPUT_CONFLICT rechaza, antes de leer o escribir nada:

  • un pseudolocale que nombra tu locale de origen o un locale de destino,
  • un --out que deja el archivo en el mismo directorio que un archivo de locale configurado,
  • un --out absoluto, que sale de la raíz del proyecto o que, tras resolver los enlaces simbólicos, acaba fuera del proyecto, en su raíz o sobre un archivo del que depende el proyecto.

Como el archivo queda fuera de files.pattern, translate nunca gasta en él y check y diff nunca lo informan.

Formatos que se escriben parcheando un archivo existente

Los escritores de xliff y apple-xcstrings parchean unidades que ya están en el documento de destino, así que el archivo del pseudolocale se vuelve a copiar desde tu archivo de origen en cada escritura, y una clave añadida después al origen también llega. En un XLIFF copiado, target-language se reescribe al pseudolocale.

Salida JSON

Esquema: pseudo-envelope.json valida el envoltorio completo; Esquemas enumera los demás.

Con --json, el envoltorio JSON lleva locale, mode (accented o bidi), path, entries (entradas escritas, incluidas las formas de plural añadidas en modo bidi), transformed (valores que difieren del origen), copied (claves copiadas tal cual) y written (false cuando el archivo ya estaba al día).

Información en el terminal

El resultado va a stdout; la línea de progreso y el siguiente paso van a stderr:

Salida
verbatra: pseudolocalizing the source... done (0.1s)
verbatra pseudo
  en-XA (accented): 118 of 120 entries pseudolocalized
    copied verbatim: legal.disclaimer, brand.name
  wrote .verbatra-local/pseudo/locales/en-XA.json
next: load .verbatra-local/pseudo/locales/en-XA.json as the en-XA locale in your dev server

Una segunda ejecución sobre un origen sin cambios informa unchanged en lugar de wrote. --quiet elimina las líneas de stderr. Consulta Salida en el terminal.

Códigos de salida

CódigoSignificado
0se generó el pseudolocale, haya cambiado el archivo o no; los valores copiados tal cual no cambian esto
2no pudo ejecutarse: un error de uso, un problema de configuración o de origen, o un pseudolocale o una ruta de salida rechazados

Consulta el contrato de códigos de salida.

Relacionado

Editar en GitHub

En esta página