Discourse 사이트 텍스트에서 번역을 변경할 수 있는 그룹 활성화

관심 있고 해당 지식이 있는 분들을 위해 Discourse Helper의 답변을 공유합니다 :slight_smile:

컴포저, AI, 그리고 최근에 확인한 최신 개선 사항들과 같이 UI/UX를 개선(포럼 현대화)하는 것은 필수적이라고 생각합니다.

사용된 영어는 매우 중립적이고 단순하며 이는 타당하지만, 제 경우에는 기본적으로 제공되는 스페인어 번역이 좋지 않습니다.

Discourse UI에서 문자열을 편집하는 것은 가능하지만 정말로 시간이 많이 걸리며, 저는 이 작업을 위임하고 싶습니다.

모든 문자열을 편집된 텍스트만 JSON 파일로 다운로드하는 것이 불가능하다는 것을 이해합니다.

모든 언어 텍스트를 다운로드하여 파일을 편집하는 것이 원하는 결과를 1/5의 시간으로 얻을 수 있는 우회책이 되어야 합니다.


고수준 플러그인 구조

  1. 플러그인 스켈레톤 생성

    • 사용:

      rake plugin:create[custom-site-texts-group]
      
  2. 백엔드: 권한 확장

    • 관련 컨트롤러(예: Admin::SiteTextController)를 오버라이드하여 사용자 정의 그룹의 멤버가 텍스트 편집 엔드포인트에 접근할 수 있도록 합니다.

    • 다음과 유사한 것을 사용할 수 있습니다:

      add_to_class(:admin_constraint, :matches?) do |request|
        user = ... # 요청에서 현재 사용자 로드
        return true if user.admin?
        # 사용자 그룹 멤버십 확인
        group_id = Group.find_by(name: 'yourgroupname')&.id
        return user.group_ids.include?(group_id)
      end 
      

      이는 예시일 뿐이며—정확한 권한 체크를 찾아내고, 전체 관리자 권한이 아닌 로컬라이제이션 편집에만 범위가 한정되도록 확인해야 합니다.

  3. 프론트엔드: 그룹 멤버에게 UI 노출

    • PluginAPI를 사용하여 관리자가 "Customize Site Texts"를 가지고 있는 위치에 사용자 정의 그룹 멤버들을 위한 UI를 주입합니다.

    • 다른 사용자에게는 이 UI를 숨깁니다.

  4. 보안

    • 오버라이드된 컨트롤러 액션과 라우트에서 권한을 다시 확인하십시오. 클라이언트 측 체크를 절대 신뢰하지 마십시오.