Локализация Android: Что я делаю не так, чтобы отображались месяцы в зависимости от локали? - PullRequest
0 голосов
/ 20 сентября 2011

Это очень просто, я ожидаю, что следующий фрагмент кода будет отображать Gennaio (итальянский для января), но он все еще отображает январьДаже если я установлю локаль устройства в Италию.Любая помощь будет оценена.Спасибо, W.

    Calendar calendar= Calendar.getInstance(Locale.ITALIAN);
    calendar.set(2011,0,1);     
button.setText((calendar.getTime().toString()));

1 Ответ

2 голосов
/ 20 сентября 2011

Ваш вывод логичен, но toString () обычно и, безусловно, в этом случае является служебной функцией, предназначенной главным образом для отладки.

Для локализованных дат вам нужно использовать DateFormatter, например:

Calendar calendar=Calendar.getInstance();
 calendar.set(2011,0,1);
 String formatted=DateFormat.getLongDateFormat(this).format(calendar.getTime());
 button.setText(formatted);

В этом примере используется один из трех стандартных форматеров даты, но вы можете получить достаточно конкретную информацию о формате, особенно вызывая DateFormat.getInstance (context) .getDateInstance, который позволяет вам устанавливать больше параметров, включая локаль.Здесь немного подробнее: http://developer.android.com/reference/java/text/DateFormat.html

Надеюсь, это то, что вы искали.

...