Вам нужен набор правил для каждого языка, который вы хотите поддерживать. Любой язык требует слишком многого: все они совершенно разные. Сначала создайте класс набора правил, который содержит регулярные и исключительные случаи для данного языка. Этому классу нужен единственный метод, который принимает число и возвращает строковый суффикс (или число плюс суффикс). Создайте экземпляры набора правил (статически) для каждого языка, который вас интересует.
Затем создайте категорию на NSNumber
, которая возвращает суффикс, извлеченный из соответствующего набора правил для любого языка, который нужен пользователю (системный язык, или какой-либо выбор, который они делают, или в каждом конкретном случае.)
Конечно, у каждого языка свои правила. Например, английский относительно сложен:
первый,
второй,
третий,
четвёртый,
пятые,
... 20th
и затем начинается снова в st, nd, rd, th ... Единицы 1, 2, 3 и 4 всегда являются особыми случаями. Ноль - это «ноль» (ноль, сотый, миллионный и т. Д.)
Французский отличается. 1er, то это x до конца. (Они обычно сокращаются до 're' и 'e', что делает французский довольно простым.)
Японец становится очень странным. Кардинал 1, 2, 3, 4: (ичи, ни, сан, йон) становится цуйчи, фуцука, микка и йокка. Это не суффиксы, хотя: числа называются по-разному, когда они используются в качестве порядковых. К счастью, потому что это невероятно запутанно, вы можете просто вставить символ кандзи «кай» (который выглядит как прямоугольник в коробке) после числа, и все знают, что вы имеете в виду.