Я работал над библиотекой .NET, чтобы помочь с интернационализацией приложения.Он написан на C #, называется SmartFormat и является открытым исходным кодом на GitHub.
Он содержит Грамматическое число правила для нескольких языков, которые определяютправильная форма единственного / множественного числа на основе шаблона и локали.Правила были получены из множественных правил языка Unicode .
При переводе фразы, слова которой зависят от количества (например, существительные, глаголы и прилагательные), вы указываете несколько форми средство форматирования выбирает правильную форму на основе этих правил.
Пример на английском языке: (обратите внимание, синтаксис почти идентичен String.Format
)
var message = "There {0:is:are} {0} {0:item:items} remaining.";
var output = Smart.Format(culture, message, items.Count);
Я хотел бы написать единицутесты для многих из поддерживаемых языков.Тем не менее, я говорю только на английском и испанском языках (оба имеют одинаковые правила грамматических чисел).
Какие хорошие тестовые фразы не на английском языке можно использовать для этих модульных тестов? Я ищу фразы, подобные "There {0:is:are} {0} {0:item:items} remaining."
.Обратите внимание, что в этом примере требуется конкретный глагол и существительное в зависимости от количества.
Примечание о синтаксисе :
Эта библиотека ищет слова :
с разделителями и выбираетправильное слово на основе правил, определенных для локали.Например, на польском языке есть 3 формы множественного числа для слова «Файл»: 1 «plik», 2-4 «pliki», 5-21 «plików».Таким образом, вы должны указать все 3 формы в строке формата: "{0} {0:plik:pliki:plików}"
.
Слова обычно упорядочены от наименьшего возможного значения к наибольшему, например "{0:zero:one:two:few:many:other}"
, как определено в множественных правилах языка Unicode .
Дополнительная информация об этом кодездесь обсуждалось: Локализация единственного / множественного числа слов - каковы различные языковые правила для грамматических чисел?