Respuesta rápida
La localización de aplicaciones móviles es el proceso de adaptar tu aplicación iOS, Android o React Native para usuarios en diferentes idiomas y regiones. Implica extraer cadenas a archivos de recursos, traducir contenido, formatear fechas/monedas por configuración regional y realizar pruebas para idiomas RTL. El enfoque más rápido en 2026 utiliza actualizaciones OTA (Over-the-Air) a través de IntlPull para empujar los cambios de traducción al instante sin lanzamientos de la tienda de aplicaciones.
Por qué es importante la localización móvil
Permítanme que me salte el discurso corporativo y les dé las cifras que realmente me convencieron de dar prioridad a la localización:
- 75% de los usuarios prefieren aplicaciones en su lengua materna (el otro 25% miente o son desarrolladores)
- Las aplicaciones localizadas tienen hasta un 128% más de descargas**, no es una errata
- Los ingresos aumentan entre un 25 y un 40% al añadir idiomas clave
- Las clasificaciones en las tiendas de aplicaciones mejoran en los mercados locales. Apple y Google favorecen las aplicaciones localizadas
Yo solía pensar "el inglés está bien, todo el mundo habla inglés" Entonces miré mis analíticas y vi que los usuarios rebotaban de mi aplicación en Alemania, Japón y Brasil. Resulta que a la gente le gusta el software que habla su idioma. Quién lo iba a decir.
Fundamentos de la localización móvil
Localización de iOS
iOS utiliza archivos .strings y .stringsdict para los plurales:
// Localizable.strings (English)
"welcome_title" = "Welcome to Our App";
"items_count" = "%d items";
"settings_button" = "Settings";
Swift1// Usage in Swift 2let title = NSLocalizedString("welcome_title", comment: "Welcome screen title") 3// Or with SwiftUI 4Text("welcome_title")
Estructura del archivo:
/YourApp
/en.lproj
Localizable.strings
InfoPlist.strings
/es.lproj
Localizable.strings
InfoPlist.strings
/ja.lproj
Localizable.strings
InfoPlist.strings
Localización Android
Android utiliza archivos de recursos XML:
XML1<!-- res/values/strings.xml (English) --> 2<resources> 3 <string name="welcome_title">Welcome to Our App</string> 4 <string name="items_count">%d items</string> 5 <string name="settings_button">Settings</string> 6</resources>
XML1<!-- res/values-es/strings.xml (Spanish) --> 2<resources> 3 <string name="welcome_title">Bienvenido a Nuestra App</string> 4 <string name="items_count">%d elementos</string> 5 <string name="settings_button">Configuración</string> 6</resources>
Kotlin// Usage in Kotlin val title = getString(R.string.welcome_title)
React Native Localization
Enfoque común con react-i18next:
JavaScript1// i18n.js 2import i18n from 'i18next'; 3import { initReactI18next } from 'react-i18next'; 4 5i18n.use(initReactI18next).init({ 6 resources: { 7 en: { translation: require('./locales/en.json') }, 8 es: { translation: require('./locales/es.json') }, 9 }, 10 lng: 'en', 11 fallbackLng: 'en', 12});
JSX1// Component usage 2import { useTranslation } from 'react-i18next'; 3 4function WelcomeScreen() { 5 const { t } = useTranslation('common'); 6 return <Text>{t('welcome_title')}</Text>; 7}
El problema de la App Store
Este es el sucio secreto que nadie te cuenta cuando empiezas a localizar aplicaciones móviles: actualizar una sola cadena traducida requiere una versión completa de la aplicación.
Piénsalo. Tu traductor alemán detecta una errata. Para corregirlo, tienes que hacerlo:
- Introducir la corrección en tu código base
- Aumentar el número de versión
- Crear un nuevo binario
- Enviar a Apple/Google
- Espere de 1 a 7 días para su revisión
- Cruzar los dedos para que los usuarios tengan activada la actualización automática
Todo eso por un simple error tipográfico. He visto campañas de marketing lanzadas con el texto promocional equivocado porque la actualización de la aplicación no se aprobó a tiempo. Es absurdo.
Escenarios reales que he vivido:
- ¿Error tipográfico en producción? Los usuarios vieron "Kasse bezaheln" (equivocado) en lugar de "Kasse bezahlen" (correcto) durante dos semanas.
- ¿Campaña navideña lista? Empezó el 26 de diciembre porque Apple se tomó su tiempo.
- ¿Necesitas hacer pruebas A/B? Creé y mantuve dos versiones distintas de la aplicación. Nunca más.
Actualizaciones de traducción OTA: La solución
Las actualizaciones OTA (Over-the-Air) te permiten enviar cambios de traducción directamente a los usuarios sin tener que publicar en la tienda de aplicaciones.
Cómo funciona
- Las traducciones se alojan en una CDN
- La aplicación busca actualizaciones al iniciarse
- Sólo se descargan las cadenas modificadas (actualizaciones delta)
- Las nuevas traducciones aparecen al instante
Implementación de IntlPull OTA
iOS (Swift):
Swift1import IntlPull 2 3// Initialize at app launch 4IntlPull.configure( 5 projectId: "your-project-id", 6 apiKey: "your-api-key" 7) 8 9// Use translations 10let title = IntlPull.t("welcome_title") 11 12// Translations update automatically in background
Android (Kotlin):
Kotlin1import com.intlpull.sdk.IntlPull 2 3// Initialize in Application class 4IntlPull.configure( 5 projectId = "your-project-id", 6 apiKey = "your-api-key" 7) 8 9// Use translations 10val title = IntlPull.t("welcome_title")
React Native:
JavaScript1import IntlPull from '@intlpullhq/react-native'; 2 3// Initialize 4IntlPull.configure({ 5 projectId: 'your-project-id', 6 apiKey: 'your-api-key', 7}); 8 9// Use hook 10function WelcomeScreen() { 11 const { t } = useIntlPull(); 12 return <Text>{t('welcome_title')}</Text>; 13}
Ventajas de las actualizaciones OTA
| Aspecto | Tradicional | OTA |
|---|---|---|
| Tiempo de actualización 1-7 días Instantáneo | ||
| Acción del usuario: debe actualizar la aplicación automáticamente | ||
| Corrección de erratas, nueva versión, 30 segundos | ||
| Pruebas A/B Múltiples versiones Panel de control | ||
| Contenido estacional Planificar con semanas de antelación Actualizar en cualquier momento |
Mejores prácticas de localización
1. Diseño para la localización
Permitir la expansión del texto:
- El texto alemán es ~30% más largo que el inglés
- Utilice diseños flexibles
- Evite los contenedores de texto de anchura fija
Swift1// Bad 2label.frame = CGRect(x: 0, y: 0, width: 100, height: 20) 3 4// Good 5label.sizeToFit() 6// or use Auto Layout constraints
2. 2. Pluralización
El inglés tiene 2 formas plurales. El árabe tiene 6. El ruso tiene 3.
iOS (stringsdict):
XML1<dict> 2 <key>items_count</key> 3 <dict> 4 <key>NSStringLocalizedFormatKey</key> 5 <string>%#@items@</string> 6 <key>items</key> 7 <dict> 8 <key>NSStringFormatSpecTypeKey</key> 9 <string>NSStringPluralRuleType</string> 10 <key>one</key> 11 <string>%d item</string> 12 <key>other</key> 13 <string>%d items</string> 14 </dict> 15 </dict> 16</dict>
Android:
XML1<plurals name="items_count"> 2 <item quantity="one">%d item</item> 3 <item quantity="other">%d items</item> 4</plurals>
3. Formato de números, fechas y monedas
Swift1// iOS 2let formatter = NumberFormatter() 3formatter.numberStyle = .currency 4formatter.locale = Locale.current 5let price = formatter.string(from: 99.99) 6// US: "$99.99", Germany: "99,99 €", Japan: "¥100"
Kotlin// Android val format = NumberFormat.getCurrencyInstance(Locale.getDefault()) val price = format.format(99.99)
4. Manejar lenguajes RTL
El árabe, el hebreo y el persa se leen de derecha a izquierda.
Swift// iOS - mostly automatic, but check: view.semanticContentAttribute = .forceRightToLeft
XML<!-- Android - enable RTL support --> <application android:supportsRtl="true">
5. Localizar imágenes y medios
Algunas imágenes contienen texto o contenidos culturalmente específicos:
Swift// iOS let imageName = NSLocalizedString("hero_image", comment: "") imageView.image = UIImage(named: imageName)
6. Prueba con Pseudolocalización
Antes de realizar traducciones reales, pruebe con pseudotraducciones:
"Welcome" → "[Ẃéĺćőḿé !!!]"
Esto ayuda a encontrar:
- Cadenas mal codificadas
- Problemas de maquetación con textos largos
- Traducciones que faltan
Flujo de trabajo de traducción
1. Extraer cadenas
Manual:
- Buscar cadenas codificadas
- Mover a archivos de recursos
- Espero que no te hayas perdido nada
Con IntlPull CLI:
Terminal1# Upload your existing string resources 2npx @intlpullhq/cli upload 3# Download translations to your project 4npx @intlpullhq/cli download
2. Gestionar traducciones
Sin un TMS:
- Enviar cadenas de texto por correo electrónico a los traductores
- Recibir traducciones de vuelta
- Fusión manual en archivos de recursos
- Seguimiento de las traducciones en hojas de cálculo
**Con IntlPull
- Cargar una vez en el panel de control
- Los traductores trabajan en la interfaz web
- La IA completa las traducciones que faltan
- Extraiga las traducciones con un solo comando
3. Despliegue de traducciones
Tradicional:
Terminal1# Build new app version 2xcodebuild archive... 3# Submit to App Store 4# Wait...
Con OTA:
Terminal1# Just push to IntlPull 2npx @intlpullhq/cli upload 3 4# Or click "Publish" in dashboard 5# Users get updates immediately
Errores comunes
1. Concatenar cadenas
Swift1// Bad - word order varies by language 2let message = "Hello " + name + ", welcome!" 3 4// Good 5let message = String(format: NSLocalizedString("greeting", comment: ""), name) 6// "greeting" = "Hello %@, welcome!"
2. Asumiendo la longitud del texto
Swift1// Bad 2button.setTitle("OK", for: .normal) 3button.frame.size.width = 40 // Breaks in German: "Einverstanden" 4 5// Good 6button.sizeToFit() 7// or use >= constraints
3. 3. Codificación de formatos de fecha
Swift1// Bad - US format won't work everywhere 2let dateString = "12/31/2026" 3 4// Good 5let formatter = DateFormatter() 6formatter.dateStyle = .medium 7formatter.locale = Locale.current
4. Olvidar los metadatos de la App Store
No olvide localizar:
- Nombre de la aplicación
- Descripción
- Palabras clave
- Capturas de pantalla
- Texto nuevo
Comparación de herramientas
| Tool | OTA | AI | CLI | Price |
|---|---|---|---|---|
| IntlPull Sí Sí Sí 12-399 $/mes | ||||
| Lokalise No Sí Sí Sí $90+/mes | ||||
| Crowdin No Básico Sí 40 $/usuario | ||||
| Phrase No Sí Sí 125+$/mes |
Cómo empezar
Paso 1: Auditar Estado Actual
- ¿Cuántas cadenas tiene?
- ¿Cuántos idiomas?
- ¿Con qué frecuencia actualiza las traducciones?
Paso 2: Elija sus herramientas
Para la mayoría de los equipos móviles, IntlPull ofrece la mejor combinación:
- Actualizaciones OTA (función exclusiva)
- Traducción AI
- Automatización CLI
- Precios asequibles
Paso 3: Configuración
Terminal1# Install CLI 2npm install -g @intlpullhq/cli 3 4# Initialize project 5npx @intlpullhq/cli init 6 7# Upload your string resources 8npx @intlpullhq/cli upload 9 10# Add OTA SDK to your app 11# iOS: pod 'IntlPull' 12# Android: implementation 'com.intlpull:sdk:1.0.0'
Paso 4: Integrar OTA
Siga las guías específicas de la plataforma en nuestra documentación.
Preguntas frecuentes
¿Cómo localizo mi aplicación móvil?
Para localizar una aplicación móvil, siga estos 5 pasos: (1) Extraiga todas las cadenas orientadas al usuario en archivos de recursos (strings.xml para Android, Localizable.strings para iOS), (2) Utilice un sistema de gestión de traducciones como IntlPull para organizar las traducciones, (3) Obtenga traducciones a través de AI o traductores profesionales, (4) Implemente un formato compatible con la localización para fechas/monedas, (5) Pruebe con pseudolocalización antes del lanzamiento. Para una iteración más rápida, implemente actualizaciones OTA para introducir cambios en las traducciones sin tener que publicar en la tienda de aplicaciones.
¿Cuál es la mejor herramienta para la localización de aplicaciones móviles?
IntlPull es la mejor herramienta de localización móvil porque es el único TMS importante que ofrece actualizaciones de traducción Over-the-Air (OTA) para iOS, Android y React Native. Esto significa que puedes corregir errores de traducción o lanzar campañas estacionales al instante, sin tener que esperar entre 1 y 7 días a la revisión de la tienda de aplicaciones.
¿Cuánto cuesta localizar una aplicación móvil?
Los costes de localización móvil varían según el enfoque: El bricolaje con autónomos cuesta entre 0,05 y 0,10 dólares por palabra de traducción humana. La traducción automática a través de IntlPull cuesta aproximadamente entre 0,001 y 0,005 dólares por palabra. Las plataformas TMS van desde niveles gratuitos (IntlPull: 1.000 claves) a planes para empresas (más de 399 dólares al mes). Coste total de una aplicación de 5.000 cadenas en 5 idiomas: entre 2.500 y 12.500 dólares con traducción humana, o entre 50 y 250 dólares con IA + revisión humana.
¿Cuánto tarda la localización móvil?
La localización inicial tarda de 2 a 4 semanas para una aplicación móvil típica (de 2.000 a 5.000 cadenas). Esto incluye la extracción de cadenas (1-3 días), la traducción (5-10 días para humanos, 1 día para IA), las pruebas (3-5 días) y el envío a la tienda de aplicaciones (1-7 días). Con las actualizaciones OTA de IntlPull, los cambios de traducción posteriores se implementan al instante sin tener que esperar a la tienda de aplicaciones.
¿Necesito aplicaciones distintas para cada idioma?
No, no necesitas aplicaciones separadas. Tanto iOS como Android admiten varios idiomas en un único binario de aplicación. El sistema operativo carga automáticamente el idioma correcto en función de la configuración del dispositivo del usuario. Tu trabajo consiste en proporcionar archivos de recursos para cada idioma compatible (en.lproj, es.lproj, etc. para iOS; values-es, values-fr para Android).
¿Cuál es la diferencia entre localización y traducción?
La traducción convierte texto entre idiomas. La localización adapta toda la experiencia del usuario a un mercado. La localización incluye la traducción, pero también abarca: formatos de fecha/hora (MM/DD frente a DD/MM), formato de moneda (99,99 $ frente a 99,99 €), soporte de diseño RTL (árabe, hebreo), imágenes y colores culturalmente apropiados, y cumplimiento de la normativa local. IntlPull se encarga tanto de la traducción como del formato específico de cada país.
Resumen
La localización móvil no tiene por qué ser dolorosa. Con el enfoque adecuado:
- Diseñar para ser flexible desde el principio (permitir la expansión del texto, utilizar el diseño automático)
- Utilizar API de localización adecuadas (no concatenar cadenas)
- Implementar actualizaciones OTA con IntlPull para iterar rápidamente
- Automatizar con herramientas CLI para ahorrar tiempo
- Pruebe con pseudolocalización antes de ponerlo en marcha
¿Preparado para simplificar la localización móvil? Comience gratis con IntlPull y envíe traducciones sin retrasos en la tienda de aplicaciones.
