Проблема с переопределением перевода для множественного числа (count)

Привет :wave:

Я заметил, что в последнем обновлении для строки с количеством 1 используется версия one. Проблема в том, что до сих пор множественные формы всегда использовали версию other, даже если количество равно 1, а на странице /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 и other), но, похоже, версия one до сих пор не использовалась, так как она недоступна в настройках административного текста. Всегда применялась версия other.

1 лайк

Могу я спросить, есть ли в венгерском языке формы множественного числа? Если да, возможно, нам стоит добавить определение :one в файл plurals.rb

1 лайк

Я нашёл причину проблемы. I18n в Discourse полагается на определение множественного числа из внешней библиотеки:

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

Но в этой библиотеке видно, что венгерский язык определён как использующий тип множественного числа класса a, который различает единственное и остальные числа.

Я совершенно не понимаю венгерский язык. Может, кто-нибудь сможет подсказать, верно ли определение множественного числа в венгерском или у нас :slightly_smiling_face:

3 лайка

Привет :waving_hand:

Спасибо, что уделили внимание. :heart:

Что ж, в венгерском языке формы множественного числа есть, но они используются не всегда, что немного усложняет дело. Но позвольте мне привести несколько простых примеров.

У большинства венгерских слов есть форма множественного числа.
Если слово неисчисляемое.
Например:
Group → Groups = Csoport → Csoportok
Topic → Topics = Téma → Témák

Так что я думаю, что внешняя библиотека права: у нас есть форма множественного числа.

Но мы не используем множественное число, если перед словом стоит число (счётчик).
Если слово исчисляемое.
Например:
1 group → 2 groups = 1 csoport → 2 csoport
1 topic → 2 topics = 1 téma → 2 téma


Если вы откроете файл венгерского языка, то увидите, что формы множественного числа всегда одинаковы.

Однако я заметил, что есть строки, где не используется count в форме one.

Например:

Это нормально, потому что в данном случае счёт не нужен, когда речь идёт только об одной теме — это очевидно. Но разница здесь в том, что в форме other появляется число. Сам текст остаётся одинаковым, независимо от того, есть число или нет.


Так что, если вы спросите меня, я бы просто убрал форму one.

Но если это исходит от внешней библиотеки, то я думаю, что это правильно, потому что у венгерского языка есть формы множественного числа, хотя в большинстве случаев, которые использует Discourse, они не применяются. Поэтому, вероятно, добавление формы one для возможности её кастомизации будет самым простым решением, чтобы избежать проблем. Да, это в большинстве случаев одно и то же, но хотя бы мы сможем настроить это в панели администратора.

Не знаю, это сложный вопрос. Все, кто управляет венгерским форумом и делает кастомизацию в админке, меняли только форму other, потому что она всегда подтягивалась вместо one. Так что, если мы добавим форму 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 дня после последнего ответа. Новые ответы больше не принимаются.

Отслеживание более широкой проблемы по адресу Inconsistency in plural definition

2 лайка