gpt4 book ai didi

ios - Objective-C 如何本地化持续时间 : "1 Year", "2 Years"、 "3 Years"等

转载 作者:行者123 更新时间:2023-12-01 18:46:12 27 4
gpt4 key购买 nike

我需要本地化所有可能性:
1年,
2 年,然后……(不超过任何数字)。

1个月,
2 个月,然后……(不超过任何数字)。

在各种语言中,“年”这个词会根据它前面的数字而变化。比如法语:

22 年 = 22 年

23 年 = 23 年

所以我不能在 NSLocalizedString 模式中使用字符串替换,例如: [NSString stringWithFormat: @"MY_KEY_NAME_%lu_%@", amount, unitOfMeasure];
(因为计量单位取决于金额)。

我一直在看 NSDateFormatter,但我没有看到任何可以做的占位符:“#Years”或“#Months”。

你们知道本地化的简单方法吗?

提前致谢,
亚历克斯

最佳答案

你可以使用 NSDateComponentsFormatter经过一番研究,显然是 不是 在这里有车,并且至少用几种不同的语言做正确的事情。

你会用类似的东西创建格式化程序

let formatter = NSDateComponentsFormatter()
formatter.allowedUnits = NSCalendarUnit.Year
formatter.unitsStyle = NSDateComponentsFormatterUnitsStyle.Full

然后对于一个简单的测试尝试类似
let now = NSDate()
for yearsAhead in (1...30) {
let newDate = lendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.Year, value: yearsAhead, toDate: now, options: NSCalendarOptions.MatchNextTime)
let duration = formatter.stringFromDate(now, toDate: newDate!)
print("\(newDate): \(duration)")
}

将设备语言设置为法语,这对所有 >1 的值都使用“ans”,这显然是正确的:
2017-02-24 17:39:53 +0000: 1 an
2018-02-24 17:39:53 +0000: 2 ans
2019-02-24 17:39:53 +0000: 3 ans
2020-02-24 17:39:53 +0000: 4 ans
2021-02-24 17:39:53 +0000: 5 ans
2022-02-24 17:39:53 +0000: 6 ans
....

如您所述,将设备语言设置为俄语时,它使用不同的复数表示不同的数字,并使用西里尔字符:
2017-02-24 17:41:29 +0000: 1 год
2018-02-24 17:38:38 +0000: 2 года
2019-02-24 17:38:38 +0000: 3 года
2020-02-24 17:38:38 +0000: 4 года
2021-02-24 17:38:38 +0000: 5 лет
2022-02-24 17:38:38 +0000: 6 лет
....

关于ios - Objective-C 如何本地化持续时间 : "1 Year", "2 Years"、 "3 Years"等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584306/

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