Skip to content

Archivos YAML (.yaml/.yml): Guía Completa de Localización Basada en YAML

Updated: 28 March, 2026

¿Qué Son los Archivos YAML para Localización?

YAML (YAML Ain’t Markup Language) es un formato de serialización de datos legible por humanos ampliamente usado para archivos de configuración y localización. Su sintaxis limpia con anidamiento basado en indentación lo hace particularmente popular en frameworks web como Ruby on Rails, Symfony (PHP), Django y muchos otros.

Los archivos YAML usan extensiones .yaml o .yml y proporcionan una forma intuitiva de organizar strings de traducción jerárquicamente, haciéndolos fáciles de leer, escribir y mantener.

Por Qué AZbox Soporta el Formato YAML

En AZbox, reconocemos que YAML es el formato estándar de localización para muchos frameworks populares. Por eso AZbox soporta completamente la importación y exportación de archivos YAML, permitiéndote:

  • Importar archivos YAML existentes directamente a tu proyecto AZbox
  • Exportar traducciones de vuelta al formato YAML para tu framework
  • Soportar estructuras anidadas comunes en Rails y Symfony
  • Manejar múltiples convenciones YAML (estilo Rails, plano, anidado)
  • Gestionar traducciones con nuestra potente plataforma en la nube
  • Colaborar con traductores que pueden trabajar sin conocimientos técnicos

Sintaxis Básica de YAML

Pares Clave-Valor

Estructura simple clave-valor:

welcome: Bienvenido
goodbye: Adiós
button_save: Guardar
button_cancel: Cancelar

Estructura Anidada

Organización jerárquica con indentación:

navigation:
  home: Inicio
  about: Sobre Nosotros
  contact: Contacto
  
buttons:
  save: Guardar
  cancel: Cancelar
  delete: Eliminar
  
errors:
  network: Error de red
  server: Error del servidor
  validation: Validación fallida

Strings Multilínea

Diferentes formas de manejar texto largo:

# Bloque literal (preserva saltos de línea)
description: |
  Esta es una descripción
  multilínea que preserva
  los saltos de línea.

# Bloque plegado (une líneas)
summary: >
  Este es un texto largo que
  se unirá en una sola
  línea con espacios.

# Strings entrecomilladas
message: "Hola, esta es una string \"entrecomillada\""
apostrophe: "Está funcionando!"

YAML para Diferentes Frameworks

Ruby on Rails

Rails usa archivos YAML con prefijo de locale:

config/locales/en.yml:

en:
  activerecord:
    models:
      user: User
      post: Post
    attributes:
      user:
        name: Name
        email: Email
  
  views:
    users:
      index:
        title: Users
        new_user: New User
      show:
        edit: Edit
        delete: Delete
  
  flash:
    success: Operation completed successfully
    error: An error occurred

config/locales/es.yml:

es:
  activerecord:
    models:
      user: Usuario
      post: Publicación
    attributes:
      user:
        name: Nombre
        email: Correo electrónico
  
  views:
    users:
      index:
        title: Usuarios
        new_user: Nuevo Usuario
      show:
        edit: Editar
        delete: Eliminar
  
  flash:
    success: Operación completada con éxito
    error: Ocurrió un error

Symfony (PHP)

Symfony usa archivos YAML basados en dominio:

translations/messages.en.yaml:

app:
  name: My Application
  tagline: The best app ever

navigation:
  home: Home
  dashboard: Dashboard
  settings: Settings

user:
  profile: Profile
  logout: Log Out
  login: Sign In

translations/messages.es.yaml:

app:
  name: Mi Aplicación
  tagline: La mejor app del mundo

navigation:
  home: Inicio
  dashboard: Panel
  settings: Configuración

user:
  profile: Perfil
  logout: Cerrar Sesión
  login: Iniciar Sesión

Django (Python)

Django típicamente usa gettext (.po), pero YAML también es soportado:

es:
  greeting: Hola
  farewell: Adiós
  
  messages:
    welcome: Bienvenido a nuestra aplicación
    success: Operación exitosa
    error: Ocurrió un error

Spring Boot (Java)

messages_es.yml:

messages:
  greeting: Hola
  welcome: Bienvenido a {0}
  
errors:
  not_found: Recurso no encontrado
  unauthorized: Acceso denegado
  
validation:
  required: Este campo es requerido
  email: Formato de email inválido

Laravel (PHP) - Alternativa a arrays PHP

es:
  auth:
    failed: Estas credenciales no coinciden con nuestros registros.
    throttle: Demasiados intentos de inicio de sesión. Por favor intente de nuevo en :seconds segundos.
  
  pagination:
    previous: "« Anterior"
    next: "Siguiente »"
  
  passwords:
    reset: "¡Tu contraseña ha sido restablecida!"
    sent: "¡Hemos enviado el enlace de restablecimiento a tu correo!"

Patrones de Estructura YAML

Estructura Plana

Claves simples, sin anidar:

welcome_title: Bienvenido
welcome_message: Bienvenido a nuestra app
button_save: Guardar
button_cancel: Cancelar
error_network: Error de red

Claves con Notación de Punto

Estructura plana con puntos indicando jerarquía:

nav.home: Inicio
nav.about: Sobre Nosotros
nav.contact: Contacto
user.profile: Perfil
user.settings: Configuración
error.network: Error de red
error.server: Error del servidor

Estructura Profundamente Anidada

Organización jerárquica completa:

app:
  name: Mi App
  
  pages:
    home:
      title: Inicio
      welcome: ¡Bienvenido de nuevo!
    
    dashboard:
      title: Panel
      widgets:
        stats: Estadísticas
        activity: Actividad Reciente
    
    settings:
      title: Configuración
      sections:
        profile: Configuración de Perfil
        notifications: Preferencias de Notificación
        security: Opciones de Seguridad

Estructura Mixta

Combinando enfoques:

# Secciones de nivel superior
common:
  save: Guardar
  cancel: Cancelar
  delete: Eliminar

# Específico por característica
user.profile.title: Perfil de Usuario
user.profile.edit: Editar Perfil
user.settings.title: Configuración

# Anidado para características complejas
checkout:
  cart:
    title: Carrito de Compras
    empty: Tu carrito está vacío
  payment:
    title: Pago
    methods:
      card: Tarjeta de Crédito
      paypal: PayPal

Marcadores de Posición e Interpolación

Interpolación Estilo Rails

Usando sintaxis %{variable}:

es:
  greeting: "¡Hola, %{name}!"
  items_in_cart: "Tienes %{count} artículos en tu carrito"
  welcome_back: "¡Bienvenido, %{username}! Último acceso: %{date}"

Uso en Rails:

t('greeting', name: 'Juan')
# => "¡Hola, Juan!"

Parámetros Estilo Symfony

Usando %parameter% o {{ parameter }}:

greeting: "¡Hola, %name%!"
items_count: "Tienes {{ count }} artículos"

Marcadores Estilo sprintf

Usando formato %s, %d:

greeting: "¡Hola, %s!"
count: "%d artículos restantes"
price: "Total: %.2f€"

Marcadores Nombrados (Genérico)

Usando sintaxis {variable}:

welcome: "¡Bienvenido, {username}!"
order_status: "Pedido #{orderId} está {status}"
file_info: "{filename} ({size} KB)"

Pluralización en YAML

Pluralización en Rails

Rails usa claves especiales para pluralización:

es:
  items:
    zero: "Sin artículos"
    one: "1 artículo"
    other: "%{count} artículos"
  
  messages:
    zero: "Sin mensajes nuevos"
    one: "1 mensaje nuevo"
    few: "%{count} mensajes nuevos"  # Para idiomas que lo necesitan
    many: "%{count} mensajes nuevos"
    other: "%{count} mensajes nuevos"

Uso:

t('items', count: 0)  # => "Sin artículos"
t('items', count: 1)  # => "1 artículo"
t('items', count: 5)  # => "5 artículos"

Pluralización en Symfony

Usando formato ICU message:

items_count: "{count, plural, =0{Sin artículos} one{# artículo} other{# artículos}}"

O formato transChoice:

items_count: "{0}Sin artículos|{1}Un artículo|]1,Inf[%count% artículos"

Estructura Plural Genérica

Claves separadas para cada forma:

items:
  zero: Sin artículos
  one: "{count} artículo"
  two: "{count} artículos"
  few: "{count} artículos"
  many: "{count} artículos"
  other: "{count} artículos"

Caracteres Especiales y Escape

Reglas de Entrecomillado

# No se necesitan comillas para strings simples
simple: Hola Mundo

# Comillas simples (literal)
literal: 'Hola\nMundo'  # \n es literal, no salto de línea

# Comillas dobles (secuencias de escape funcionan)
escaped: "Hola\nMundo"  # \n se convierte en salto de línea

# Comillas necesarias para caracteres especiales
special: "Hola: Mundo"  # Dos puntos en valor
with_hash: "Usa #hashtag"  # Símbolo de almohadilla

Caracteres Reservados

CarácterContextoSolución
:En valoresEntrecomillar string
#Inicio de valorEntrecomillar string
@Inicio de valorEntrecomillar string
*Inicio de valorEntrecomillar string
&Inicio de valorEntrecomillar string
!Inicio de valorEntrecomillar string
%Inicio de valorEntrecomillar string
[, ]En valoresEntrecomillar string
{, }En valoresEntrecomillar string

Ejemplos

# Manejo correcto de caracteres especiales
colon_value: "Hora: 10:30"
hash_tag: "#trending"
at_mention: "@username"
ampersand: "Términos y Condiciones"
url: "https://example.com"
json_like: "{\"key\": \"value\"}"

# Multilínea con caracteres especiales
html_content: |
  <p>Hola <strong>Mundo</strong></p>
  <a href="https://example.com">Enlace</a>

Organización de Archivos YAML

Por Idioma (Convención Rails)

config/locales/
├── en.yml
├── es.yml
├── fr.yml
├── de.yml
└── ja.yml

Por Característica + Idioma

config/locales/
├── en/
│   ├── common.yml
│   ├── users.yml
│   ├── products.yml
│   └── errors.yml
├── es/
│   ├── common.yml
│   ├── users.yml
│   ├── products.yml
│   └── errors.yml
└── fr/
    ├── common.yml
    ├── users.yml
    ├── products.yml
    └── errors.yml

Convención Symfony

translations/
├── messages.en.yaml
├── messages.es.yaml
├── messages.fr.yaml
├── validators.en.yaml
├── validators.es.yaml
└── validators.fr.yaml

Importar YAML a AZbox

Paso 1: Prepara tus Archivos YAML

Asegúrate de que tus archivos son YAML válido:

  1. Indentación consistente (2 o 4 espacios, sin tabuladores)
  2. Entrecomillado correcto para caracteres especiales
  3. Codificación UTF-8
  4. Sintaxis YAML válida

Paso 2: Importar vía Panel de AZbox

  1. Inicia sesión en tu panel de AZbox
  2. Navega a tu proyecto
  3. Ve a la sección Importar/Exportar
  4. Selecciona Importar y elige YAML (.yaml/.yml)
  5. Sube tus archivos YAML
  6. Configura las opciones de importación:
    • Estilo YAML (Rails, Symfony, plano, anidado)
    • Manejo de clave raíz de locale
    • Separador de claves (notación de punto)
  7. Previsualiza y confirma la importación

Paso 3: Opciones de Manejo de Claves

Estilo Rails (prefijo de locale):

es:
  welcome: Bienvenido

→ Clave: welcome

Estructura plana:

welcome: Bienvenido

→ Clave: welcome

Anidado a notación de punto:

nav:
  home: Inicio

→ Clave: nav.home

Exportar YAML desde AZbox

Opciones de Exportación

OpciónDescripción
EstiloRails, Symfony, plano, anidado
Prefijo de localeIncluir clave raíz es:
Indentación2 o 4 espacios
Formato de clavesAnidado o notación de punto
Estilo de comillasSimples, dobles o mínimo

Pasos de Exportación

  1. Ve a Importar/Exportar en tu proyecto
  2. Selecciona Exportar y elige YAML
  3. Configura las opciones de exportación para tu framework
  4. Descarga los archivos YAML generados

Exportaciones Específicas por Framework

Para Rails:

es:
  navigation:
    home: Inicio
    about: Sobre Nosotros

Para Symfony:

navigation:
  home: Inicio
  about: Sobre Nosotros

Exportación plana:

navigation.home: Inicio
navigation.about: Sobre Nosotros

Usar YAML en tu Aplicación

Ruby on Rails

Acceder a traducciones:

# En vistas (ERB)
<%= t('navigation.home') %>
<%= t('greeting', name: current_user.name) %>

# En controladores
flash[:notice] = t('flash.success')

# Con pluralización
t('items', count: @items.count)

Configuración (config/application.rb):

config.i18n.default_locale = :es
config.i18n.available_locales = [:en, :es, :fr, :de]
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml')]

Symfony (PHP)

Acceder a traducciones:

// En controladores
$this->translator->trans('navigation.home');

// Con parámetros
$this->translator->trans('greeting', ['%name%' => $user->getName()]);

En plantillas Twig:

{{ 'navigation.home'|trans }}
{{ 'greeting'|trans({'%name%': user.name}) }}

Spring Boot (Java)

Configuración MessageSource:

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = 
        new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:messages");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}

Acceder a traducciones:

@Autowired
private MessageSource messageSource;

String welcome = messageSource.getMessage("welcome", null, locale);
String greeting = messageSource.getMessage("greeting", new Object[]{name}, locale);

Node.js (con js-yaml)

Cargar YAML:

const yaml = require('js-yaml');
const fs = require('fs');

const translations = yaml.load(
    fs.readFileSync('locales/es.yml', 'utf8')
);

console.log(translations.navigation.home);

Mejores Prácticas para Localización YAML

1. Usa Indentación Consistente

Mal:

nav:
    home: Inicio
  about: Sobre Nosotros    # ¡Inconsistente!

Bien:

nav:
  home: Inicio
  about: Sobre Nosotros

2. Organiza las Claves Lógicamente

# Agrupar por característica
users:
  index:
    title: Usuarios
    search: Buscar usuarios
  show:
    title: Detalles de Usuario
  form:
    name: Nombre
    email: Email

# Agrupar por tipo
buttons:
  save: Guardar
  cancel: Cancelar
  delete: Eliminar

errors:
  required: Este campo es requerido
  invalid: Valor inválido

3. Usa Comentarios para Contexto

# Elementos del menú de navegación
navigation:
  home: Inicio          # Navegación principal
  dashboard: Panel
  
# Strings relacionadas con usuario
user:
  # Sección de perfil
  profile:
    title: Perfil
    edit: Editar Perfil  # Texto de botón, máx 15 chars

4. Mantén las Claves Consistentes Entre Idiomas

en.yml:

en:
  welcome: Welcome
  goodbye: Goodbye

es.yml:

es:
  welcome: Bienvenido
  goodbye: Adiós

5. Maneja Traducciones Faltantes

Configura fallbacks en tu framework:

# Rails
config.i18n.fallbacks = [:en]
// Symfony
framework:
    default_locale: es
    fallbacks: ['en']

Problemas Comunes y Soluciones

Problema: Sintaxis YAML Inválida

Problema: El parseo YAML falla.

Solución:

  • Verifica indentación (usa espacios, no tabuladores)
  • Valida con validador YAML online
  • Entrecomilla strings con caracteres especiales

Problema: Caracteres Especiales Rompen el Parseo

Problema: Dos puntos, almohadillas causan errores.

Solución:

# Mal
time: 10:30 AM

# Bien
time: "10:30 AM"

Problema: Problemas de Codificación

Problema: Caracteres no-ASCII se muestran incorrectamente.

Solución:

  • Guarda archivos como UTF-8
  • Asegúrate de que el framework lee UTF-8
  • Verifica configuración de codificación del editor

Problema: Claves No Encontradas

Problema: La traducción devuelve la clave en lugar del valor.

Solución:

  • Verifica que la ruta de clave coincide exactamente
  • Verifica que el archivo de locale está cargado
  • Busca erratas en claves anidadas

Problema: Interpolación No Funciona

Problema: %{name} aparece literalmente.

Solución:

  • Pasa la variable al traducir
  • Verifica la sintaxis de interpolación para tu framework
  • Asegúrate de que el nombre del marcador coincide

Funcionalidades YAML de AZbox

Cuando usas YAML con AZbox, te beneficias de:

  • Múltiples convenciones YAML - Soporte Rails, Symfony, plano, anidado
  • Detección inteligente de estructura - Auto-detecta tu estilo YAML
  • Manejo de claves anidadas - Preserva estructura jerárquica
  • Resaltado de marcadores - Marcadores visuales para %{variables}
  • Soporte de pluralización - Maneja formas plurales Rails/Symfony
  • Preservación de comentarios - Mantiene tus comentarios YAML
  • Opciones de indentación - Exporta con tu estilo preferido
  • Validación - Detecta errores de sintaxis YAML
  • Memoria de traducción - Aprovecha traducciones anteriores
  • Actualizaciones over-the-air - Actualiza sin redesplegar

Conclusión

Los archivos YAML proporcionan un formato limpio y legible para gestionar traducciones en muchos frameworks web populares. Con el soporte completo de YAML de AZbox, puedes:

  1. Importar archivos YAML existentes preservando estructura y jerarquía
  2. Soportar múltiples frameworks - Rails, Symfony, Django y más
  3. Manejar estructuras complejas incluyendo anidamiento y pluralización
  4. Exportar archivos YAML formateados para tu framework específico
  5. Colaborar con traductores en una interfaz amigable

¿Listo para optimizar tu flujo de trabajo de localización basado en YAML?

Comienza tu Prueba Gratuita | Ver Precios


AZbox proporciona soporte completo para archivos de localización YAML, convirtiéndolo en la plataforma ideal para desarrolladores Rails, Symfony, Django y otros frameworks. Importa, gestiona y exporta tus traducciones con facilidad.

Fondo de llamada a la acción

Comienza el Crecimiento Global Hoy

Únete a cientos de empresas exitosas que ya usan AZbox para llegar a clientes en todo el mundo. Comienza con una prueba gratuita, no se requiere tarjeta de crédito.

Comenzar - Es Gratis