打印时间相关的字符串,例如"今天"和"昨天"翻译取决于Locale?

时间:2018-05-01 19:33:33

标签: java android simpledateformat date-format

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

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

public SimpleDateFormat(String pattern, Locale locale)

当然,可以在每种语言中添加每个单词的翻译,但假设单词实际存在于操作系统中,则没有更好的方法。

有没有办法实现这个目标?

修改 我试图在iOS上做类似于日期选择器的事情:

2 个答案:

答案 0 :(得分:2)

通过@Meno Hochschild的评论,我能够通过以下方式解决它:

  1. 添加Time4A library
  2. 制作UnitPatterns.java的本地副本并将其公开。
  3. 像这样使用它:
  4. UnitPatterns.of(locale).getTodayWord(); // returns "today" UnitPatterns.of(locale).getYesterdayWord(); // returns "yesterday"

答案 1 :(得分:0)

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

您的应用将包含要向用户显示的消息。 这些消息需要翻译成您的目标语言。 一旦知道了要显示的消息, 然后检索然后使用区域设置显示本地化(即已翻译)的消息(Android支持该消息)。

你可能真的想要显示单词"明天"或者"昨天"。 代替, 你可能想要显示像"明天等等#34;要么 "对不起等等等等等等等等#34; 翻译整个邮件, 不只是单独的单词。

其他信息 我认为你确实需要翻译"今天"进入每种目标语言。 并且,您需要将每个与日期相关的字符串翻译成每种目标语言(我的意思是" Tue May 1和#34;需要翻译成每种语言)。 有"技巧"您可以使用。 选择" base"字符串的一部分,并使用其他部分的占位符。 占位符, 因为不同的语言可能有不同的订单 "星期几日和#34;