Referencia / CLI
Página traducida automáticamente
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 --jsonFlags
| Flag | Argumento | Por defecto | Efecto |
|---|---|---|---|
--mode | <mode> | accented | la transformación: accented o bidi, que muestra cada palabra de derecha a izquierda (si no, INVALID_) |
--locale | <code> | en-XA (ar-XB con --mode bidi) | el pseudolocale que se genera; solo letras, dígitos y guiones (si no, INVALID_) |
--out | <path> | .verbatra-local/pseudo | directorio donde se escribe el pseudolocale, relativo al directorio de trabajo y dentro de la raíz del proyecto; un valor vacío es INVALID_ |
También acepta los flags globales --cwd, --config y --json.
Comportamiento
Qué hace la transformación
| Paso | Lo que ves |
|---|---|
| Acentuar | cada letra ASCII pasa a un doble acentuado, así que Save se lee Śáṽé |
| Alargar | el valor crece alrededor de un tercio de su longitud traducible, más o menos lo que el alemán necesita frente al inglés |
| Marcar | el 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.
| Paso | Lo que ves |
|---|---|
| Anular | cada 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 |
| Conservar | los 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 _ u _, así que el archivo recibe además cada categoría que le falta al origen (_, _, _, _, 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_ rechaza, antes de leer o escribir nada:
- un pseudolocale que nombra tu locale de origen o un locale de destino,
- un
--outque deja el archivo en el mismo directorio que un archivo de locale configurado, - un
--outabsoluto, 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:
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 serverUna 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ódigo | Significado |
|---|---|
0 | se generó el pseudolocale, haya cambiado el archivo o no; los valores copiados tal cual no cambian esto |
2 | no 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
verbatra translatehace lo de verdad, en cuanto tengas una clave.verbatra doctortambién valida un proyecto sin gastar nada.- Formatos lista la sintaxis de placeholders de cada formato.
- El archivo de configuración documenta
files.pattern, que fija la estructura del archivo generado.