Skip to content
NeuralSkills
Revision de Codigo

Revision de Internacionalizacion

Revisa implementacion i18n: strings hardcodeados, soporte RTL, formato de fechas y numeros, y reglas de pluralizacion.

Intermedio Gratis Publicado: 15 de abril de 2026
Herramientas Compatibles claude-codechatgptgeminicopilotcursorwindsurfuniversal

El Problema

La internacionalizacion agregada despues del lanzamiento es diez veces mas cara que construirla desde el inicio. Strings hardcodeados se esconden en mensajes de error, tooltips, aria-labels y plantillas de email. El formato de fecha que funciona en EE.UU. se rompe en Alemania (1/2/2026 es 2 de enero o 1 de febrero?). Layouts disenados para ingles colapsan cuando el texto aleman es 30% mas largo o el texto arabe fluye de derecha a izquierda.

El Prompt

Revisa el siguiente codigo por preparacion para internacionalizacion. Actua como un especialista i18n preparando esta aplicacion para lanzamiento en 5 idiomas adicionales.

FRAMEWORK: [ej. React + react-i18next, Vue + vue-i18n, Astro, Next.js]
IDIOMAS ACTUALES: [ej. solo ingles, ingles + aleman]
IDIOMAS OBJETIVO: [ej. aleman, frances, arabe (RTL), japones]

CODIGO:
[pegar codigo de componentes y configuracion i18n]

ARCHIVOS DE TRADUCCION (si los hay):
[pegar archivos JSON/YAML de locale]

Evalua en estas dimensiones:

1. **Externalizacion de Strings**
   - Todos los strings visibles al usuario estan extraidos en archivos de traduccion?
   - Verificar: labels de botones, mensajes de error, placeholders, aria-labels, titulos de pagina
   - Hay concatenaciones de strings que se rompen en otros idiomas?

2. **Formato**
   - Las fechas se formatean con Intl.DateTimeFormat?
   - Los numeros se formatean con Intl.NumberFormat (separadores decimales varian)?
   - Las monedas se muestran correctamente (posicion del simbolo varia)?

3. **Pluralizacion**
   - La libreria i18n maneja reglas de plural mas alla de "uno/otros"?
   - Hay patrones manuales `count === 1 ? "item" : "items"`?

4. **Layout & RTL**
   - Los layouts usan propiedades logicas (margin-inline-start, no margin-left)?
   - El atributo `dir` esta establecido en el elemento HTML?
   - Los iconos con significado direccional se voltean para RTL?
   - La expansion de texto (aleman +30%) rompe layouts?

5. **Calidad de Traducciones**
   - Las claves de traduccion son semanticas (user.greeting, no text_1)?
   - Se proporciona contexto para traductores?

6. **Setup Tecnico**
   - La deteccion de locale esta implementada (URL, cookie, preferencia del navegador)?
   - Las URLs especificas por locale estan configuradas para SEO (hreflang, canonical)?
   - Las respuestas API estan localizadas?

Para cada problema, proporciona:
- **Ubicacion**: Archivo y linea o clave de traduccion
- **Severidad**: Roto-en-locale / Incompleto / Mejora
- **Idiomas Afectados**: Cuales idiomas impacta
- **Fix**: Codigo correcto para i18n

Ejemplo de Salida

## Revision i18n: 6 problemas encontrados

### Roto en Locale: String Concatenado
Ubicacion: src/components/Greeting.tsx:5
Codigo: `<h1>{"Welcome to " + city + "!"}</h1>`
Problema: El orden de palabras difiere. Aleman: "Willkommen in Berlin!"
         Japones: "ベルリンへようこそ!" — la ciudad va en el medio.
Fix: Usar interpolacion:
  t('greeting.welcome', { city }) → "Welcome to {{city}}!"
  de: "Willkommen in {{city}}!" / ja: "{{city}}へようこそ!"

### Roto en Locale: Formato de Fecha Manual
Ubicacion: src/utils/format.ts:12
Codigo: `${month}/${day}/${year}` — MM/DD/YYYY solo se usa en EE.UU.
Fix:
  new Intl.DateTimeFormat(locale, { year: 'numeric', month: 'long', day: 'numeric' }).format(date)

Cuando Usar

Ejecutar antes de agregar un segundo idioma, al auditar una app multilingue existente, o al prepararse para entrar a mercados RTL (arabe, hebreo). Esencial al inicio de cualquier proyecto que eventualmente pueda necesitar localizacion.

Tips Pro

  • Probar con idiomas extremos — aleman (palabras largas), japones (sin espacios), arabe (RTL) exponen la mayoria de bugs i18n.
  • Usar pseudo-localizacion — “Genera un archivo pseudo-locale que duplique longitudes de strings y agregue acentos para probar resiliencia.”
  • Verificar la superficie completa — plantillas de email, generacion de PDF y push notifications frecuentemente se olvidan al extraer strings.
  • Revisar etiquetas hreflang — “Verifica que todas las etiquetas hreflang son correctas y forman un conjunto bidireccional completo.”