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

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.