gpt4 book ai didi

android - 如何描述Android中的持续时间?

转载 作者:行者123 更新时间:2023-11-29 01:34:42 24 4
gpt4 key购买 nike

我正在编写小型应用程序,我需要用 i18n 编写体育赛事的持续时间。我将 PrettyTime 库用于日期,但是当我尝试使用 DateUtils 或 PrettyTime 时,我遇到了问题..

例如我想说持续时间是 2 分钟。我需要一些方法将它传递给支持 i18n 的库并接受毫秒并返回字符。

在安卓中我们有:

com.android.internal.R.plurals.duration_minutes

但我无法从我的应用程序访问它。有没有什么方法可以使用正确的方式而不是为所有语言编写自己的复数形式?

谢谢

最佳答案

我不确定您在 Android-DateUtils 和 PrettyTime-library 的上下文中谈论的是哪些问题。但我确信 Android-DateUtils 并不能完美地管理各种语言的复数规则(尤其是奴隶语言或阿拉伯语,因为它只知道单数和一种复数形式,这太简单了)。参见例如这个 Android-issue .关于 PrettyTime 库,如果您考虑阿拉伯语,同样的反对意见是有效的 - 请参阅 source .

我的建议:

试试我的图书馆 Time4A (一个新的 AAR 库)。然后您可以使用此代码处理毫秒输入并生成本地化的分钟字符串:

// input
long millis = 1770123;

// create a duration
Duration<ClockUnit> duration = Duration.of(millis, ClockUnit.MILLIS);

// normalization to (rounded) minutes
duration = duration.with(ClockUnit.MINUTES.rounded());

String s = PrettyTime.of(Locale.ENGLISH).print(duration, TextWidth.WIDE);
System.out.println(s); // 30 minutes

韩语示例(回答@Gabe Sechan 的评论):

String s = PrettyTime.of(new Locale("ko")).print(duration, TextWidth.WIDE);
System.out.println(s); // 30분 (korean translation of "30 minutes")

阿拉伯语示例(从右到左):

String s = PrettyTime.of(new Locale("ar")).print(duration, TextWidth.WIDE);
System.out.println(s); // ٣٠ دقيقة

此解决方案目前支持~90 种语言(比 PrettyTime 库中的语言多)和三种文本宽度(完整、缩写或窄)。自动包含准确的复数处理。 Time4A 使用自己的基于 CLDR 数据的语言资源(独立于 Android)。但是您可以通过定义自己的 Assets (以 UTF-8 格式)自由覆盖这些资源。

关于规范化:我刚刚展示了您在问题中描述的变体。但是,还有更多方法可以规范化 Time4A(J) 中的持续时间。这page会给你更多关于如何使用该功能的想法。

如果您仍然想念某些语言,请告诉我,我会在下一个版本的 Time4A 中支持它。当前支持的语言可以在 tutorial 中找到.

关于android - 如何描述Android中的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29110957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com