Saltar a contenido

Textos y traducciones

MRBS separa el vocabulario de la interfaz, los textos propios del sitio, las páginas de ayuda y este manual MkDocs. Usar el nivel correcto facilita las actualizaciones.

Tarea Ubicación correcta
Cambiar una etiqueta en esta instalación $vocab_override en config.inc.php
Añadir o mejorar un idioma de la interfaz MRBS web/lang/lang.<idioma>
Traducir o adaptar la ayuda de la aplicación web/site_faq/site_faq_<idioma>.html
Traducir este manual Archivo con sufijo de idioma dentro de docs/

Sustituir textos de un sitio

No se debe editar un archivo de idioma distribuido solo para cambiar «Sala» o el título. Se busca la clave en web/lang/lang.en y se sustituye:

$vocab_override['en']['mrbs'] = 'Resource Booking';
$vocab_override['de']['mrbs'] = 'Ressourcenbuchung';
$vocab_override['fr']['mrbs'] = 'Réservation de ressources';
$vocab_override['es']['mrbs'] = 'Reserva de recursos';

El orden siempre es idioma y luego clave: $vocab_override[LANG][TOKEN].

Ejemplos de claves propias del sitio:

$vocab_override['es']['room.coffee_machine'] = 'Cafetera';
$vocab_override['es']['entry.catering'] = 'Catering';
$vocab_override['es']['entry.description.placeholder'] =
    'Añada información para el equipo de la sala';
$vocab_override['es']['users.zip_code.oninvalid'] =
    'Introduzca un código postal válido';
$vocab_override['es']['type.C'] = 'Reserva de cliente';

Véase Campos personalizados. Las descripciones de tipos de reserva usan type.X, donde X es el código configurado.

Las sustituciones sobreviven a una actualización porque están en la configuración local. Aun así, hay que revisarlas si una versión cambia el sentido o el contexto de la clave original.

Conservar los marcadores

Los textos pueden contener marcadores printf como %s, %d o formas posicionales como %1$d. Hay que conservar todos los marcadores y sus tipos. Solo las formas posicionales permiten reordenar argumentos.

También deben conservarse los fragmentos HTML intencionados, la puntuación significativa y los espacios necesarios. Probar los textos con cero, uno y varios elementos.

Elegir el idioma de ejecución

De forma predeterminada, MRBS usa el idioma del navegador:

$disable_automatic_language_changing = false;

Para imponer un idioma:

$disable_automatic_language_changing = true;
$default_language_tokens = 'es';

El valor debe coincidir con un archivo web/lang/lang.*. La configuración regional de fechas y horas se puede indicar por separado:

$override_locale = 'es-ES';
$cli_language = 'es';

El sistema operativo del servidor debe admitir $override_locale. $cli_language se aplica a comandos sin navegador. Para diagnosticar, $language_debug = true escribe información de idioma y configuración regional en el registro de errores; debe desactivarse después.

Añadir o mantener un idioma

El inglés es la referencia y el idioma de reserva. Para el código detectado xx:

cp web/lang/lang.en web/lang/lang.xx

Después:

  1. Conservar la línea inicial de PHP y todas las claves $vocab.
  2. Traducir los valores, no los nombres de clave.
  3. Guardar el archivo como UTF-8.
  4. No usar entidades HTML salvo &nbsp;; escribir directamente caracteres UTF-8.
  5. Conservar los marcadores de sustitución y el marcado intencionado.
  6. Validar la sintaxis PHP.
php -l web/lang/lang.xx

MRBS carga primero la referencia inglesa y después el idioma seleccionado. Por eso, una clave ausente vuelve al texto inglés.

Comprobar que está completo

checklang.php compara los idiomas con lang.en. En una instancia de desarrollo, el script se encuentra en el directorio web de MRBS:

https://example.invalid/mrbs/checklang.php?lang[]=xx

Sin selección ofrece todos los idiomas instalados. La función opcional de actualización escribe archivos y necesita permisos de escritura; no debe usarse en producción y sus cambios deben revisarse. Al terminar, proteger o retirar esta herramienta de cualquier sitio público.

La validación sintáctica y checklang.php detectan problemas distintos; se deben usar ambas.

Traducir la ayuda de la aplicación

La ayuda no procede de $vocab, sino de archivos separados:

web/site_faq/site_faq.html
web/site_faq/site_faq_de.html
web/site_faq/site_faq_fr.html
web/site_faq/site_faq_es.html

Se selecciona el sufijo sin guion bajo:

$faqfilelang = 'es';

Valores antiguos como '_es' siguen aceptándose, pero están obsoletos. Este ajuste es independiente del idioma del navegador. Las modificaciones locales de archivos FAQ deben documentarse y combinarse durante cada actualización.

Traducir este manual

El sitio de documentación usa sufijos:

docs/admin-guide/custom-fields.md
docs/admin-guide/custom-fields.de.md
docs/admin-guide/custom-fields.fr.md
docs/admin-guide/custom-fields.es.md

El inglés es el idioma de reserva de la documentación. Estos archivos no modifican la interfaz MRBS ni su página de ayuda.

Flujo resistente a actualizaciones

  1. Guardar los textos propios del sitio en $vocab_override.
  2. Inventariar los archivos de idioma y FAQ mantenidos localmente.
  3. Comparar el lang.en nuevo y el anterior para detectar claves añadidas o modificadas.
  4. Ejecutar php -l en cada archivo de idioma cambiado.
  5. Ejecutar checklang.php en una instancia de desarrollo protegida.
  6. Revisar por separado los cambios de FAQ.
  7. Probar todos los idiomas activos antes del despliegue.

Lista de comprobación

  • La detección del navegador y el idioma impuesto eligen el valor esperado.
  • Las claves ausentes vuelven a un inglés comprensible.
  • Navegación, formularios, errores, aprobaciones y administración se muestran bien.
  • %s, %d y los marcadores posicionales reciben los valores correctos.
  • Fechas, horas, días y zonas horarias usan la configuración regional prevista.
  • Correos, informes, exportaciones y comandos usan el idioma esperado.
  • Campos personalizados, tipos, textos indicativos y errores de validación están traducidos.
  • La ayuda usa el archivo site_faq esperado.
  • Los registros no conservan depuración de idioma ni datos sensibles.