суббота, 18 июня 2011 г.

Слал лучи ненависти..

в сторону явы/андроида и компании
Последние мои часы должны слева показывать название месяца; все названия (месяцы/дни недели) у меня локализуются, ну красиво же - но при выводе форматтером названия месяца с установленной русской локалью эта *** выводит текущий месяц как "Июля" вместо "Июль"
Ппц
String.format("%1$tB", curDateTime)
выдает "июля",
SimpleDateFormat df = new SimpleDateFormat("MMMM", symbols);
тоже выдает "июля"; в доке написано, что можно использовать модификатор (?) "L", он мол как раз для случая русского языка, когда у месяцев суффиксы меняются в зависимоти от вариант использования.. но с "L" процесс просто падает
Гуглил-гуглил, толком ничего не пригуглил, только время потерял на гугления да тесты.. а надо было с самого начала наколхозить что-то типа:
final private String[] rusMonths = {"Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
                    "Июль", "Август", "Сентябрь", "Октыбрь", "Ноябрь", "Декабрь"};

    final private Locale rusLocale = new Locale("ru_RU");
    ...
    if (Locale.getDefault().getDisplayLanguage().equals(rusLocale.getDisplayLanguage())) {
      DateFormatSymbols symbols = new DateFormatSymbols(rusLocale);
      symbols.setMonths(rusMonths);
      SimpleDateFormat df = new SimpleDateFormat("MMMM", symbols);
      remoteViews.setTextViewText(R.id.idMonth, df.format(curDateTime.getTime()));
    } else
      remoteViews.setTextViewText(R.id.idMonth, String.format("%1$tB", curDateTime));
Ну выглядит как-то странненько и страшненько (больше просто чтобы посмотреть, что это за DateFormatter и как юзается), но как всегда, KISS рулит

Комментариев нет:

Отправить комментарий