Вывести строки, связанные со временем, такие как «сегодня» и «вчера», переведенные в зависимости от локали? - PullRequest
0 голосов
/ 01 мая 2018

Я ищу способ напечатать связанные со временем строки, такие как «Сегодня» и «Вчера», переведенные на язык пользователя (т.е. язык) в приложении для Android.

Я пытался использовать DateUtils.getRelativeDateTimeString , но это не учитывает локаль или, по крайней мере, ее невозможно изменить во время выполнения. Мне нужно что-то похожее на этот существующий конструктор SimpleDateFormat:

public SimpleDateFormat(String pattern, Locale locale)

Конечно, было бы возможно добавить переводы каждого слова на каждом языке, но нет лучшего способа предположить, что слова действительно существуют в ОС.

Есть ли способ достичь этого?

Edit: Я пытаюсь сделать что-то похожее на указатель даты на iOS:

image

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

С комментарием @Meno Hochschild я смог решить это:

  1. Добавление библиотеки Time4A .
  2. Сделал локальную копию UnitPatterns.java и сделал ее общедоступной.
  3. Использовал это так:

UnitPatterns.of(locale).getTodayWord(); // returns "today" UnitPatterns.of(locale).getYesterdayWord(); // returns "yesterday"

0 голосов
/ 01 мая 2018

Это похоже на проблему перевода, не проблема формата даты.

Ваше приложение будет иметь сообщения, которые оно хочет отобразить пользователю. Эти сообщения должны быть переведены на ваши целевые языки. Как только вы знаете сообщение, которое вы хотите отобразить, Извлечь, а затем отобразить локализованное (т.е. переведенное) сообщение, используя локаль (Android поддерживает это).

Вполне вероятно, что вы действительно хотите отобразить слово "завтра" или "вчера". Вместо, Вы, вероятно, хотите отобразить что-то вроде "бла-бла-завтра" или "Извините, бла-бла, вчера". Перевести все сообщение, не только слова в отдельности.

Дополнительная информация Я думаю, вам нужно перевести «Сегодня» на каждый целевой язык. И вам нужно перевести каждую из строк, связанных с датой, на каждый целевой язык (под этим я подразумеваю, что «вторник 1 мая» должен быть переведен на каждый язык). Есть «хитрости», которые вы можете использовать. Выберите «базовую» часть строки и используйте заполнители для других частей. Заполнители, потому что разные языки могут иметь разные порядки «День недели Месяц»

...