打印与时间相关的字符串,如 "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 的评论,我可以通过以下方式解决问题:
- 添加 Time4A library.
- 制作了 UnitPatterns.java 的本地副本并使其成为 public。
- 这样使用:
UnitPatterns.of(locale).getTodayWord(); // returns "today"
UnitPatterns.of(locale).getYesterdayWord(); // returns "yesterday"
我正在寻找一种方法来打印与时间相关的字符串,例如 "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 的评论,我可以通过以下方式解决问题:
- 添加 Time4A library.
- 制作了 UnitPatterns.java 的本地副本并使其成为 public。
- 这样使用:
UnitPatterns.of(locale).getTodayWord(); // returns "today"
UnitPatterns.of(locale).getYesterdayWord(); // returns "yesterday"