Wagtail-modeltranslation: Tradução de conteúdos no Wagtail CMS

Cada vez mais vivemos num mundo onde é importante pensar global e como tal um dos requisitos mais pedido passou a ser a localização de conteúdo. Como tal é necessário que as ferramentas utilizadas permitam que o processo de traduzir conteúdo em múltiplas línguas seja simples e intuitivo. Na InfoPortugal grande parte dos websites desenvolvidos são integrados num CMS (Content Management System), que têm como grande vantagem em relação a um wesite estático a possibilidade do cliente possa editar o conteúdo disponível no website sem ser necessária a intervenção de uma equipa de desenvolvimento.

Para tal o desenvolvimento passa pela definição de tipos de páginas que estarão disponíveis (p.e. num blogue será possível criar, editar ou remover artigos), tendo o cliente a liberdade de modificar conteúdo e a própria árvore do site. Dos diferentes CMS open source existentes, a escolha recaiu sobre o Wagtail, desenvolvido pela Torchbox, que apesar de bastante recente tem tido uma rápida e sustentada evolução, sendo bastante versátil e com um backoffice com uma interface simples e intuitiva. Em termos de localização de conteúdo, este tipo de sistemas não oferecem uma solução nativa sendo que na maioria dos casos a solução passa por utilizar um aplicação desenvolvida por terceiros que adiciona este componente a estes sistemas. O Wagtail é um dos sistemas que não oferece um mecanismo para tradução do conteúdo, e sendo relativamente recente não existiam muitas aplicações disponíveis para resolver este problema, pelo que a solução passou por se desenvolver uma aplicação deste tipo.

A primeira dificuldade foi a definição de qual a estrutura a adotar para gerir a tradução de conteúdo, tendo sido pensadas duas abordagens para o problema: a replicação da árvore do site para cada uma das línguas (solução rápida mas mais complexa de utilizar e com potenciais problemas de sincronização, já que para efetuar qualquer alteração de conteúdo seria necessário navegar pela estrutura para cada uma das línguas e garantir que nenhuma ficava esquecida) ou a replicação dos campos a traduzir para cada uma das línguas. Escolheu-se a segunda opção, fazendo uso de uma aplicação já existente (django-modeltranslation) que trata da replicação de cada campo para as línguas definidas para o website, ficando a faltar a ligação destes novos campos com a interface do Wagtail. É aí que entra a nossa aplicação, o wagtail-modeltranslation, que é responsável por tornar disponíveis no backoffice todos os campos que estejam registados para tradução. O funcionamento da aplicação é relativamente simples, aquando do arranque do projeto é feita uma verificação de todos os tipos de conteúdo que o website tem disponível e para cada um deles, quais os campos que deverão ser traduzidos, sendo gerado um novo input para cada um deles (tendo em conta o tipo de dados do mesmo). Este mecanismo permite que para um tipo de conteúdo a gestão das traduções do mesmo seja feita de uma forma centralizada e transparente para os editores de conteúdo, tornando mais fácil garantir que nenhuma língua ficou esquecida aquando da alteração de conteúdo.

O funcionamento da aplicação tem ficado mais estável a cada versão sendo a sua funcionalidade atestada pelos próprios desenvolvedores do Wagtail, dado que a aplicação é referenciada na documentação oficial, na parte da internacionalização de conteúdo. É nosso objetivo a contínua melhoria da aplicação para que seja possível a sua integração no núcleo do Wagtail, tornando esta funcionalidade nativa, simplificando a sua utilização quer por nós, quer pelo resto da comunidade.

Exemplo de uma página de edição de conteúdo desenvolvida em Wagtail, com wagtail-modeltranslation:

Alguns sites desenvolvidos em Wagtail pela InfoPortugal:

http://aroucageopark.pt/
http://www.cm-alcacerdosal.pt/
http://naturminho.pt/

Alexandre Silva
Developer

0 comentários

Deixe um Comentário

Quer participar da discussão?
Sinta-se à vontade para contribuir!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *