Traduzione personalizzata
From LimeSurvey Manual
Introduzione
A partire da LimeSurvey 5.4.0 è possibile avere una traduzione personalizzata di tutte le stringhe in tutte le lingue incluse, con accesso diretto al proprio database.
Questo sistema può essere utilizzato se una traduzione esistente non è compatibile con le esigenze della propria attività.
Dovrebbe essere riservato a casi specifici, poiché le modifiche ai testi nel cuore di LimeSurvey richiederanno nuovamente una modifica del database.
Inoltre, è possibile utilizzare questo metodo per tradurre le stringhe specifiche del tema dell'indagine.
Come funzionano le traduzioni nel database
Per le traduzioni nel database, LimeSurvey utilizza un metodo ispirato a CDbMessageSource del framework Yii.
- trovare la stringa nella tabella SourceMessage lime_source_message->message e ottenere l'id : lime_source_message->id
- se esiste, trovare la traduzione corrispondente nella tabella Message lime_message->translation per la lingua corrente lime_message->language con l'id corrente lime_message->id
LimeSurvey crea l'array con le traduzioni dal file po (vedere Tradurre LimeSurvey per informazioni su come aggiornare questo file) e successivamente lo unisce a tutte le traduzioni presenti nel database.
Le traduzioni del database, se esistono, vengono sempre restituite per prime.
Esempio per il pulsante “Invia” in inglese e francese
Si desidera mostrare _Validate_ e non _Submit_ per il pulsante di invio in tutte le proprie indagini (con un tema specifico). Se si aggiorna semplicemente il tema sostituendo gT('Submit') con gT('Validate'), verrà sempre mostrato _Validate_ in tutte le lingue.
Per tutte le indagini con tutti i temi
- Creare il messaggio di origine
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - Controllare l'ID (se è il primo, l'ID è 1) e usarlo per l'istruzione successiva
- Creare la traduzione corrispondente :
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
Non sostituire la stringa con una stringa vuota, altrimenti la traduzione tornerà alla frase originale in inglese. È necessario includere almeno uno spazio.
Utilizzare un tema personalizzato (soluzione consigliata)
Questo metodo utilizza un template personalizzato e aggiorna la stringa predefinita anche per tutte le altre lingue.
- Nell'Editor dei temi selezionare la parte Navigazione
- Cercare
Template:GT("Submit")(in navigator.twig) - Sostituire con
Template:GT("Validate") - Creare il messaggio di origine
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - Controllare l'ID (se è il primo, l'ID è 1) e usarlo per l'istruzione successiva
- Creare la traduzione corrispondente :
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
Nota
Il campo category in lime_source_message deve essere una stringa vuota (''), non NULL. Se la categoria non corrisponde esattamente, gT() non troverà il messaggio di origine e la traduzione non verrà applicata. Questo è particolarmente importante quando si aggiungono traduzioni per stringhe specifiche del tema.