Traduction personnalisée
From LimeSurvey Manual
Introduction
Depuis LimeSurvey 5.4.0, vous pouvez disposer de votre propre traduction pour toutes les chaînes de texte dans toutes les langues incluses, grâce à un accès direct à votre base de données.
Ce système peut être utilisé si une traduction existante n’est pas compatible avec les besoins de votre activité.
Il doit être réservé à des cas spécifiques, car toute modification de texte au cœur de LimeSurvey nécessitera de nouveau une modification de votre base de données.
Vous pouvez en outre utiliser cette méthode pour traduire les chaînes spécifiques à un thème de questionnaire.
Fonctionnement des traductions en base de données
Pour les traductions en base de données, LimeSurvey utilise une méthode inspirée de CDbMessageSource du framework Yii.
- Rechercher la chaîne dans la table SourceMessage lime_source_message->message et récupérer l’identifiant : lime_source_message->id
- Si elle existe, rechercher la traduction associée dans la table Message lime_message->translation pour la langue courante lime_message->language avec l’identifiant courant lime_message->id
LimeSurvey crée le tableau des traductions à partir du fichier po (voir Traduire LimeSurvey pour savoir comment mettre à jour ce fichier), puis le fusionne avec toutes les traductions provenant de la base de données.
Les traductions de la base de données sont alors toujours renvoyées lorsqu’elles existent.
Exemple pour le bouton « Envoyer » en anglais et en français
Vous souhaitez afficher _Valider_ et non _Envoyer_ pour le bouton d’envoi dans tous vos questionnaires (avec un thème spécifique). Si vous modifiez simplement le thème et remplacez gT('Submit') par gT('Validate'), _Validate_ s’affichera toujours dans toutes les langues.
Pour tous les questionnaires avec tous les thèmes
- Créez le message source :
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - Vérifiez l’identifiant (s’il s’agit du premier, l’ID est 1) et utilisez-le pour l’instruction suivante
- Créez la traduction associée :
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
Ne remplacez pas la chaîne par une chaîne vide, sinon la traduction reviendra à la phrase anglaise d’origine. Vous devez inclure au moins une espace.
Utiliser votre propre thème (solution recommandée)
Cette méthode utilise votre propre modèle ; elle met également à jour la chaîne par défaut pour toutes les autres langues.
- Dans l’Éditeur de thème, sélectionnez la partie Navigation
- Recherchez
Template:GT("Submit")(dans navigator.twig) - Remplacez par
Template:GT("Validate") - Créez le message source :
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - Vérifiez l’identifiant (s’il s’agit du premier, l’ID est 1) et utilisez-le pour l’instruction suivante
- Créez la traduction associée :
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
Remarque
Le champ category de lime_source_message doit être une chaîne vide (''), et non NULL. Si la catégorie ne correspond pas exactement, gT() ne trouvera pas le message source et votre traduction ne sera pas appliquée. Ceci est particulièrement important lors de l’ajout de traductions pour des chaînes spécifiques à un thème.