Как обрабатывать список неопределенной длины с gettext? - PullRequest
1 голос
/ 01 октября 2011

Я бы хотел перевести строки следующего формата:

Удалить файлы toto, tata и titi.

Сначала была идея использовать Delete files %s, но потом я подумал о формах множественного числа.

Что если какой-то язык не ставит 'и' в конце, но, например, два разных слова для последнего элемента и того, что перед ним.

Итак, вот два вопроса:

  • Ты знаешь такой язык?
  • Знаете ли вы лучший способ справиться с этим делом?

1 Ответ

2 голосов
/ 02 октября 2011

Это сложнее.

На самом деле кажется, что вам нужно только выбирать между формой единственного и множественного числа (хотя языки могут иметь несколько форм множественного числа). Так что в основном Do you want to delete this file: %s? или Do you want to delete these files: %s?. Я не могу сказать для всех языков, но это было бы хорошо на польском языке.
Однако, если вы хотите указать количество (что является неплохой идеей), вы получите несколько множественных форм: Do you want to delete this file: %s (Czy chcesz usunąć ten plik: {0}? в переводе) или Do you want to translate these %n files: %s в переводе Czy chcesz usunąć te %n pliki: %s? или Czy chcesz usunąć tych %n plików: %s?.

Что касается списков, диаграммы CLDR могут быть хорошим источником информации о том, как с ними обращаться - ищите listPattern . Ниже я представляю фрагмент из польских карт:

enter image description here

{0} и {1} являются заполнителями, список, который вы предоставили, будет выглядеть так: toto; tata i titi. Я до сих пор не совсем уверен, что именно так оно и должно быть (на польском я больше склонен к toto, tata i titi), но теоретически вы можете использовать эту информацию для создания списка.
В другом ответе я утверждал, что вообще невозможно создавать такие списки в общем случае (независимо от языка), и люди склонны использовать элементы управления представлением списка для выбора или представлять данные в виде вертикального списка, чтобы избежать проблем. Ваш пример должен быть изменен на:

These file(s) would be deleted:  
toto  
tata  
titi  
Are you sure?

Это может быть проблематично (может не помещаться на экране), но именно это люди часто делают, чтобы избежать проблем со списками на иностранных языках.

...