Tradução personalizada
From LimeSurvey Manual
Introdução
Desde o LimeSurvey 5.4.0, você pode ter sua própria tradução para todas as strings em todos os idiomas incluídos, com acesso direto ao seu banco de dados.
Este sistema pode ser usado se uma tradução existente não for compatível com as necessidades do seu negócio.
Ele deve ser reservado para casos específicos, pois modificações de texto no núcleo do LimeSurvey exigirão novamente uma modificação do seu banco de dados.
Além disso, você pode usar este método para traduzir strings específicas de um tema do questionário.
Como funcionam as traduções do banco de dados
Para as traduções do banco de dados, o LimeSurvey usa um método inspirado no CDbMessageSource do framework Yii.
- encontre a string na tabela SourceMessage lime_source_message->message e obtenha o id: lime_source_message->id
- se existir, encontre a tradução relacionada na tabela Message lime_message->translation para o idioma atual lime_message->language com o id atual lime_message->id
O LimeSurvey cria o array de traduções a partir do arquivo po (consulte Traduzindo o LimeSurvey para saber como atualizar esse arquivo) e, depois, o mescla com todas as traduções do banco de dados.
Assim, as traduções do banco de dados são sempre retornadas, caso existam.
Exemplo para o botão “Enviar” em inglês e francês
Você quer exibir _Validate_ e não _Submit_ no botão de envio em todos os seus questionários (com um tema específico). Se você apenas atualizar o tema e substituir gT('Submit') por gT('Validate'), ele sempre exibirá _Validate_ em todos os idiomas.
Para todos os questionários com todos os temas
- Crie a mensagem de origem
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - Verifique o ID (se for o primeiro: o ID é 1) e use-o na próxima instrução
- Crie a tradução relacionada:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
Não substitua a string por uma string vazia, ou a tradução voltará para a frase original em inglês. Você deve incluir pelo menos um espaço.
Usando seu próprio tema (solução recomendada)
Este método usa uma solução com o seu próprio tema e também atualiza a string padrão para todos os outros idiomas.
- No Editor de temas, selecione a parte Navegação
- Procure por
Template:GT("Submit")(em navigator.twig) - Substitua por
Template:GT("Validate") - Crie a mensagem de origem
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - Verifique o ID (se for o primeiro: o ID é 1) e use-o na próxima instrução
- Crie a tradução relacionada:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
Observação
O campo category em lime_source_message deve ser uma string vazia (''), não NULL. Se a categoria não corresponder exatamente, o gT() não encontrará a mensagem de origem e a sua tradução não será aplicada. Isso é especialmente importante ao adicionar traduções de strings específicas de um tema.