Permitir que o grupo altere traduções nos textos do site Discourse

Gostaria de saber se é possível habilitar a edição de texto em grupos para mais pessoas além dos administradores. Moderadores, pelo menos?

Queremos usar um tom diferente e usar nossas próprias palavras em nossa comunidade, a fim de ter um encerramento com nossos usuários.

2 curtidas

Você pode conceder permissão a grupos para editar postagens feitas por outros alterando a configuração do site Edit all post groups — é isso que você está procurando?

1 curtida

Olá, obrigado pela sua resposta. Estou querendo habilitar as edições de texto do Discourse (também conhecidas como localização, strings de idioma) :slight_smile:

Entendo que atualmente está habilitado apenas para administradores, e acho que é uma função mais viável para moderadores/editores.

1 curtida

ah obrigado por esclarecer, isso não é possível no momento

Ok, compartilho a resposta do Discourse Helper para aqueles que estão interessados e têm o conhecimento para fazê-lo :slight_smile:

Acho essencial melhorar a UI/UX (modernizar nossos fóruns), como o composer, IA e as últimas melhorias que vimos.

O inglês usado é super neutro/simples e faz sentido, mas - no meu caso - as traduções em espanhol não são boas por padrão.

Editar strings na UI do Discourse é OK, mas leva muito tempo, e eu só quero delegar essa tarefa.

Entendo que não é possível baixar todas as strings como um arquivo JSON, mas os textos editados?

Baixar todos os textos do idioma e editar o arquivo seria uma solução alternativa para obter o resultado desejado em 1/5 do tempo.


Estrutura de Plugin de Alto Nível

  1. Criar Esqueleto do Plugin
    • Use:
      rake plugin:create[custom-site-texts-group]
      
  2. Backend: Estender Permissões
    • Substitua o controlador relevante, por exemplo, Admin::SiteTextController, para permitir que membros do seu grupo personalizado acessem os endpoints de edição de texto.
    • Você pode usar algo semelhante a:
      add_to_class(:admin_constraint, :matches?) do |request|
        user = ... # carrega o usuário atual da requisição
        return true if user.admin?
        # Verifica a associação ao seu grupo
        group_id = Group.find_by(name: 'seugruponome')&.id
        return user.group_ids.include?(group_id)
      end
      
      Isso é apenas ilustrativo — você precisará localizar a verificação de permissão correta e garantir que ela esteja restrita apenas à edição de localização, não à administração completa.
  3. Frontend: Expor UI para Membros do Grupo
    • Use PluginAPI para injetar UI para os membros do seu grupo onde os administradores têm “Personalizar Textos do Site”.
    • Oculte essa UI para outros usuários.
  4. Segurança
    • Verifique novamente as permissões em quaisquer ações de controlador e rotas substituídas. Nunca confie em verificações do lado do cliente.