如果手机区域设置为英语,或者(例如)31 days
等,如果手机区域设置为德语,我需要12 Hours
或31 Tage
这样的字符串。注意:没有at
,on
,by
等前缀,也没有ago
等后缀。
理想情况下,其他语言也可以使用,但这些是我需要的两种语言。
我的值目前是毫秒,但我自然可以根据需要进行转换。
我可以本地化我自己的字符串并使用它们,但有没有内置的方法来做到这一点?
(这个问题与this one类似,但没有回答。)
答案 0 :(得分:0)
我无法在此处测试任何Java代码,但是在语言设置为德语时您是否尝试过DateUtils.getRelativeTimeSpanString
?它是否返回类似vor 31 Tage
的内容?
如果是这样,你可以确保你的时间总是在过去,所以“5小时前”,“12天前”等等,从来没有像“在3天内”的未来时间跨度。然后在你的翻译字符串中:
string_ago = "ago" // en strings.xml
string_ago = "vor" // de strings.xml
然后在代码中删除“之前”,就像这样。
final CharSequence relativeTimeSpan = DateUtils.getRelativeTimeSpanString(timepast, now, 0);
String strtimespan = relativeTimeSpan.toString();
String strago = resources.getString(R.string.string_ago); // "ago" or "vor" depending on language setting
strtimespan.replace(strago, ""); // remove "ago" or "vor"