Traducción personalizada
From LimeSurvey Manual
Introducción
Desde LimeSurvey 5.4.0 puede tener su propia traducción para todas las cadenas de todos los idiomas incluidos mediante acceso directo a su base de datos.
Este sistema puede utilizarse si una traducción existente no es compatible con las necesidades de su empresa.
Debe reservarse para casos específicos, ya que cualquier modificación de los textos en el núcleo de LimeSurvey requerirá de nuevo una modificación de su base de datos.
Además, puede utilizar este método para traducir cadenas específicas de un tema del formulario.
Cómo funcionan las traducciones en la base de datos
Para las traducciones en la base de datos, LimeSurvey utiliza un método inspirado en CDbMessageSource del framework Yii.
- busque la cadena en la tabla SourceMessage lime_source_message->message y obtenga el id: lime_source_message->id
- si existe, busque la traducción relacionada en la tabla Message lime_message->translation para el idioma actual lime_message->language con el id actual lime_message->id
LimeSurvey crea la matriz de traducciones a partir del archivo po (consulte Traducir LimeSurvey para obtener información sobre cómo actualizar este archivo) y después la combina con todas las traducciones de la base de datos.
Después, las traducciones de la base de datos se devuelven siempre que existan.
Ejemplo del botón «Enviar» en inglés y francés
Desea mostrar _Validate_ y no _Submit_ en el botón de envío de todos sus formularios (con un tema específico). Si simplemente actualiza el tema y sustituye gT('Submit') por gT('Validate'): se mostrará siempre _Validate_ en todos los idiomas.
Para todos los formularios con todos los temas
- Cree el mensaje de origen
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - Compruebe el ID (si es el primero: el ID es 1) y utilícelo en la siguiente instrucción
- Cree la traducción relacionada:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
No sustituya la cadena por una cadena vacía, o la traducción volverá a la frase original en inglés. Debe incluir al menos un espacio.
Uso de su propio tema (solución recomendada)
Este método utiliza una solución con su propia plantilla y actualiza también la cadena predeterminada para todos los demás idiomas.
- En el Editor de temas seleccione la parte Navegación
- Busque
Template:GT("Submit")(en navigator.twig) - Sustitúyalo por
Template:GT("Validate") - Cree el mensaje de origen
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - Compruebe el ID (si es el primero: el ID es 1) y utilícelo en la siguiente instrucción
- Cree la traducción relacionada:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
Tenga en cuenta
El campo category de lime_source_message debe ser una cadena vacía (''), no NULL. Si la categoría no coincide exactamente, gT() no encontrará el mensaje de origen y su traducción no se aplicará. Esto es especialmente importante al añadir traducciones para cadenas específicas de un tema.