创建本地化持续时间字符串

时间:2015-10-07 17:29:49

标签: java android localization locale

如果手机区域设置为英语,或者(例如)31 days等,如果手机区域设置为德语,我需要12 Hours31 Tage这样的字符串。注意:没有atonby等前缀,也没有ago等后缀。

理想情况下,其他语言也可以使用,但这些是我需要的两种语言。

我的值目前是毫秒,但我自然可以根据需要进行转换。

我可以本地化我自己的字符串并使用它们,但有没有内置的方法来做到这一点?

(这个问题与this one类似,但没有回答。)

1 个答案:

答案 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"