InicioEntorno de pruebasExhibiciónAppDocBlog
    • Englishinglés
      EN
    • русскийruso
      RU
    • 日本語japonés
      JA
    • françaisfrancés
      FR
    • 한국어coreano
      KO
    • 中文chino
      ZH
    • españolespañol
      ES
    • Deutschalemán
      DE
    • العربيةárabe
      AR
    • italianoitaliano
      IT
    • British Englishinglés británico
      EN-GB
    • portuguêsportugués
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolaco
      PL
    • Indonesiaindonesio
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraniano
      UK
    /
    Filtrar documentación por framework
    Alt+←
    ¿Por qué Intlayer?
    Empezar
    Concepto
    • Cómo funciona Intlayer
    • Configuración
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Integración CI/CD
    • TraducciónPluralEnumeraciónCondiciónGéneroInserciónArchivoAnidaciónMarkdownHTMLObtención de función
    • Archivo por locale
    • Compilador
    • Autocompletado
    • Pruebas
    • Optimización de bundle
    Entornos
    • Next.js 14 y App RouterNext.js 15Next.js sin locale URLNext.js y Page RouterCompiler
    • Tanstack Start Solid
    • Astro y ReactAstro y SvelteAstro y VueAstro y SolidAstro y PreactAstro y LitAstro y Vanilla JS
    • React Router v7React Router v7 (fs-routes)Compiler
    • Nuxt y Vue
    • Vite y Solid
    • SvelteKit
    • Vite y Preact
    • Vite y Vanilla JS
    • Vite y Lit
    • Angular 19 (Webpack)Analog
    • React CRA
    • React Native y Expo
    • Express.jsNestJSFastifyHonoAdonis
    • Lynx y React
    Plugins
    • JSON
    • gettext (.po)
    Extensión VS Code
    Agente
    • Servidor MCP
    • Habilidades del agente
    Versiones
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Preguntar una pregunta
    1. Documentation
    2. Concepto
    3. Integración CI/CD

    Generación Automática de Traducciones en un Pipeline CI/CD

    Intlayer permite la generación automática de traducciones para tus archivos de declaración de contenido. Existen múltiples formas de lograr esto dependiendo de tu flujo de trabajo.

    Uso del CMS

    Con Intlayer, puedes adoptar un flujo de trabajo donde solo se declara un único locale localmente, mientras que todas las traducciones se gestionan de forma remota a través del CMS. Esto permite que el contenido y las traducciones estén completamente desacoplados del código base, ofreciendo más flexibilidad para los editores de contenido y habilitando la recarga en caliente del contenido (no es necesario reconstruir la aplicación para aplicar cambios).

    Configuración de Ejemplo

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],    requiredLocales: [Locales.ENGLISH], // Los locales opcionales se gestionarán de forma remota    defaultLocale: Locales.ENGLISH,  },  editor: {    dictionaryPriorityStrategy: "distant_first", // El contenido remoto tiene prioridad    applicationURL: process.env.APPLICATION_URL, // URL de la aplicación usada por el CMS    clientId: process.env.INTLAYER_CLIENT_ID, // Credenciales del CMS    clientSecret: process.env.INTLAYER_CLIENT_SECRET,  },  ai: {    applicationContext: "Esta es una aplicación de prueba", // Ayuda a asegurar una generación consistente de traducciones  },};export default config;

    Para aprender más sobre el CMS, consulta la documentación oficial.

    Uso de Husky

    Puedes integrar la generación de traducciones en tu flujo de trabajo local de Git usando Husky.

    Configuración de Ejemplo

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],    requiredLocales: [Locales.ENGLISH], // Los locales opcionales se manejan de forma remota    defaultLocale: Locales.ENGLISH,  },  editor: {    clientId: process.env.INTLAYER_CLIENT_ID,    clientSecret: process.env.INTLAYER_CLIENT_SECRET,  },  ai: {    provider: "openai",    apiKey: process.env.OPENAI_API_KEY, // Usa tu propia clave API    applicationContext: "Esta es una aplicación de prueba", // Ayuda a asegurar una generación consistente de traducciones  },};export default config;
    .husky/pre-push
    npx intlayer build                          # Para asegurar que los diccionarios estén actualizadosnpx intlayer fill --unpushed --mode fill    # Solo rellena el contenido faltante, no actualiza los existentes
    Para más información sobre los comandos CLI de Intlayer y su uso, consulta la documentación CLI.
    Si tienes múltiples aplicaciones en tu repositorio usando instancias separadas de Intlayer, puedes usar el argumento --base-dir de esta manera:
    .husky/pre-push
    # App 1npx intlayer build --base-dir ./app1npx intlayer fill --base-dir ./app1 --unpushed --mode fill# App 2npx intlayer build --base-dir ./app2npx intlayer fill --base-dir ./app2 --unpushed --mode fill

    Uso de GitHub Actions

    Intlayer proporciona un comando CLI para rellenar automáticamente y revisar el contenido del diccionario. Esto se puede integrar en tu flujo de trabajo CI/CD usando GitHub Actions.

    .github/workflows/intlayer-translate.yml
    name: Relleno Automático de Intlayer# Condiciones para activar este flujo de trabajoon:  pull_request:    branches:      - "main"permissions:  contents: write  pull-requests: writeconcurrency:  group: "autofill-${{ github.ref }}"  cancel-in-progress: truejobs:  autofill:    runs-on: ubuntu-latest    env:      # OpenAI      AI_MODEL: openai      AI_PROVIDER: gpt-5-mini      AI_API_KEY: ${{ secrets.AI_API_KEY }}    steps:      # Paso 1: Obtener el código más reciente del repositorio      - name: ⬇️ Clonar repositorio        uses: actions/checkout@v4        with:          persist-credentials: true # Mantener credenciales para crear PRs          fetch-depth: 0 # Obtener todo el historial git para análisis de diferencias      # Paso 2: Configurar el entorno de Node.js      - name: 🟢 Configurar Node.js        uses: actions/setup-node@v4        with:          node-version: 20 # Usar Node.js 20 LTS para estabilidad      # Paso 3: Instalar dependencias del proyecto      - name: 📦 Instalar dependencias        run: npm install      # Paso 4: Instalar Intlayer CLI globalmente para gestión de traducciones      - name: 📦 Instalar Intlayer        run: npm install -g intlayer-cli      # Paso 5: Construir el proyecto Intlayer para generar archivos de traducción      - name: ⚙️ Construir proyecto Intlayer        run: npx intlayer build      # Paso 6: Usar IA para rellenar automáticamente las traducciones faltantes      - name: 🤖 Rellenar automáticamente las traducciones faltantes        run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY      # Paso 7: Verificar si hay cambios y confirmarlos      - name: � Verificar cambios        id: check-changes        run: |          if [ -n "$(git status --porcelain)" ]; then            echo "has-changes=true" >> $GITHUB_OUTPUT          else            echo "has-changes=false" >> $GITHUB_OUTPUT          fi      # Paso 8: Confirmar y enviar cambios si existen      - name: 📤 Confirmar y enviar cambios        if: steps.check-changes.outputs.has-changes == 'true'        run: |          git config --local user.email "[email protected]"          git config --local user.name "GitHub Action"          git add .          git commit -m "chore: auto-fill missing translations [skip ci]"          git push origin HEAD:${{ github.head_ref }}

    Para configurar las variables de entorno, vaya a GitHub → Configuración → Secrets and variables → Actions y agregue el secreto .

    Al igual que con Husky, en el caso de un monorepo, puede usar el argumento --base-dir para tratar secuencialmente cada aplicación.
    Por defecto, el argumento --git-diff filtra los diccionarios que incluyen cambios desde la base (por defecto origin/main) hasta la rama actual (por defecto: HEAD).
    Para más información sobre los comandos de Intlayer CLI y su uso, consulte la documentación del CLI.
    Creación:2025-05-20Última actualización:2025-08-13
    Referencia esta doc a tu asistente AI favorito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección

    Historial de versiones

    1. "Historial inicial"
      v5.5.1029/6/2025

    El contenido de esta página ha sido traducido con una IA.

    Ver la última versión del contenido original en inglés
    Editar esta documentación

    Si tienes una idea para mejorar esta documentación, no dudes en contribuir enviando una pull request en GitHub.

    Enlace de GitHub a la documentación
    Copiar

    Copiar el Markdown del documento a la portapapeles

    Copiar código

    Copiar el código al portapapeles

    Copiar código

    Copiar el código al portapapeles

    Copiar código

    Copiar el código al portapapeles

    Copiar código

    Copiar el código al portapapeles

    Copiar código

    Copiar el código al portapapeles

    CMS
    Declaración de contenido
    Alt+→

    En esta página

      Las conversaciones son anónimas y se revisan regularmente para abordar problemas comunes. No dudes en compartir ideas de funcionalidades, comentarios sobre la documentación o cualquier cosa relacionada con Intlayer, usamos esta información para definir nuestra hoja de ruta y mejorar el producto.