Permitir que el grupo cambie las traducciones en los textos del sitio Discourse

Okay, comparto la respuesta de Discourse Helper para aquellos que estén interesados y tengan el conocimiento para hacerlo :slight_smile:

Creo que es esencial mejorar la UI/UX (modernizar nuestros foros), como el composer, la IA y las últimas mejoras que hemos visto.

El inglés utilizado es súper neutral/plano y tiene sentido, pero -en mi caso- las traducciones al español no son buenas por defecto.

Editar cadenas en la UI de Discourse está bien, pero lleva mucho tiempo, y solo quiero delegar esta tarea.

Entiendo que no es posible descargar todas las cadenas como un archivo JSON, pero ¿los textos editados?

Descargar todos los textos del idioma y editar el archivo debería ser una solución alternativa para obtener el resultado deseado en 1/5 del tiempo.


Estructura de Plugin de Alto Nivel

  1. Crear Esqueleto de Plugin

    • Usar:

      rake plugin:create[custom-site-texts-group]
      
  2. Backend: Extender Permisos

    • Sobrescribir el controlador relevante, por ejemplo, Admin::SiteTextController, para permitir que los miembros de tu grupo personalizado accedan a los puntos finales de edición de texto.

    • Podrías usar algo similar a:

      add_to_class(:admin_constraint, :matches?) do |request|
        user = ... # cargar usuario actual de la solicitud
        return true if user.admin?
        # Comprobar la membresía de tu grupo
        group_id = Group.find_by(name: 'tu_nombre_de_grupo')&.id
        return user.group_ids.include?(group_id)
      end
      

      Esto es solo ilustrativo — necesitarás localizar la verificación de permisos correcta y asegurarte de que solo esté limitada a la edición de localización, no a la administración completa.

  3. Frontend: Exponer UI a los Miembros del Grupo

    • Usar PluginAPI para inyectar UI para los miembros de tu grupo donde los administradores tienen “Personalizar Textos del Sitio”.

    • Ocultar esta UI para otros usuarios.

  4. Seguridad

    • Volver a verificar los permisos en cualquier acción de controlador y ruta sobrescrita. Nunca confíes en las verificaciones del lado del cliente.