Preguntas frecuentes
Encuentra respuestas a preguntas frecuentes
Primeros pasos
¿Necesito reconstruir mi aplicación después de publicar las traducciones?
No. Better i18n entrega las traducciones a través de una CDN global en tiempo de ejecución. Cuando publicas, las traducciones están disponibles en tu aplicación en ~60 segundos sin necesidad de reconstruir ni volver a desplegar. Tu SDK obtiene automáticamente las traducciones más recientes.
¿Qué sucede si el CDN está caído?
El CDN está diseñado para siempre devolver HTTP 200 — incluso durante errores, tu aplicación recibe {} o { "fallback": true } en lugar de un fallo.
El SDK tiene una cadena de respaldo de 5 capas:
- Caché en memoria (TtlCache, TTL de 60s)
- Fetch del CDN (con tiempo de espera + reintento)
- Almacenamiento persistente (si está configurado — ej. AsyncStorage en móvil)
- Datos de respaldo estáticos (traducciones empaquetadas que tú proporcionas)
- Error (solo si todas las capas fallan)
En la práctica, los usuarios casi nunca ven un fallo porque los datos en caché o estáticos siempre están disponibles.
¿Existe un plan gratuito?
¡Sí! Better i18n ofrece un nivel gratuito que incluye:
- 1 proyecto
- Claves de traducción ilimitadas
- Créditos de traducción con IA
- Entrega CDN
- Acceso a la CLI
Los planes de pago añaden más proyectos, miembros del equipo, funciones avanzadas y límites de uso más altos. Consulta la página de precios para detalles actuales.
¿Better i18n admite idiomas RTL?
Better i18n es una plataforma de entrega de cadenas — almacena y entrega cadenas de traducción independientemente de la dirección del texto. Los idiomas RTL como el árabe, el hebreo y el persa son completamente compatibles como destinos de traducción.
Sin embargo, el diseño y CSS RTL (ej. direction: rtl, interfaz espejada) es responsabilidad de tu aplicación. El SDK entrega las cadenas traducidas correctas; tu framework CSS gestiona la dirección visual.
Gestionar traducciones
¿Cuánto tiempo tarda la traducción con IA?
La velocidad de traducción con IA depende del volumen:
| Claves | Tiempo aproximado |
|---|---|
| 1–50 | Unos pocos segundos |
| 50–500 | Menos de 1 minuto |
| 500–1000 | 1–3 minutos |
| 1000+ | 3–5 minutos |
La traducción se ejecuta en lotes paralelos, por lo que escala bien. Puedes continuar trabajando en el panel mientras la traducción está en progreso.
¿Puedo usar traductores humanos en lugar de IA?
Por supuesto. Puedes:
- Invitar traductores con el rol Translator — obtienen acceso a una interfaz de traducción enfocada
- Usar la cola de revisión — los traductores pueden revisar, editar y aprobar traducciones
- Combinar IA + humano — usar IA para el primer paso, luego que traductores humanos revisen y refinen
El rol Translator solo tiene acceso a la edición de traducciones, no a la configuración del proyecto ni a la gestión de claves.
¿Qué es un namespace?
Un namespace es una agrupación lógica de claves de traducción. Por ejemplo:
common— cadenas compartidas como "Guardar", "Cancelar", "Cargando"auth— cadenas relacionadas con inicio de sesión/registrodashboard— cadenas específicas del panel de control
Los namespaces permiten la carga diferida — tu aplicación solo obtiene las traducciones que necesita para la página actual. También ayudan a organizar claves y reducir conflictos en proyectos grandes.
En el código, referencias los namespaces así: t('common:save_button') o useTranslations('common').
¿Se pueden revertir las traducciones?
Sí. Cada publicación crea una instantánea de tus traducciones. Si algo sale mal:
- Ve al Historial de publicaciones de tu proyecto
- Encuentra la publicación buena anterior
- Haz clic en Revertir
Esto restaura el CDN a la instantánea seleccionada. Tu aplicación servirá las traducciones revertidas en ~60 segundos.
Integración para desarrolladores
¿Debo usar un singleton o múltiples instancias del SDK?
Siempre usa un singleton — crea una instancia del SDK a nivel de módulo y reutilízala en todas partes.
El TtlCache del SDK es un global a nivel de módulo compartido entre todas las instancias de createI18nCore() en el mismo proceso. Crear múltiples instancias es ineficiente pero no dañino — compartirán el mismo caché.
// ✅ Bien — singleton a nivel de módulo
export const i18n = createI18n({ project: 'acme/dashboard', ... });
// ❌ Evitar — crear dentro de un componente/handler
function handler() {
const i18n = createI18n({ ... }); // Nueva instancia por solicitud
}
¿Qué es el formato org/project?
El identificador de proyecto usa el formato org/project, como acme/dashboard. Esto se corresponde directamente con la URL del CDN:
https://cdn.better-i18n.com/acme/dashboard/manifest.json
https://cdn.better-i18n.com/acme/dashboard/en/translations.json
- org — el slug de tu organización (establecido durante el registro)
- project — el slug del proyecto (establecido al crear un proyecto)
Este formato se usa en todas partes: configuración del SDK, configuración de CLI, llamadas a la API y URLs del CDN. Distingue entre mayúsculas y minúsculas.
¿El SDK funciona en runtimes edge?
Sí. El SDK solo usa la API Fetch estándar — no se requieren módulos integrados de Node.js (fs, path, crypto, etc.). Esto significa que funciona en:
- Cloudflare Workers
- Vercel Edge Functions
- Deno Deploy
- Bun
- Cualquier runtime compatible con estándares Web
El único requisito es una función fetch global. También puedes pasar un fetch personalizado mediante la opción de configuración fetch si es necesario.
¿Cuál es la diferencia entre la CLI y el SDK?
Sirven propósitos diferentes:
CLI (@better-i18n/cli) |
SDK (@better-i18n/next, etc.) |
|
|---|---|---|
| Cuándo | Tiempo de desarrollo | Runtime |
| Propósito | Escanear código, sincronizar claves, verificar estado | Obtener y mostrar traducciones |
| Se ejecuta en | Tu máquina / CI | Tu aplicación (navegador, servidor, móvil) |
| Auth | Clave secreta (sk_...) |
Clave pública o ninguna |
| Instalación | Global o devDependency | Dependency |
La CLI gestiona tus claves de traducción. El SDK las entrega a los usuarios.
Solución de problemas
¿Cómo verifico si el CDN está saludable?
Obtiene directamente tus traducciones para verificar la salud del CDN:
# Verificar manifiesto
curl -w '\nHTTP %{http_code} | Time: %{time_total}s\n' \
https://cdn.better-i18n.com/your-org/your-project/manifest.json
# Verificar traducciones
curl -w '\nHTTP %{http_code} | Time: %{time_total}s\n' \
https://cdn.better-i18n.com/your-org/your-project/en/translations.json
El CDN siempre devuelve HTTP 200. Verifica el cuerpo de la respuesta:
- JSON válido con tus traducciones → CDN saludable
{}o{ "fallback": true }→ traducciones aún no publicadas- Tiempo de respuesta > 1s → posible problema de red (típico es <100ms)
¿Por qué mi aplicación muestra la configuración regional de respaldo en vez del idioma del usuario?
Cuatro causas comunes:
- Configuración regional no publicada — verifica si existen traducciones para ese idioma en el panel y están publicadas
- Discrepancia de normalización de locale — el CDN usa BCP 47 en minúsculas (
pt-br), pero tu aplicación podría enviarpt-BR. UsanormalizeLocale()de@better-i18n/core - Middleware no detecta locale — verifica la configuración de tu middleware y asegúrate de que la coincidencia del encabezado
Accept-Languageesté configurada - Locale faltante en el manifiesto — el manifiesto CDN lista las locales disponibles. Si tu locale no está allí, el SDK regresa al locale predeterminado
Verifica consultando el manifiesto:
curl https://cdn.better-i18n.com/your-org/your-project/manifest.json
La respuesta debe listar todas las locales publicadas.
IA y automatización
¿Es la traducción con IA suficientemente precisa para producción?
Para la mayoría del contenido, sí. La calidad de traducción con IA depende de varios factores:
- Contexto — las claves con anotaciones de contexto se traducen significativamente mejor
- Glosario — aplicar terminología consistente elimina los errores más comunes
- Tipo de contenido — cadenas de UI, etiquetas y descripciones cortas se traducen muy bien. El contenido de marketing y creativo puede necesitar revisión humana
El enfoque recomendado: usar IA para la primera pasada, luego que hablantes nativos revisen el contenido crítico orientado al usuario. La cola de revisión hace que este flujo de trabajo sea fácil.
¿Qué modelos de IA se usan para la traducción?
Better i18n utiliza una combinación de grandes modelos de lenguaje optimizados para la calidad de traducción. La plataforma selecciona automáticamente el mejor modelo según el tipo de contenido y el par de idiomas.
No necesitas elegir ni configurar modelos — la plataforma se encarga de esto. La selección de modelos se mejora continuamente en función de las métricas de calidad de traducción.
¿Qué agentes de codificación con IA funcionan con el servidor MCP?
Cualquier agente compatible con MCP funciona con el servidor MCP de Better i18n, incluyendo:
- Claude Code (CLI) — soporte completo
- Claude Desktop — soporte completo
- Cursor — a través de la configuración MCP
- Windsurf — a través de la configuración MCP
- Continue — a través de la configuración MCP
- Agentes personalizados — cualquier cosa construida con el MCP SDK
El servidor MCP expone herramientas para gestionar claves de traducción, traducciones, publicación y gestión de contenido. El agente llama a estas herramientas mediante comandos en lenguaje natural.
Gestión de contenido
¿Cuál es la diferencia entre las claves de traducción y el Content SDK?
Sirven diferentes casos de uso:
| Claves de traducción | Content SDK | |
|---|---|---|
| Para | Cadenas UI cortas | Contenido enriquecido estructurado |
| Ejemplos | Etiquetas de botones, mensajes de error, títulos de página | Publicaciones de blog, registros de cambios, artículos de ayuda |
| Formato | Pares clave-valor | Modelos de contenido con campos tipados |
| Edición | Editor de traducción del panel | Editor de contenido del panel (Markdown) |
| Entrega | CDN a través del SDK | API de contenido a través de @better-i18n/sdk |
Usa claves de traducción para texto UI. Usa el Content SDK para contenido estructurado con título, cuerpo, metadatos y relaciones.
¿Hay límites de velocidad en el Content SDK?
Sí, los límites de velocidad dependen de tu nivel de plan. La API devuelve cabeceras estándar de límite de velocidad:
X-RateLimit-Limit— solicitudes permitidas por ventanaX-RateLimit-Remaining— solicitudes restantesX-RateLimit-Reset— cuándo se restablece la ventana (marca de tiempo Unix)
Si superas el límite, la API devuelve HTTP 429. El SDK no reintenta automáticamente en límites de velocidad — maneja esto en tu aplicación si estás haciendo muchas solicitudes.
Para la mayoría de las aplicaciones, los límites de velocidad son lo suficientemente generosos. El caché del lado del servidor (como se usa en la aplicación del centro de ayuda) reduce aún más las llamadas a la API.
Equipo y cuenta
¿Cuántos proyectos puedo tener?
El número de proyectos depende de tu nivel de plan:
- Gratuito — 1 proyecto
- Pro — múltiples proyectos (ver página de precios para el límite actual)
- Enterprise — proyectos ilimitados
Cada proyecto es completamente independiente con sus propias claves, idiomas, miembros del equipo e historial de publicaciones. Consulta la página de precios para detalles actuales.
¿Pueden los traductores ver todos los proyectos de mi organización?
No. Los miembros del equipo se asignan por proyecto. Un traductor invitado al "Proyecto A" no puede ver el "Proyecto B" a menos que sea añadido explícitamente.
Esto te permite:
- Invitar traductores externos a proyectos específicos sin exponer otros
- Asignar diferentes traductores a diferentes proyectos
- Controlar el acceso de forma granular en toda tu organización