Class RuLocalizationI18NTranslator

  • All Implemented Interfaces:
    I18NTranslator

    public class RuLocalizationI18NTranslator
    extends LocalizationI18NTranslator
    Клас переводчика на русский язык.

    Имеет методы настроенные на работу с файлами локализации типа **_localization.properties. Так же реализует формат ключей инъекций в формате {code}. По умолчанию берёт значение по ключу CODE.text из файла локализации.

    Имеет поддержку падежей в зависимости от переданного числа. Например, если передать следующие числа можно получать соответствующие склонения:
    21 - Осталось 11 рубль
    22 - Осталось 11 рубля
    25 - Осталось 11 рублей

    Для того чтобы этот механизм сработал нужно указать в конфигурации

    CODE.text=Осталось {balance} {balance:case}
    CODE.hasNumberCase=true
    CODE.caseFields=balance
    CODE.balance=рубль,рубля,рублей

    ,где balance - название переменой которую нужно встроить (injections), {**:case} конструкция которая указывает куда нужно встроить склоняемое слово
    переменная hasNumberCase это флаг, что нужно учитывать склонение в зависимости от числа
    переменная caseFields это перечисление полей в которые нужно встроить переменные со склонениями, переменные разделяются(,)
    переменная balance это перечисление вариантов склонения слова, в качестве ключа используется название переменной, варианты разделяются(,)
    Since:
    1.2
    Author:
    kiryanovvi
    • Constructor Detail

      • RuLocalizationI18NTranslator

        public RuLocalizationI18NTranslator​(org.springframework.context.MessageSource localizationSource)
    • Method Detail

      • isRightTranslator

        public boolean isRightTranslator​(Locale locale)
        Description copied from interface: I18NTranslator
        Метод должен вернуть true если переводчик может перевести на переданную локаль
        Parameters:
        locale - локаль на которую должен переводить переводчик
        Returns:
        true если переводчик может перевести на выбранную локаль
      • translate

        public String translate​(String code)
        Description copied from interface: I18NTranslator
        Метод возвращает уже переведённую строку, взятую из файла переводов (**.properties). Поиск производится по code
        Parameters:
        code - код по которому выполняется поиск локализации
        Returns:
        текст локализации
      • translate

        public <T> String translate​(String code,
                                    Map<String,​T> injections)
        Description copied from interface: I18NTranslator
        Метод возвращает уже переведённую строку, взятую из файла переводов (**.properties). Поиск производится по code. Данный метод поддерживает инъекции. Из HashMap, в возвращаемую строку, будут встраиваться значения хранимые в value. По key будет производиться поиск вхождения в текст и будет заменён на value
        Type Parameters:
        T - для встраивания любого типа используется метод toString()
        Parameters:
        code - code код по которому выполняется поиск локализации
        injections - Словарь инъекций. Key - ключ по которому выполняется поиск места инъекции. Value значение встраиваемое в строку
        Returns:
        текст локализации
      • hasNumberCase

        protected boolean hasNumberCase​(String code)
        Имеет зависимость между числом и падежом слова.

        Например: 1 рубль, 2 рубля, 5 рублей

        Parameters:
        code - код перевода
        Returns:
        true если перевод имеет склонение
        Since:
        1.2
      • getText

        public String getText​(String code)
        Description copied from class: LocalizationI18NTranslator
        Берёт значение из файла локализации по ключу CODE.text
        Overrides:
        getText in class LocalizationI18NTranslator
        Parameters:
        code - код по которому можно найти перевод
        Returns:
        текст локализации