다국어 플러그인 🌐

다국어 플러그인은 포럼의 기본 언어나 다수 언어를 구사하지 못하는 모든 사용자와 게스트를 위해, 다국어 포럼 관리자가 풍부하고 이해하기 쉬운 환경을 만들 수 있도록 해줍니다.

:page_facing_up: 코드 가져오기

:book: 문서 읽기


기능 개요

다국어 플러그인은 기존 Discourse 로케일 시스템을 확장하여 다음과 같은 기능을 제공합니다:

  1. 포럼에서 사용되는 모든 언어에 대한 관리 인터페이스;

  2. 포럼의 콘텐츠를 언어별로 필터링할 수 있도록 하는 콘텐츠 언어 시스템;

  3. 콘텐츠 언어 시스템의 측면을 자동화하는 Discourse 번역 플러그인과의 통합;

  4. 포럼의 카테고리 이름, 태그 및 기타 준정적 텍스트 번역 기능;

  5. 포럼에서 기존 인터페이스 언어 사용 비활성화 기능;

  6. 포럼에 사용자 정의 인터페이스 언어(‘로케일’) 직접 추가 기능;

  7. 게스트 인터페이스 언어(‘로케일’) 전환기 (푸터 바 또는 메뉴 형태)를 포함한 향상된 게스트 언어 기능; 그리고

  8. 가입 시 선택 가능한 인터페이스 언어 및 콘텐츠 언어 필드 (곧 출시 예정).


:point_right: 참고 사항

위 기능들은 모두 기존 Discourse 로케일 시스템 위에 작동하며, 해당 시스템의 모든 기능과 함께 작동합니다 (이것에 대한 더 자세한 설명은 여기서 확인).

Discourse에 인터페이스 언어(‘로케일’)를 추가하려는 경우, 가장 좋은 방법은 여기에서 설명된 단계를 따르는 것입니다: How to add a new language. 플러그인을 통해 로케일을 추가하는 것도 가능하며, 여기에 설명된 대로 수행할 수 있습니다.

이 플러그인의 관리 인터페이스를 통해 이를 수행하는 기능은 기존 Discourse가 지원하는 방법들이 모두 소진된 후에만 고려해야 합니다. Discourse가 지원하는 방법을 통해 Discourse에 추가된 모든 언어는 이 플러그인의 모든 기능에서 자동으로 사용 가능합니다.


예시 스크린샷

관리 인터페이스

준정적 텍스트 번역 (및 게스트 로케일 전환기)

콘텐츠 언어 시스템

Screen Shot 2020-02-25 at 2.24.51 PM

콘텐츠 언어 번역 플러그인 통합


크레딧

이 플러그인은 Wikimedia Foundation의 지원으로 개발되었으며, 특히 @Elena_Lappen과 @icaria36이 기능 세트의 설계에 상당한 의견을 제시하여 도움을 주었습니다.

이 플러그인 개발 배경에 대한 추가 토론은 다음을 참고하세요:

Structuring a multilingual community

68개의 좋아요

와! 정말 바쁘셨네요. :slight_smile: 잘하셨어요, @angus! 이 기술이 실제로 적용된 예시를 볼 날을 기대합니다. 저처럼 코드를 검토하고 피드백을 줄 사람이 필요하면 알려주세요.

그동안의 한 가지 아쉬운 점은, 번역 플러그인이 제공하는 게시물의 번역을 스태프가 개선할 수 있는 기능이 부족했다는 것입니다. 이번 작업에 이 기능이 포함될 예정인가요?

10개의 좋아요

음. 배제할 수는 없지만, 그것은 아마도 번역 플러그인의 영역에 더 가까울 것입니다.

예전에 다른 용도로 만들었던 약간 관련이 있는 기능은, 사용자가 사용하는 로케일에 번역이 없어 기본 로케일로 폴백될 때 사용자에게 표시되는 작은 카운트 아이콘입니다. 이 아이콘을 클릭하면 다음과 같은 메시지가 표시됩니다:

“이 페이지에 x개의 번역이 없습니다. 여기에서 번역을 도와주세요: (디스코스의 transifex 링크).”

7개의 좋아요

역시 앤거스, 훌륭한 작업입니다! 제 사이트에서 테스트해 보았는데, 몇 가지 작은 문제와 질문이 있습니다.

문제

  1. 기존 주제를 편집할 때 드롭다운 메뉴 텍스트가 테마 색상을 따르지 않습니다:

  1. 콘텐츠 언어 설정이 한 줄로 표시되다 보니, 몇 개 이상의 언어를 설정하면 사용이 매우 불편해집니다.

질문

  1. 기존 주제 중 많은 부분에 언어 태그가 소급 적용되는 것 같으며, 이는 바람직한 일이지만 현재까지는 소수만 적용된 상태입니다. 결국 모든 기존 게시물에 태그를 적용하는 작업이 실행될 예정인가요? 만약 그렇지 않다면, 모든 기존 게시물에 언어 태그를 적용하는 방법이 있을까요? 저희 사이트는 지금까지 영어만 사용되어 왔으므로, 모든 기존 게시물에 en 태그가 붙기를 원합니다.
  2. 콘텐츠 언어에 여러 언어가 설정된 경우, 개별 언어별로 필터링할 수 있어야 하지 않나요? 현재 드롭다운에서 언어 중 하나를 클릭해도 아무 반응이 없습니다.
2개의 좋아요

피드백을 주시고 직접 사용해 보신 것까지 감사합니다, David. 여러 가지 업데이트를 적용했는데, 그중에는 위에서 언급하신 두 가지 문제를 수정하는 내용도 포함되어 있습니다.

아직은 아닙니다. 현재는 번역가(Translator) 플러그인으로 번역된 게시물에 대해서만 (번역가 플러그인이 활성화되어 있고 동기화 기능이 활성화된 경우) 콘텐츠 태그가 사후적으로 자동으로 적용됩니다.

해당 작업을 추가할 수는 있지만, 특정 언어를 매개변수로 받아 정의된 범위에서 실행되어야 합니다. ‘사이트 전체’ 범위 외에도 카테고리별 또는 (콘텐츠가 아닌) 태그별 기준으로 수행할 수 있습니다(예: 이 카테고리에 속한 모든 주제 또는 다른 특정 태그가 있는 주제에 이 콘텐츠 태그를 적용). 어떤 방식이 적합할까요?

아니요, 해당 목록은 현재 설정된 콘텐츠 언어가 무엇인지 보여주기 위한 용도입니다. 이 기능이 어떻게 동작하기를 기대하시거나 원하시는지 설명해 주시겠습니까?

2개의 좋아요

Angus님, 덕분에 제 문제가 해결되었습니다.

이상적으로는 언어 태그가 없는 모든 기존 게시물에 en 태그가 적용되기를 원하는데, 너무 포괄적인가요? 문제는 사용자가 콘텐츠 언어를 영어와 스페인어로 설정하면, 언어 태그가 있는 게시물만 보고 태그가 없는 수천 개의 게시물은 볼 수 없다는 점입니다.

목록이 있고 마우스를 올리면 하이라이트가 되므로 클릭 가능해 보입니다. 제 기대치는 그중 하나를 클릭하면 해당 언어로 게시물이 필터링되라는 것이었습니다. 언어별로 필터링할 수 있는 유용한 기능이 될 수 있다고 생각하지만, 꼭 필요하다고 급급하게 원하는 기능은 아닙니다.

또 다른 이야기로, 언어 버튼의 위치를 변경할 수 있는 옵션이 있으면 좋겠습니다. 내 내비게이션 바에 이미 항목이 많아져서 어수선해지고 있습니다. 또한 하이라이트된 버튼은 새 주제 버튼 위에 있는 것이 어색하고, 새 주제 버튼을 아래로 밀어내고 있습니다. 내비게이션 바의 맨 앞, 예를 들어 Latest 앞에 배치하는 것이 불가능할까요? 아니면 제 워드프레스 홈페이지(https://naturephotographers.network)처럼 모서리에 떠 있게 하거나, 번역 플러그인의 옵션처럼 헤더에 배치하는 것도 좋을 것 같습니다.

내비게이션 바에 배치한 이유, 즉 다른 버튼들과 유사하게 필터링한다는 점을 이해합니다. 하지만 이 설정은 한 번만 하고 나면 잊게 되는 것이므로, 다른 언어로 정기적으로 필터링을 하는 것은 아니기 때문입니다.

다시 한번 감사합니다. 이 플러그인과 translate 플러그인은 게임 체인저입니다.

3개의 좋아요

저에게 이것은 바람직한 동작입니다. 사용자는 외국어로 된 게시글을 보아서는 안 됩니다. 해당 언어로 된 게시글이 없다면, 아무 게시글도 보이지 않는 것이 맞습니다.

다만, 옵션으로 “일괄 태그 지정” 기능이 있으면 좋겠습니다.

2개의 좋아요

동의합니다. 제가 Pavilion에서 제안한 해결책은 기본 로케일(locale)이 선택된 주제 언어 중 하나와 일치하는 경우, 태그 없이 모든 게시물을 표시하는 것입니다. 하지만 일괄 태그 지정이 더 나은 옵션이 될 것입니다.

@angus, 이것이 당신의 플러그인과 관련이 있는지, 아니면 코어(core)의 변경 사항인지 100% 확신은 없지만, 제가 마주친 버그가 있을 수 있습니다. 기존 게시물을 편집하여 몇 가지 변경 사항을 시도하고 저장하려고 하면 None of the tags you selected can be used라는 오류가 발생합니다. en 태그를 제외하고는 태그가 설정되어 있지 않고, minimun number of tags required in a topic은 0으로 설정되어 있습니다. 어떤 생각이 있으신가요?

2개의 좋아요

Angus 씨, 오늘 또 다른 문제가 생겼습니다. 이전에 제가 ig 태그(인스타그램의 약자)를 사용했는데, 이글보(Igbo) 언어를 위해 플러그인이 해당 태그를 삭제해버렸습니다. 이 태그를 되돌릴 방법이 없겠죠? 혹시 아직 남아있을지도 모른다는 희망으로 플러그인을 끄어 봤지만, 아쉽게도 이미 완전히 사라져 있었습니다. 플러그인을 테스트할 때 이러한 위험을 감수해야 한다는 점은 알고 있습니다. 같은 이름의 태그가 삭제될 수 있다는 경고 메시지를 추가해 주시면 좋겠습니다.

3개의 좋아요

그 부분에 대해서는 개인 메시지로 연락드리겠습니다. (분실될 가능성은 낮습니다.)

다른 유용한 제안과 피드백은 내일 검토하겠습니다.

3개의 좋아요

내 신이시여! 정말 훌륭하시네요!
진심으로 존경합니다. 다만 이 게시물이 여러분의 놀라운 작업에 대한 관심을 분산시키지 않기를 바랍니다.

7개의 좋아요

David와 제가 이 문제를 해결하고 기존 ig 태그를 복원했다는 점 참고해 주세요.

기존 태그와 콘텐츠 언어 태그 사이에 충돌이 발생하면, 충돌이 해결될 때까지 해당 언어를 콘텐츠 언어로 사용할 수 없습니다. 이 내용은 언어 관리 화면에서 확인할 수 있습니다.

다른 문제들과 기능 요청 사항은 앞으로 일주일 동안 처리할 예정입니다.

9개의 좋아요

Angus님, 게스트에게 언어 전환기만 사용할 수 있을까요?
이 시스템의 모든 기능이 필요한 것은 아니에요. 게스트가 인터페이스의 언어만 변경할 수 있도록 하면 됩니다.

2개의 좋아요

플러그인의 각 기능은 독립적으로 작동합니다.

플러그인을 설치한 후 로케일 전환기만 켜면 됩니다: Pavilion.

현재 thepavilion.io에서 이 목적으로 해당 플러그인을 사용하고 있습니다.

4개의 좋아요

훌륭한 작업이었어요 @angus!

플러그인을 설치했는데, 이제 사용자뿐만 아니라 스태프도 콘텐츠를 볼 수 없습니다. 다만, 카테고리를 편집하고 삭제하려고 하면 다음과 같은 경고 메시지가 표시됩니다:

이제 토픽에 접근하는 유일한 방법은 경고 메시지의 링크를 따르거나 토픽의 URL을 아는 것입니다. 토픽(RIO Paris)에 접근한 후 콘텐츠 언어 태그를 추가하면, 예를 들어 "english"라고 하면, 예상대로 표시가 됩니다. 우리의 추측은 다국어(Multilingual) 플러그인이 정상적으로 작동하고 있다는 것입니다. 태그와 연결된 콘텐츠만 표시됩니다. 그러나 언어 태그를 연결하지 않으면 관련 토픽을 모두 볼 수 없다는 점이 오해의 소지가 있고 혼란스럽습니다. 이전에 게시되었던 수천 개의 토픽이 현재 보이지 않습니다. 현재 목록을 볼 수 없으므로, 이들에게 언어 태그를 빠르게 할당할 수 있는 해결책이 있을까요?

자문을 부탁드립니다.

수정: Rails에서 해당 카테고리가 사용하도록 예정된 언어에 따라 특정 카테고리의 모든 토픽에 태그를 지정하여 가시성 문제를 해결했습니다:

  1. cd /var/discourse 실행 후 ./launcher enter app
  2. rake categories:list로 카테고리 ID를 가져오기
  3. 독일어만 포함해야 하는 카테고리가 245라면, rake tags:bulk_tag_category["de",245] 실행
1개의 좋아요

./launcher rebuild app 실행 후 백색 화면이 표시됩니다.

이 플러그인이 원인이 olduğunu 확인했습니다. 사이트와 관리자 페이지를 열 수 없습니다.
다국어 콘텐츠(Multilingual content)만 활성화했지만, 내용을 입력하지는 않았습니다.

이 플러그인의 설정을 데이터베이스에서 초기화하는 방법은 무엇인가요?

your.website.com/safe-mode가 작동하나요?

이제 이 플러그인을 비활성화했습니다. 관리자 패널에서 플러그인 목록이 사라지면서 문제가 시작되었습니다. 이후 앱을 다시 빌드해 보았지만, 재빌드 후 사이트가 열리지 않았습니다. 지금은 열리지만, 이 플러그인은 비활성화되어 있습니다.

@angus, 새 버전의 Discourse로 플러그인을 확인해 주시겠어요?

비공식 플러그인 없이 안전 모드에서 플러그인 목록이 없는 이 페이지를 확인했습니다:

모든 플러그인 없이 안전 모드:

이 플러그인의 설정을 데이터베이스에서 초기화할 수 있나요?

그 시점에는 어떤 모드에서도 문제를 해결할 수 없었습니다(안전 모드, 비공식 모드 제외, 전체 제외). 모든 모드에서 시스템에 설치된 플러그인 목록을 볼 수 없었습니다.

1개의 좋아요