Прежде чем вы отметите мой вопрос как повторяющийся, я уже видел ответы на этот вопрос и этот вопрос. Правила порядковых суффиксов в английском языке достаточно просты, как показывают эти ответы, но я надеюсь на подход, поддерживающий локализацию. Например, порядковый номер 10 - это 10-е место на английском языке, а на испанском - 10º. Есть ли библиотека или что-то еще, что позволило бы мне избежать необходимости реализовывать это самостоятельно для каждого языка?
@GhostCat На StackOverflow есть сотни вопросов, ответы на которые связаны с функциями API или библиотеками, такими как Apache Commons. Это то, что я ищу, и я бы принял технику или фрагмент кода так же легко, как стороннюю библиотеку.
Итак, есть сотни вопросов, которые не соответствуют критериям этого сообщества. Таким образом что вдруг ваш вопрос по теме ?! Я не придумывал эти правила. Я просто сообщаю вам об этом. И тогда я дал вам альтернативный вариант. И, конечно же, всегда есть такие вещи, как Reddit.




добавьте зависимость icu в свой gradle:
implementation 'com.ibm.icu:icu4j:xx.xx'
теперь у вас есть RuleBasedNumberFormat, на котором вы можете написать что-то вроде этого, чтобы получить локализованные порядковые номера:
RuleBasedNumberFormat formatter = new RuleBasedNumberFormat(Locale.UK, RuleBasedNumberFormat.ORDINAL);
//ordinalNumber = "1st"
String ordinalNumber = formatter.format(1);
Вот пример для Android, который должен учитывать локали. Обратите внимание, что он написан на Котлине. Для этого требуется Android 7.0 или новее.
import android.icu.text.MessageFormat // Don't use java.text.MessageFormat!
val value = 123
val formatter = MessageFormat("{0,ordinal}", Locale("es", "ES")) // Locale.US for English
val ordinalValue = formatter.format(arrayOf(value)) // "123.º"
обратите внимание, что для этого требуется Android> = 7.0 и что вы должны быть осторожны при использовании android.icu.text.MessageFormat, а не java.text.MessageFormat
Вопросы, просящие нас порекомендовать или найти книгу, инструмент, библиотеку программного обеспечения, учебное пособие или другой внешний ресурс, не относятся к теме Stack Overflow, поскольку они, как правило, привлекают самоуверенные ответы и спам. Вы мощь испытываете удачу в программное обеспечение, но первый изучаете соответствующий справочный центр, чтобы понять политику этого сообщества. И подумайте об удалении вопроса о это, пожалуйста! Спасибо!