gpt4 book ai didi

ios - 强制本地化 DateComponentsFormatter 中的 allowedUnits

转载 作者:IT王子 更新时间:2023-10-29 05:41:04 25 4
gpt4 key购买 nike

我有一个只有一种语言的应用程序。在显示自日期以来的时间间隔时,我想强制使用这种语言。例如。 “9 个月前”只是用一种特定的语言而不是英语。有没有一种方法可以使用 DateComponentsFormatter 来做到这一点,否则它就可以完全按照我想对这些单位执行的操作进行操作。

    func format(duration: TimeInterval) -> String {
UserDefaults.standard.set(["da"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.year, .month, .day, .hour, .minute, .second]
formatter.unitsStyle = .short
formatter.includesApproximationPhrase = true
formatter.maximumUnitCount = 1

return formatter.string(from: -duration)!
}

format(duration: self.createdDate.timeIntervalSinceNow)

这返回例如当语言为 en 时为“1 年”。我想用一种特定的语言(“yr”->“år”),对于其他允许的单位也应该这样做。

当手机设置为应用程序的语言时,它会起作用。

我尝试在创建 DateComponentsFormatter 之前设置语言,但它仍然以手机设置的语言返回。

EDIT 在下方插入工作代码

根据答案修改后的工作代码:

    func format(duration: TimeInterval) -> String {
var calendar = Calendar.current
calendar.locale = Locale(identifier: "da")
let formatter = DateComponentsFormatter()
formatter.calendar = calendar
formatter.allowedUnits = [.year, .month, .day, .hour, .minute, .second]
formatter.unitsStyle = .short
formatter.includesApproximationPhrase = true
formatter.maximumUnitCount = 1

return formatter.string(from: -duration)!
}

format(duration: self.createdDate.timeIntervalSinceNow)

最佳答案

这是默认的 iOS 行为。如果您在手机上更改区域设置和语言,您会注意到日历应用程序中可能有 2 种语言。有时可以更改语言环境,但您示例中的 includesApproximationPhrase 不会被翻译:

var calendar = Calendar.current
calendar.locale = Locale(identifier: "da")
let formatter = DateComponentsFormatter()
formatter.calendar = calendar

关于ios - 强制本地化 DateComponentsFormatter 中的 allowedUnits,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41283147/

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