IntlPull
Guide
14 min read

Localización de aplicaciones móviles: La guía completa 2026

Todo lo que necesitas saber sobre la localización de aplicaciones iOS y Android en 2026. Desde la planificación hasta la implementación, con las mejores prácticas y herramientas.

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

Todo lo que necesitas saber sobre la localización de aplicaciones iOS y Android en 2026. Desde la planificación hasta la implementación, con las mejores prácticas y herramientas.

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";
Swift
1// 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:

XML
1<!-- 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>
XML
1<!-- 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:

JavaScript
1// 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});
JSX
1// 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

  1. Las traducciones se alojan en una CDN
  2. La aplicación busca actualizaciones al iniciarse
  3. Sólo se descargan las cadenas modificadas (actualizaciones delta)
  4. Las nuevas traducciones aparecen al instante

Implementación de IntlPull OTA

iOS (Swift):

Swift
1import 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):

Kotlin
1import 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:

JavaScript
1import 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

AspectoTradicionalOTA
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
Swift
1// 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):

XML
1<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:

XML
1<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

Swift
1// 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:

Terminal
1# 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:

Terminal
1# Build new app version
2xcodebuild archive...
3# Submit to App Store
4# Wait...

Con OTA:

Terminal
1# 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

Swift
1// 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

Swift
1// 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

Swift
1// 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

ToolOTAAICLIPrice
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

Terminal
1# 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:

  1. Diseñar para ser flexible desde el principio (permitir la expansión del texto, utilizar el diseño automático)
  2. Utilizar API de localización adecuadas (no concatenar cadenas)
  3. Implementar actualizaciones OTA con IntlPull para iterar rápidamente
  4. Automatizar con herramientas CLI para ahorrar tiempo
  5. 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.

Tags
mobile
ios
android
localization
react-native
guide
2026
IntlPull Team
IntlPull Team
Engineering

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