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

관리자 외에 그룹에서 텍스트 편집 기능을 활성화할 수 있는지 궁금합니다. 최소 관리자(Moderator) 권한으로 가능할까요?

커뮤니티에서 사용자와 더 밀접한 관계를 맺기 위해, 다른 톤과 우리만의 표현을 사용하고 싶습니다.

사이트 설정 Edit all post groups를 변경하여 다른 사용자가 작성한 게시글을 수정할 수 있는 권한을 그룹에 부여할 수 있습니다. 이것이 찾으시는 내용인가요?

안녕하세요, 답변 주셔서 감사합니다. 저는 디스커스(Discourse) 텍스트 편집(즉, 로컬라이제이션, 언어 문자열) 기능을 활성화하고 싶습니다. :slight_smile:

현재 이 기능이 관리자만 사용할 수 있다는 점, 그리고 이 기능이 모더레이터/편집자에게 더 적합한 기능이라고 생각합니다.

오, 설명해 주셔서 감사합니다. 현재는 이것이 불가능합니다.

관심 있고 해당 지식이 있는 분들을 위해 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. 보안

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