Tradução personalizada
From LimeSurvey Manual
Introdução
Desde o LimeSurvey 5.4.0, pode ter a sua própria tradução para todas as cadeias de caracteres em todos os idiomas incluídos, com acesso direto à sua base de dados.
Este sistema pode ser utilizado se uma tradução existente não for compatível com as necessidades do seu negócio.
Deve ser reservado para casos específicos, uma vez que as modificações de texto no núcleo do LimeSurvey exigirão novamente uma modificação da sua base de dados.
Além disso, pode utilizar este método para traduzir cadeias de caracteres específicas de um tema do inquérito.
Como funcionam as traduções da base de dados
Para as traduções da base de dados, o LimeSurvey utiliza um método inspirado no CDbMessageSource do framework Yii.
- pesquisar a cadeia de caracteres na tabela SourceMessage lime_source_message->message e obter o id: lime_source_message->id
- se existir, pesquisar a tradução correspondente na tabela Message lime_message->translation para o idioma atual lime_message->language com o id atual lime_message->id
O LimeSurvey cria a tabela com as traduções do ficheiro po (consulte Traduzir o LimeSurvey para obter informações sobre como atualizar este ficheiro) e, depois, combina-a com todas as traduções da base de dados.
Em seguida, as traduções da base de dados são sempre devolvidas, caso existam.
Exemplo para o botão “Submeter” em inglês e francês
Pretende mostrar _Validar_ e não _Submeter_ no botão de submissão em todos os seus inquéritos (com um tema específico). Se apenas atualizar o tema e substituir gT('Submit') por gT('Validate'), será sempre apresentado _Validar_ em todos os idiomas.
Para todos os inquéritos 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 a primeira, o ID é 1) e utilize-o na instrução seguinte
- Crie a tradução correspondente:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
Não substitua a cadeia de caracteres por uma cadeia vazia, caso contrário a tradução voltará à frase original em inglês. Tem de incluir pelo menos um espaço.
Utilizar o seu próprio tema (solução recomendada)
Este método utiliza uma solução com o seu próprio tema e atualiza também a cadeia de caracteres predefinida para todos os outros idiomas.
- No Editor de temas, selecione a parte Navigation
- Pesquise
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 a primeira, o ID é 1) e utilize-o na instrução seguinte
- Crie a tradução correspondente:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
Nota
O campo category em lime_source_message tem de ser uma cadeia de caracteres vazia ('') e 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. Isto é especialmente importante ao adicionar traduções para cadeias de caracteres específicas de um tema.