打印与时间相关的字符串,如 "today" 和 "yesterday" 是否根据区域设置翻译?

Print time-related strings like "today" and "yesterday" translated depending on Locale?

我正在寻找一种方法来打印与时间相关的字符串,例如 "Today" 和 "Yesterday",并在 Android 应用程序中翻译成用户的区域设置(即语言)。

我曾尝试使用 DateUtils.getRelativeDateTimeString 但它 不考虑语言环境,或者至少不可能在运行时更改它。我需要类似于 SimpleDateFormat 的现有构造函数的东西:

public SimpleDateFormat(String pattern, Locale locale)

当然,可以添加每种语言的每个单词的翻译,但假设这些单词实际存在于 OS 中,没有更好的方法吗?

有办法实现吗?

编辑: 我正在尝试做一些类似于 iOS 上的日期选择器的事情:

这似乎是一个翻译问题, 不是日期格式问题。

您的应用程序将包含要向用户显示的消息。 这些消息需要翻译成您的目标语言。 知道要显示的消息后, 检索然后使用语言环境显示本地化(即翻译)消息(Android 支持)。

很可能您确实想要显示单词 "tomorrow" 或 "yesterday"。 反而, 您可能想显示类似 "blah blah tomorrow" 或 "sorry blah blah yesterday"。 翻译整个消息, 不仅仅是单独的单词。

附加信息 我认为您确实需要将 "Today" 翻译成每种目标语言。 而且,您需要将每个与日期相关的字符串翻译成每种目标语言(我的意思是 "Tue May 1" 需要翻译成每种语言)。 有 "tricks" 可以使用。 选择字符串的 "base" 部分并为其他部分使用占位符。 占位符, 因为不同的语言可能有不同的顺序 "Day-of-week Month Day"

通过@Meno Hochschild 的评论,我可以通过以下方式解决问题:

  1. 添加 Time4A library.
  2. 制作了 UnitPatterns.java 的本地副本并使其成为 public。
  3. 这样使用:

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