복수형 (count) 번역 오버라이드 문제

안녕하세요 :wave:

최근 업데이트에서는 카운트가 1인 경우 복수화 문자열의 one 버전을 사용한다는 것을 알게 되었습니다. 문제는 지금까지 복수화 문자열이 카운트가 1이어도 항상 other 버전을 사용했다는 점입니다. 또한 /admin/customize/site_texts/ 페이지에서는 예를 들어 헝가리어의 경우 문자열의 one 버전을 찾을 수 있는 옵션이 없습니다. 그러나 헝가리어에서는 one과 other 두 버전을 모두 사용할 이유가 거의 없으며, 두 버전은 거의 동일하기 때문입니다.

재현 방법:

  1. 로케일을 변경합니다. 예를 들어 헝가리어로 설정합니다.
  2. /admin/customize/site_texts/로 이동합니다.
  3. 예를 들어 js.topic_count_latest를 검색하고 텍스트를 변경합니다.
  4. See new or updated topics 배너에서 확인합니다.
  5. 업데이트가 하나만 있을 때, 편집한 문자열이 other 버전이므로 기본 값이 사용됩니다. 새 또는 업데이트된 주제가 더 많으면 이전에 추가한 텍스트로 변경됩니다.

감사합니다 :slightly_smiling_face:

3개의 좋아요

안녕하세요 @Don

간체 중국어로 이 테스트를 수행해 보았지만 문제를 재현할 수 없었습니다 :thinking:

원본 문자열에 추가 문자(강조 표시)를 넣었습니다. 그리고 count가 1일 때 변경이 실제로 적용되었습니다.

1개의 좋아요

두 언어 모두 복수형 정의에 "other"만 있습니다.

그러나 헝가리어에는 여전히 "one"에 대한 별도의 번역이 있습니다.

중국어에는 이것이 없습니다.

왜 Crowdin에서 별도의 “one” 버전이 생성되었는지 궁금합니다.

2개의 좋아요

네, 헝가리어 로케일에는 두 가지 버전(단수형과 복수형)이 있지만, 관리자 텍스트 커스터마이징에서도 one 버전이 사용 불가능했기 때문에 지금까지는 one 버전이 사용된 적이 없었던 것 같습니다. 항상 other로 폴백되었습니다.

1개의 좋아요

확인하고 싶은 게 있는데, 헝가리어에 복수 형태가 있나요? 있다면, plurals.rb에 :one 정의를 추가해야 할 것 같습니다.

1개의 좋아요

문제의 원인을 찾았습니다. Discourse의 I18n은 외부 라이브러리의 복수형(plural) 정의를 기반으로 합니다:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse-i18n/src/index.js#L7

하지만 이 라이브러리에서 헝가리어는 a 클래스 복수형을 사용하는 것으로 정의되어 있으며, 이는 '하나(one)'와 '기타(other)'를 구분합니다.

저는 헝가리어를 전혀 이해하지 못합니다. 헝가리어의 복수형 정의가 잘못된 것인지, 아니면 우리의 정의가 잘못된 것인지 확인해 주실 수 있는 분이 있을까요? :slightly_smiling_face:

3개의 좋아요

안녕하세요 :waving_hand:

확인해 주셔서 감사합니다. :heart:

헝가리어에는 복수형이 있지만 항상 사용되는 것은 아니어서 다소 어렵습니다. 하지만 몇 가지 간단한 예를 설명해 드리겠습니다.

헝가리어 단어의 대부분은 복수형이 있습니다.
비계산 가능(uncountable)인 경우입니다.
예:
Group → Groups = Csoport → Csoportok
Topic → Topics = Téma → Témák

따라서 우리가 복수형을 가지고 있다는 점에서 외부 라이브러리가 정확하다고 생각합니다.

하지만 단어 앞에 숫자(개수)가 있는 경우에는 복수형을 사용하지 않습니다.
계산 가능(countable)인 경우입니다.
예:
1 group → 2 groups = 1 csoport → 2 csoport
1 topic → 2 topics = 1 téma → 2 téma


헝가리어 언어 파일을 확인해 보시면 복수형이 항상 동일하게 처리되고 있음을 알 수 있습니다.

그러나 one 형식에 count를 사용하지 않는 문자열들이 있음을 발견했습니다.

아래와 같습니다:

이 경우 1개의 주제일 때 숫자가 필요 없으므로 상당히 명확하기 때문에 문제없습니다. 하지만 여기의 다른 차이점은 other 형식에만 숫자가 나타난다는 점입니다. 숫자가 있든 없든 텍스트는 동일합니다.


따라서 제 의견을 물어보신다면 저는 단순히 one 형식을 제거하겠습니다.

하지만 이는 제가 정확하다고 생각하는 외부 라이브러리에서 비롯된 것입니다. 헝가리어에는 복수형이 있지만 Discourse가 사용하는 대부분의 경우에서는 그렇지 않기 때문입니다. 따라서 문제를 방지하기 위해 가장 쉬운 해결책은 커스터마이징할 수 있도록 one 형식을 추가하는 것입니다. 네, 대부분은 동일하지만 적어도 관리자에서 커스터마이징할 수 있습니다.

이것이 어려운 질문인지 모르겠습니다. 헝가리어 포럼을 운영하며 관리자에서 커스터마이징을 수행한 모든 사람은 other 형식만 수정해 왔습니다. one 형식에서 항상 other 형식으로 폴백(fall back)되기 때문입니다. 따라서 one 형식을 추가하면 관리자가 other 형식과 동일하도록 해당 버전도 수정해야 하는 모든 복수 문자열을 다시 검토해야 합니다.

감사합니다 :slightly_smiling_face:

2개의 좋아요

상세한 답변 감사합니다! 버그 수정이 병합되었습니다:

해당 수정은 헝가리어에 :one 형식을 추가합니다. 향후 Crowdin 번역가들은 단수형에서 %{count}를 제거하여 :other 형식과 구별되도록 할 수 있습니다.

5개의 좋아요

빠른 수정 감사합니다. :heart:

괜찮다고 생각합니다. %{count}는 영어 로케일과 잘 맞습니다. 영어도 일부 복수 문자열의 one 형태에서 %{count}를 사용하지 않거든요. 이번 변경 사항은 관리자에서도 one 형태를 편집할 수 있게 된 것뿐인데, 이 경우에는 충분하다고 생각합니다. 올바르게 작동한다면 다른 변경은 필요하지 않을 것 같습니다. 곧 업데이트해서 테스트하겠습니다. :slightly_smiling_face:

모든 것이 훌륭하게 작동하는 것 같습니다. :slightly_smiling_face: 이 모든 것을 변경하는 것은 즐거운 시간이었지만, 거의 다 끝냈습니다. :smile: 다시 한번 감사드리고, 이 부분을 지적해 주신 @Moin 님에게도 감사합니다. :heart:

4개의 좋아요

이 주제는 마지막 답변 후 2일 동안 자동으로 닫혔습니다. 더 이상 새 답변을 작성할 수 없습니다.

더 넓은 문제는 https://meta.discourse.org/t/inconsistency-in-plural-definition/317456에서 추적 중입니다.

2개의 좋아요