verbatra pseudo
Genera una pseudolocale a partir de tus cadenas de origen, sin llamar a un proveedor ni leer una clave de API.
Página traducida automáticamente
Disponible a partir de 0.11.0
Ejecuta tu aplicación en un idioma que no existe. pseudo construye una locale falsa solo con tus cadenas de origen: cada valor se acentúa, se alarga y se envuelve en marcadores de límite visibles, así que un botón recortado, una frase pegada a partir de dos fragmentos y una etiqueta que nadie extrajo nunca para traducir saltan a la vista en pantalla. No gasta nada: no se construye ningún proveedor, no se hace ninguna petición de red y no se lee ninguna clave de API, así que funciona en un checkout recién clonado, antes de que exista clave alguna.
Úsalo el primer día, antes de tener una cuenta de proveedor, y de nuevo cada vez que cambies un diseño. verbatra translate --dry-run te dice qué traduciría una ejecución real; pseudo te da algo con lo que puedes arrancar la aplicación de verdad.
Sinopsis
verbatra pseudo [flags]Flags
| Flag | Argumento | Valor por defecto | Efecto |
|---|---|---|---|
--cwd | <path> | directorio actual | resolver la configuración y los archivos de locale desde este directorio |
--config | <path> | buscar una | cargar este archivo de configuración en lugar de buscar uno |
--locale | <code> | en-XA | la pseudolocale que se genera |
--out | <path> | .verbatra-local/pseudo | directorio donde se escribe la pseudolocale, relativo al directorio de trabajo y dentro de él |
--json | ninguno | desactivado | imprimir un envoltorio JSON en stdout con el resultado bajo result |
Qué hace la transformación
| Paso | Lo que ves |
|---|---|
| Acentuar | cada letra ASCII se convierte en un sosias acentuado, así que Save se lee Śáṽé |
| Expandir | 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 en [ y ], así una cadena recortada o concatenada se nota de un vistazo |
Hello {{name}}, you have {{count}} unread messages sale como
[Ĥéĺĺó {{name}}, ýóú ĥáṽé {{count}} úńŕéáḋ ṁéśśáġéś······].
Nada que no sea texto traducible se toca. Los marcadores de posición sobreviven en todas las sintaxis que reconocen los adaptadores de formato: tokens de llave doble, referencias anidadas de i18next, argumentos de llave simple e ICU, conversiones printf y variables de plural de Apple, etiquetas de marcado, entidades XML, mensajes enlazados de vue-i18n y secuencias de escape. Dentro de un mensaje ICU, los nombres de argumento, las palabras clave plural y select y cada selector de rama quedan exactamente como están escritos, y solo se acentúa el texto dentro de una rama.
vue-i18n empaqueta las formas de plural en un único valor separado por barras verticales, así que cada forma se acentúa, se expande y se marca por su cuenta: car | cars sale como [ćáŕ··] | [ćáŕś··] en lugar de como un solo bloque entre corchetes, que es justo donde el diseño de los plurales cuesta más.
La transformación es determinista: la misma fuente produce siempre la misma pseudolocale y el archivo se diferencia limpiamente.
Nunca llega nada roto al archivo
Cada valor generado pasa por la misma verificación de integridad que debe superar la traducción de un proveedor: los mismos marcadores de posición que la fuente, válido bajo la sintaxis de mensajes del formato, no degenerado y no vacío. Un valor que no la superaría se copia literalmente de la fuente y se nombra bajo copied verbatim en la salida, así que la entrada sigue presente y sigue renderizándose. Es un informe, no un fallo, y el comando sigue saliendo con 0.
Dónde va la salida
La pseudolocale se escribe fuera de tus archivos de locale reales, bajo .verbatra-local/pseudo por defecto. verbatra init ya añade .verbatra-local/ a .gitignore, así que el archivo generado no se commitea por accidente, y pseudo completa una .gitignore existente con esa entrada si le falta.
Tu files.pattern configurado se expande dentro de ese directorio, así que el archivo conserva la disposición que espera tu aplicación: con locales/{locale}.json, la ejecución por defecto escribe .verbatra-local/pseudo/locales/en-XA.json. Apunta tu servidor de desarrollo o tu biblioteca de i18n a ese directorio para cargarla. Pasa --out para escribirla donde tu build ya sirve archivos.
Dos reglas impiden que llegue a hacerse pasar por una traducción real:
- Una pseudolocale que nombre tu locale de origen o una de tus locales de destino se rechaza con
PSEUDO_OUTPUT_CONFLICT, antes de leer o escribir nada. - Un
--outque colocaría el archivo encima de un archivo de locale configurado se rechaza igual. - Un
--outabsoluto, o que se salga del directorio de trabajo con.., también se rechaza, para que una pseudolocale generada nunca aterrice fuera del proyecto del que salió.
Como el archivo vive fuera de files.pattern, verbatra translate nunca lo ve ni gasta en él, y verbatra check y verbatra diff nunca lo reportan como ausente ni obsoleto. No hay nada que añadir a targetLocales ni nada que excluir de la CI.
Formatos que se escriben parcheando un archivo existente
xliff y apple-xcstrings no se reescriben desde cero: sus escritores parchean unidades que ya están en el documento de destino. Por eso el archivo de la pseudolocale se vuelve a copiar desde tu archivo de origen en cada escritura, así que una clave que añadas al origen después de la primera ejecución sigue llegando a la pseudolocale en lugar de desaparecer en silencio. Un XLIFF copiado también recibe su atributo target-language reescrito a la pseudolocale, así que el archivo nunca afirma contener un idioma que no contiene.
Ejemplos
# generar en-XA bajo .verbatra-local/pseudo
verbatra pseudo
# generar una segunda pseudolocale al lado
verbatra pseudo --locale en-XB
# escribirla donde el servidor de desarrollo ya sirve archivos estáticos
verbatra pseudo --out public/locales-pseudo
# resultado legible por máquina para un script
verbatra pseudo --jsonUna ejecución se ve así:
verbatra pseudo
en-XA: 118 of 120 entries pseudolocalized
copied verbatim: legal.disclaimer, brand.name
wrote /app/.verbatra-local/pseudo/locales/en-XA.jsonVuelve a ejecutarlo sin cambiar la fuente y no reescribe nada:
verbatra pseudo
en-XA: 120 of 120 entries pseudolocalized
unchanged /app/.verbatra-local/pseudo/locales/en-XA.jsonCódigos de salida
| Código | Significado |
|---|---|
0 | la pseudolocale se generó, haya cambiado el archivo o no |
2 | no pudo ejecutarse: un error de uso, un problema de configuración o de la fuente, o una pseudolocale o una ruta de salida rechazadas |
No hay salida 1: un valor copiado literalmente se reporta, no se trata como un fallo.
Relacionado
verbatra translatehace el trabajo real, en cuanto tengas una clave.verbatra doctores el otro comando que valida un proyecto sin gastar nada.- Formatos lista la sintaxis de marcadores de posición de cada formato.
- El archivo de configuración documenta
files.pattern, que decide la disposición del archivo generado.