Plugin multilíngue 🌐

O Plugin Multilíngue torna possível para administradores de fóruns multilíngues criar um ambiente rico e compreensível para todos os usuários e convidados, mesmo que não falem o idioma padrão ou a maioria dos idiomas do fórum.

:page_facing_up: Obter o código

:book: Ler a documentação


Visão geral dos recursos

O Plugin Multilíngue estende o sistema de localidade (locale) existente do Discourse para oferecer:

  1. uma interface administrativa para todos os idiomas usados no seu fórum;

  2. um sistema de idioma de conteúdo que permite que você e seus usuários filtrem o conteúdo do fórum por idioma;

  3. uma integração com o Plugin Tradutor do Discourse, que automatiza aspectos do sistema de idioma de conteúdo;

  4. a capacidade de traduzir nomes de categorias, tags e outros textos semiestáticos no seu fórum;

  5. a capacidade de desabilitar o uso de idiomas de interface existentes no seu fórum;

  6. a capacidade de adicionar idiomas de interface personalizados (“locales”) diretamente ao seu fórum;

  7. recursos aprimorados para idioma de convidados, incluindo um seletor de idioma de interface (‘locale’) para convidados (como uma barra de rodapé ou menu); e

  8. campos opcionais de idioma de interface e idioma de conteúdo no cadastro (em breve).


:point_right: Observações importantes

Todos os recursos acima funcionam sobre o sistema de localidade (locale) existente do Discourse e em conjunto com todos os recursos desse sistema (veja a explicação mais detalhada aqui).

Se você deseja adicionar idiomas de interface (“locales”) ao Discourse, a melhor maneira de fazer isso é seguindo as etapas descritas aqui: How to add a new language. Você também pode adicionar um locale por meio de um plugin, conforme descrito aqui.

A capacidade de fazer isso por meio da interface administrativa deste plugin deve ser considerada apenas após esgotar os métodos suportados pelo Discourse. Quaisquer idiomas adicionados ao Discourse por meio dos métodos suportados pelo Discourse estarão automaticamente disponíveis para todos os recursos deste plugin.


Capturas de tela de exemplo

Interface administrativa

Traduções de texto semiestático (e seletor de locale para convidados)

Sistema de idioma de conteúdo

Screen Shot 2020-02-25 at 2.24.51 PM

Integração do Plugin Tradutor com o sistema de idioma de conteúdo


Créditos

Este plugin foi possível graças ao apoio da Fundação Wikimedia, com suporte especial de @Elena_Lappen e @icaria36, que tiveram contribuição significativa no design do conjunto de recursos.

Para mais discussões sobre o raciocínio por trás deste plugin, consulte:

Structuring a multilingual community

68 curtidas

Uau! Você esteve muito ocupado. :slight_smile: Bom trabalho, @angus! Estou ansioso para ver exemplos disso em ação. Me avise se precisar de alguém como eu para analisar e dar feedback.

Uma lacuna tem sido a falta de uma funcionalidade para permitir que a equipe melhore as traduções de postagens fornecidas pelo plugin de tradução — isso fará parte desse esforço?

10 curtidas

hmm. Não estou descartando, mas isso provavelmente está mais no escopo do Plugin de Tradução.

Um recurso um pouco relacionado, que desenvolvi em certa ocasião para outra coisa, é um pequeno ícone de contador que aparece para os usuários quando o idioma que estão usando recua para o idioma padrão porque falta uma tradução. Clique no ícone e você verá:

“x traduções faltando para esta página. Ajude-nos a traduzi-las aqui: (link para o Transifex do Discourse).”

7 curtidas

Trabalho fantástico como sempre, Angus! Tenho testado no meu site e encontrei alguns pequenos problemas e tenho algumas perguntas.

Problemas

  1. Quando você edita um tópico existente, o texto do menu suspenso não segue as cores do tema:

  1. A configuração de idioma do conteúdo torna-se muito difícil de usar além de alguns idiomas devido à linha única:

Perguntas

  1. Parece que muitos dos nossos tópicos antigos estão recebendo a tag de idioma retroativamente, o que é desejado, mas apenas alguns até agora. Um processo será executado para aplicar a tag a todas as postagens existentes eventualmente? Se não, há uma maneira de aplicar uma tag de idioma a todas as postagens existentes? Nosso site foi apenas em inglês até agora, então quero que todas as postagens existentes tenham a tag en.
  2. Quando você tem vários idiomas definidos em idiomas de conteúdo, você deve poder filtrar por um idioma individual? Atualmente, quando clico em um dos idiomas no menu suspenso, nada acontece.
2 curtidas

Obrigado pelo feedback, David, e por testar isso. Fiz várias atualizações que, entre outras coisas, corrigem os dois problemas que você mencionou acima.

Ainda não. Atualmente, apenas as postagens traduzidas pelo plugin Tradutor receberão automaticamente uma tag de conteúdo retroativamente (se o plugin Tradutor estiver habilitado e o recurso de sincronização também estiver).

Posso adicionar essa tarefa, mas ela precisará receber um idioma específico como parâmetro e ser executada em um escopo definido. Além de um escopo ‘em todo o site’, eu poderia fazê-lo por categoria ou por tag (não de conteúdo) (ou seja, aplicar essa tag de conteúdo a todos os tópicos nesta categoria ou com esta outra tag). O que funcionaria para você?

Não, a lista serve apenas para mostrar quais são os idiomas de conteúdo atualmente configurados. Poderia me explicar como você espera (ou gostaria) que isso se comportasse?

2 curtidas

Obrigado, Angus, isso resolveu meus problemas.

Idealmente, gostaria que a tag en fosse aplicada a todas as postagens existentes que não possuem uma tag de idioma. Isso é muito amplo? O problema é que, se um usuário definir seu idioma de conteúdo como, por exemplo, inglês e espanhol, ele só verá as postagens com a tag de idioma, não vendo os milhares de postagens que não têm tag.

Como há uma lista e os itens são destacados ao passar o mouse, isso dá a impressão de que são clicáveis. Minha expectativa, nesse caso, seria que, ao clicar em um deles, suas postagens fossem filtradas por aquele idioma. Acho que isso poderia ser um recurso útil para filtrar por idioma, mas não é algo essencial para mim.

Outro ponto: adoraria ter a opção de mover o botão de idioma. Já tenho muitos itens na minha barra de navegação e está ficando bastante poluído. Além disso, o botão destacado parece fora de lugar acima do botão de novo tópico, forçando-o a ficar abaixo. Suponho que não seja possível movê-lo para o início da barra de navegação, antes de Mais recentes, por exemplo? Ou ele poderia flutuar em um canto, como tenho na minha página inicial do WordPress https://naturephotographers.network , ou ainda ser colocado no cabeçalho, semelhante à opção do plugin de tradução.

Entendo seu raciocínio para colocá-lo na barra de navegação, pois você está filtrando de forma semelhante aos outros botões, mas o fato é que você só configuraria isso uma vez e depois esqueceria. Não é como se você estivesse filtrando regularmente por diferentes idiomas.

Obrigado novamente, este plugin, junto com o de tradução, é uma verdadeira revolução.

3 curtidas

Para mim, esse é o comportamento desejado. Os usuários não devem ver postagens em um idioma estrangeiro. Se não houver nenhuma postagem no idioma deles, eles não devem ver nenhuma postagem.

No entanto, como uma opção, seria interessante ter um recurso de “tagagem em lote”.

2 curtidas

Concordo. A solução que propus no Pavilion é: se o locale padrão corresponder a um dos idiomas do tópico selecionado, mostre todos os posts sem tags. Mas a marcação em massa seria a melhor opção.

@angus, não tenho 100% de certeza se isso está relacionado ao seu plugin ou a uma alteração no núcleo, mas pode haver um bug que encontrei. Quando edito um post existente, faço algumas alterações e tento salvar, recebo o erro Nenhuma das tags selecionadas pode ser usada. Não há tags definidas, exceto a tag en, e o número mínimo de tags necessárias em um tópico está definido como 0. Alguma ideia?

2 curtidas

Encontrei outro problema hoje, Angus. Eu tinha uma tag ig (abreviação de Instagram) que foi excluída pelo plugin para dar lugar à língua igbo. Imagino que não haja como recuperá-la? Tentei desativar o plugin na esperança de que ela ainda estivesse lá, mas, infelizmente, parece que ela já se foi. Sei que esse é um risco que se corre ao testar plugins. Talvez você queira adicionar um aviso informando que ele excluirá todas as tags com o mesmo nome.

3 curtidas

Vou te enviar uma mensagem privada sobre isso (é improvável que tenha sido perdida).

As outras sugestões úteis e o feedback, vou revisar amanhã.

3 curtidas

Meu Deus! Você é fantástico!
Quero dizer, eu realmente admiro você. Embora eu também espere que este post não desvie a atenção das pessoas do seu trabalho fabuloso.

7 curtidas

Apenas uma observação: David e eu resolvemos esse problema e restauramos as tags ig existentes.

Se houver um conflito entre uma tag pré-existente e uma tag de idioma de conteúdo, o idioma não estará disponível como idioma de conteúdo até que o conflito seja resolvido. Você verá isso no seu painel de idiomas.

Vou abordar quaisquer outros problemas e solicitações de recursos na próxima semana.

9 curtidas

Prezado Angus, é possível usar apenas o seletor de idioma para os hóspedes?
Não preciso utilizar todas as funcionalidades deste sistema — preciso apenas permitir que o hóspede altere o idioma da interface.

2 curtidas

Cada recurso do plugin funciona de forma independente.

Instale o plugin e ative apenas o seletor de idioma: Pavilion.

Atualmente, usamos este plugin para esse fim no thepavilion.io.

4 curtidas

Trabalho fantástico, @angus!

Instalamos o plugin, mas agora nenhum conteúdo está visível para os usuários, nem mesmo para a equipe. No entanto, ao editar uma categoria e tentar excluí-la, recebemos o seguinte aviso:

A única maneira de acessar um tópico é seguir o link na mensagem de aviso ou conhecer a URL do tópico. Se acessarmos o tópico (RIO Paris) e adicionarmos uma tag de idioma de conteúdo, digamos “inglês”, ele se torna visível como esperado. Nossa suposição é que o plugin Multilíngue está funcionando perfeitamente. Apenas o conteúdo associado a uma tag é exibido. No entanto, achamos enganoso e confuso quando as pessoas não conseguem ver todos os tópicos relacionados sem associar uma tag de idioma. Temos milhares de tópicos publicados anteriormente que estão invisíveis. Existe uma solução para atribuir rapidamente uma tag de idioma a eles, já que não conseguimos ver uma lista no momento?

Por favor, oriente-nos.

Edição: Resolvi meu problema de visibilidade marcando todos os tópicos de certas categorias com a tag correspondente ao idioma que deveriam usar, no Rails:

  1. cd /var/discourse e depois ./launcher enter app
  2. Obter os IDs das categorias com rake categories:list
  3. Se uma categoria que deve conter apenas tópicos em alemão for a 245, execute rake tags:bulk_tag_category["de",245]
1 curtida

Obtenho uma página em branco após executar
./launcher rebuild app

Descobri que é este plugin que causa o problema. Não consigo abrir o site nem a parte de administração.
Ativei apenas o conteúdo multilíngue, mas não preenchi nada.

Como posso redefinir as configurações desse plugin no banco de dados?

O endereço your.website.com/safe-mode funciona?

Desativei este plugin agora. Os problemas começaram com o desaparecimento da lista de plugins no painel de administração. Depois disso, tentei reconstruir o aplicativo. Mas, após a reconstrução, o site não abriu. Agora ele abre, mas com este plugin desativado.

@angus, você pode verificar seu plugin com uma versão recente do Discourse?

No modo de segurança, sem plugins não oficiais, vejo esta página sem a lista de plugins:

Modo de segurança sem todos os plugins:

É possível redefinir as configurações deste plugin no banco de dados?

Naquela época, nenhum modo conseguia resolver o problema (seguro, sem versões não oficiais, sem tudo) — em todos os modos, eu não via uma lista de plugins instalados no sistema.

1 curtida