Migración desde Intlayer
¿Migrando desde Intlayer? Este comando traslada los diccionarios de traducción existentes y el uso más básico de traducciones de tu aplicación a ai-i18n-tools. Realiza actualizaciones seguras de forma automática y, a continuación, genera un informe claro sobre cualquier aspecto que aún requiera tu atención. Esto te permite realizar la migración de forma gradual sin necesidad de comprender todas las diferencias de antemano.
¿Ya usas archivos de traducción JSON de i18next? No necesitas este comando de migración; en su lugar, utiliza la canalización JSON.
Qué hace migrate-intlayer
- Analiza las exportaciones por defecto de
*.content.ts(key+content+t({ locale: '…' })nodos hoja). - Inicializa
ui.stringsJsony los archivos por locale bajoui.flatOutputDira partir del texto del locale de origen y cualquier traducción que ya esté en el diccionario. Las filas importadas no tienen el campomodels(no fueron traducidas automáticamente en esta ejecución). - Reescribe los puntos de llamada seguros:
binding.path.to.leaf.value→t('English source')binding.path.value.replace('{token}', expr)→t('English {{token}}', { token: expr })
- Deja todo lo demás (claves dinámicas, spreads de JSX,
.replace().replace()encadenados, desestructuración) sin modificar. El informe enumera cada uno de esos sitios con la expresión exacta, un reemplazo concreto det()o JSX, y la líneaimport { t } from '…';a añadir. - Ejecución de prueba por defecto. Pase
--writepara aplicar la inicialización del catálogo y las reescrituras seguras. El informe siempre se genera. También enumera los archivos de diccionario y el uso restante deuseIntlayer/IntlayerProviderpara eliminar después de las reescrituras manuales, las claves del catálogo que aún necesitanextracty luegotranslate-ui, y un bootstrap de tiempo de ejecución para pegar sobre el módulo i18n de la aplicación.
Migra tu proyecto
Instala
ai-i18n-tools(consulta Instalación). Si tu proyecto aún no tiene unai-i18n-tools.config.json, genera uno:bashai-i18n-tools init [-P <provider>]
Edita sourceLocale y targetLocales para que coincidan con los locales ya presentes en tus diccionarios de Intlayer, y configura ui.sourceRoots, ui.stringsJson, ui.flatOutputDir para que apunten al código fuente de tu aplicación y a las rutas de catálogo deseadas — las mismas claves que usa translate-ui, consulta Cadenas de UI — Paso 1: Inicializar. 2. Ejecuta primero una prueba en seco: ai-i18n-tools migrate-intlayer (sin --write). Lee migrate-intlayer-report.md para ver qué encuentra y qué puntos de llamada necesitan revisión manual antes de realizar cambios en los archivos. 3. ai-i18n-tools migrate-intlayer --write para poblar ui.stringsJson / ui.flatOutputDir y reescribir los puntos de llamada seguros. 4. Pasa el informe regenerado migrate-intlayer-report.md a un agente de codificación de IA (recomendado), o revísalo tú mismo siguiendo estos pasos:
- El informe termina con un TODO paso a paso: completa cada punto de revisión manual con el
t('…')/JSX concreto que se muestra allí, añade la líneaimport { t } from '…';, y luego elimina los archivos*.content.tssobrantes y el uso deuseIntlayer/IntlayerProviderque enumera el informe.- Pega el bootstrap de tiempo de ejecución del informe sobre el módulo i18n de tu aplicación. En el control de locales, llama a
loadLocale(next)y luego ai18n.changeLanguage(next)—loadLocalesolo registra el paquete plano y no cambia el idioma activo. - Ejecuta
ai-i18n-tools extracty luegoai-i18n-tools translate-ui(osync) para cualquier cadena de origen que el informe marque como nueva.extracttambién escribeui-languages.json, que el bootstrap importa, así que ejecútalo antes de iniciar la aplicación incluso cuando no se haya añadido ninguna cadena nueva. No edites manualmentestrings.json, los archivos de locales planos, niui-languages.json— esos comandos los gestionan. - Una vez que la lista de limpieza del informe esté completa y la aplicación se ejecute en ai-i18n-tools, elimina las dependencias
intlayer/react-intlayery los archivos de diccionario.
- Pega el bootstrap de tiempo de ejecución del informe sobre el módulo i18n de tu aplicación. En el control de locales, llama a
Ejecutar el ejemplo
Los pasos anteriores se aplican a cualquier proyecto de Intlayer. El ejemplo de intlayer-migration los recorre en una pequeña aplicación Vite + React con casos básicos (reescritura automática) y complejos (revisión manual), para que puedas ver el informe y el bootstrap de tiempo de ejecución antes de probarlo en tu propio código. intlayer-pristine/ nunca se modifica; src/ es la copia de trabajo.
npx degit wsj-br/ai-i18n-tools/examples/intlayer-migration intlayer-migration
cd intlayer-migration
pnpm install
pnpm reset
pnpm migrate:dry
pnpm migrate:writeEntregue migrate-intlayer-report.md a un agente de codificación de IA (o edite usted mismo los archivos marcados). El informe incluye el módulo de tiempo de ejecución para pegar sobre src/i18n.ts. En el control de locale, llame a loadLocale(next) y luego a i18n.changeLanguage(next). loadLocale solo registra el bundle plano.
pnpm i18n:sync
pnpm devpnpm i18n:sync ejecuta extract primero, que escribe ui-languages.json. El bootstrap importa ese archivo, así que inicie la aplicación solo después de la extracción. No edite strings.json, los archivos de locale planos, ni ui-languages.json manualmente.
pnpm reset copia intlayer-pristine/ de nuevo sobre src/ y borra los catálogos generados para que pueda empezar de nuevo.
Tutorial completo: examples/intlayer-migration/README.md.
Comando
ai-i18n-tools migrate-intlayer [paths...] [--write] [--report <path>] [--content-glob <glob>] [--t-import <specifier>]Requiere ui.stringsJson y ui.flatOutputDir en la configuración (igual que translate-ui). No llama a un LLM.
| Opción | Significado |
|---|---|
[paths...] | Archivos/directorios/globos a escanear (predeterminado: ui.sourceRoots) |
--write | Sembrar el catálogo y reescribir sitios de llamada seguros (predeterminado: ejecución en seco) |
--report <path> | Ruta del informe (predeterminado: migrate-intlayer-report.md) |
--content-glob <glob> | Patrón glob de nombres de archivo de diccionario (valor predeterminado: **/*.content.ts) |
--t-import <specifier> | Especificador de importación para el t() generado (predeterminado: ./i18n relativo si existe src/i18n.ts, de lo contrario i18next) |
Después de --write, complete los sitios de revisión manual del informe, elimine los archivos *.content.ts no utilizados y el wrapper IntlayerProvider que enumera, pegue el bootstrap de tiempo de ejecución y llame a i18n.changeLanguage desde el control de locale. Ejecute extract y luego translate-ui (o sync) para las cadenas de origen que el informe marca como nuevas. extract también escribe ui-languages.json, que el bootstrap importa. No edite strings.json, los archivos de locale planos, ni ui-languages.json manualmente.
Ver también: CLI — Cadenas de interfaz de usuario, Conectar i18next