IntlPull
Guide
12 min read

buenas prácticas de i18n: 15 reglas para la internacionalización en 2026

Domine la internacionalización con estas 15 mejores prácticas esenciales. Desde la arquitectura del código hasta la gestión de la traducción, crea aplicaciones que escalen globalmente.

IntlPull Team
IntlPull Team
03 Feb 2026, 11:44 AM [PST]
On this page
Summary

Domine la internacionalización con estas 15 mejores prácticas esenciales. Desde la arquitectura del código hasta la gestión de la traducción, crea aplicaciones que escalen globalmente.

Introducción

Después de ayudar a miles de equipos a internacionalizar sus aplicaciones, hemos identificado las prácticas que separan las implementaciones i18n fluidas y escalables de las dolorosas y con errores.

Estas son 15 reglas a seguir para una internacionalización exitosa.

Arquitectura del código

1. 1. Extraer todas las cadenas orientadas al usuario desde el primer día

No espere hasta que "necesitemos traducir" Para entonces, tendrás miles de cadenas hardcoded.

JavaScript
1// Bad - hardcoded string
2<button>Submit</button>
3
4// Good - extracted from start
5<button>{t('form.submit')}</button>

Consejo: Utilice la CLI de IntlPull para comprobar el estado de la traducción:

Terminal
npx @intlpullhq/cli status

2. Nunca concatenar cadenas

Los idiomas tienen diferentes órdenes de palabras. La concatenación rompe las traducciones.

JavaScript
1// Bad - breaks in German, Japanese, Arabic...
2const message = "Hello " + name + ", you have " + count + " messages";
3
4// Good - uses interpolation
5const message = t('greeting', { name, count });
6// en: "Hello {name}, you have {count} messages"
7// de: "Hallo {name}, Sie haben {count} Nachrichten"
8// ja: "{name}さん、{count}件のメッセージがあります"

3. Utilice el formato de mensaje ICU para cadenas complejas

ICU maneja los plurales, el género y la selección con elegancia:

{count, plural,
  =0 {No messages}
  one {# message}
  other {# messages}
}

{gender, select,
  male {He liked your post}
  female {She liked your post}
  other {They liked your post}
}

4. 4. Claves de traducción semánticas

Las claves deben describir el contenido, no la ubicación:

JavaScript
1// Bad - tied to UI location
2"homepage_header_title"
3"sidebar_menu_item_3"
4
5// Good - describes content
6"welcome.title"
7"navigation.settings"
8"error.network_unavailable"

5. 5. Organice las claves por funciones, no por archivos

Estructure las traducciones por dominio de característica:

/locales/en.json
{
  "auth": {
    "login": { ... },
    "signup": { ... }
  },
  "dashboard": {
    "overview": { ... },
    "settings": { ... }
  },
  "checkout": {
    "cart": { ... },
    "payment": { ... }
  }
}

Formato

6. Utilizar las API de formato nativas

No codifique nunca formatos numéricos, de fecha o de moneda:

JavaScript
1// Bad - US-only format
2const date = `${month}/${day}/${year}`;
3const price = `$${amount}`;
4
5// Good - locale-aware
6const date = new Intl.DateTimeFormat(locale).format(dateObj);
7const price = new Intl.NumberFormat(locale, {
8  style: 'currency',
9  currency: userCurrency
10}).format(amount);

Diferencias de localización: | US | Alemania | Japón | |---|---|---|---| | Fecha 31.12.2026 31.12.2026 2026/12/31 | Número | 1.234.56 | 1.234.56 | 1.234.56 | 1.234.56 | 1.234.56 | Divisa 99,99 dólares 99,99 euros 100 yenes

7. Manejar correctamente la pluralización

Cada idioma tiene sus propias reglas de plural:

IdiomaFormas plurales
Inglés 2 (uno, otro)
Francés 2+ (uno, otro, muchos)
Ruso 3 (uno, pocos, muchos)
Árabe 6 (cero, uno, dos, pocos, muchos, otros)
JavaScript
// Use ICU plural format
t('items', { count: 5 })
// Config handles the rules per language

8. Idiomas RTL compatibles

El árabe, el hebreo, el persa y el urdu se leen de derecha a izquierda:

CSS
1/* Use logical properties */
2.card {
3  margin-inline-start: 1rem;  /* Not margin-left */
4  padding-inline-end: 1rem;   /* Not padding-right */
5}
6
7/* Let dir attribute handle layout */
8[dir="rtl"] .icon {
9  transform: scaleX(-1);
10}
JSX
<html dir={isRTL ? 'rtl' : 'ltr'}>

Calidad de la traducción

9. Proporcionar contexto a los traductores

Los traductores necesitan saber dónde y cómo se utilizan las cadenas:

JSON
1{
2  "save": {
3    "value": "Save",
4    "context": "Button to save user profile changes, appears at bottom of form",
5    "maxLength": 10,
6    "screenshot": "save-button.png"
7  }
8}

10. Utilizar un glosario

Mantenga una terminología coherente en todas las traducciones:

InglésEspañolAlemánContexto
Panel de controlDashboardInterfaz de usuario principalSettings
SettingsConfiguraciónEinstellungenPreferencias del usuario
SubmitEnviarAbsendenBotón de envío del formulario

11. Aprovechar la memoria de traducción

No traduzca dos veces la misma frase. La TM atrapa:

  • Coincidencias exactas: "Guardar cambios" = "Guardar cambios"
  • Coincidencias difusas: "Save changes" ≈ "Guardar todos los cambios"

ROI: reducción del 30-60% de los costes de traducción a lo largo del tiempo.

Proceso

12. Automatizar la sincronización de traducciones

La sincronización manual hace perder tiempo y genera traducciones obsoletas:

Terminal
1# Sync translations in CI
2npx @intlpullhq/cli upload
3npx @intlpullhq/cli download
4
5# Or use watch mode for local development
6npx @intlpullhq/cli sync --watch

13. 13. Utilizar la localización continua

No haga traducciones por lotes. Localice continuamente:

YAML
1# GitHub Action example
2on:
3  push:
4    branches: [main]
5    paths:
6      - 'src/**'
7      - 'locales/en.json'
8
9jobs:
10  sync:
11    runs-on: ubuntu-latest
12    steps:
13      - uses: actions/checkout@v3
14      - run: npx @intlpullhq/cli upload
15      - run: npx @intlpullhq/cli download
16      - uses: stefanzweifel/git-auto-commit-action@v4

14. Prueba con Pseudo-Localización

Antes de traducciones reales, prueba con pseudo-traducciones:

"Welcome" → "[Ẃéĺćőḿé !!!!!!]"

La pseudotraducción revela:

  • Cadenas codificadas (no transformadas)
  • Problemas de maquetación (expansión del texto)
  • Problemas de truncamiento
  • Problemas de codificación de caracteres

15. Implementar actualizaciones OTA para móviles

No espere a los lanzamientos de la tienda de aplicaciones para corregir las traducciones:

Swift
// With OTA, translation updates are instant
let message = IntlPull.t("welcome.message")
// Change in dashboard → users see it immediately

Sin OTA: 1-2 semanas de retraso para cualquier cambio de traducción Con OTA: Actualizaciones instantáneas, sin necesidad de lanzar la aplicación

Antipatrones a evitar

No Usar concatenación de cadenas

JavaScript
// Never do this
"Welcome, " + name

Don't: Formato de código duro

JavaScript
// Never do this
date.toLocaleDateString('en-US')

No: Frases divididas

JavaScript
1// Never do this
2<span>{t('click')}</span>
3<Link>{t('here')}</Link>
4<span>{t('to_continue')}</span>

Don't: Asumir Idioma = País

JavaScript
// Never do this
if (country === 'US') language = 'en';
// Spanish speakers in US, Portuguese in US, etc.

Don't: Olvidar la expansión del texto

CSS
1/* Never do this */
2.button {
3  width: 100px; /* Breaks in German */
4}

Lista de comprobación

Antes de lanzarse en un nuevo idioma:

  • Todas las cadenas extraídas y traducidas
  • Pluralización comprobada
  • Formato de fecha/número/moneda correcto
  • La maquetación RTL funciona (si procede)
  • Imágenes e iconos localizados
  • Metadatos SEO traducidos
  • Mensajes de error traducidos
  • Plantillas de correo electrónico traducidas
  • Páginas legales traducidas
  • Probado por hablantes nativos

Herramientas que ayudan

| Necesita una herramienta |------|------| | Gestión de traducción IntlPull | Extracción de cadenas IntlPull CLI | Transformación de código IntlPull CLI | Traducción IA IntlPull (GPT-4, Claude) | Actualizaciones OTA SDK de IntlPull | Pseudolocalización IntlPull

Conclusión

Un buen i18n consiste en:

  1. Arquitectura limpia: Extraer cadenas pronto, usar interpolación
  2. Formateo adecuado: Dejar que las APIs gestionen las diferencias de localización
  3. Traducciones de calidad: Contexto, glosarios, TM
  4. Proceso inteligente: Automatización, flujo continuo, pruebas

Siga estas 15 prácticas y creará aplicaciones que escalarán globalmente sin los típicos problemas de i18n.

¿Listo para mejorar su i18n? Pruebe IntlPull gratis e implemente estas mejores prácticas con las herramientas adecuadas.

Tags
i18n
best-practices
internationalization
guide
tips
IntlPull Team
IntlPull Team
Engineering

Building tools to help teams ship products globally. Follow us for more insights on localization and i18n.