gpt4 book ai didi

ios - 货币复数 swift 不允许配置

转载 作者:行者123 更新时间:2023-12-01 16:12:55 25 4
gpt4 key购买 nike

我想从 NumberFormatter 中删除一个点 ("."),因为 VoiceOver 的一个问题是将 20.000(点在西类牙语中是分隔符)读作 20 而不是 20000。

在下面的示例中,您可以测试只有 currencyPlural 是唯一声明货币完整字符串但忽略 usesGroupingSeparator 标志的 NumberFormatter.Style

例子:

func formatTest(_ style:  NumberFormatter.Style, usesGroupingSeparator separator: Bool) -> String? {
let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "es_CL")
formatter.usesGroupingSeparator = separator
formatter.numberStyle = style
return formatter.string(from: NSNumber(value: 20000))
}


formatTest(.currency, usesGroupingSeparator: false) // "$20000"
formatTest(.currencyAccounting, usesGroupingSeparator: false) // "$20000"
formatTest(.currencyISOCode, usesGroupingSeparator: false) // "CLP 20000"
formatTest(.currencyPlural, usesGroupingSeparator: false) // "20.000 pesos chilenos"

formatTest(.currency, usesGroupingSeparator: true) // "$20.000"
formatTest(.currencyAccounting, usesGroupingSeparator: true) // "$20.000"
formatTest(.currencyISOCode, usesGroupingSeparator: true) // "CLP 20.000"
formatTest(.currencyPlural, usesGroupingSeparator: true) // "20.000 pesos chilenos"

知道如何解决这个问题吗?请不要发布像手动删除点这样的回复,因为我想使用多种语言的格式。

额外:西类牙语画外音总是将 $ 宣布为美元,所以我需要完整的文本。

最佳答案

I want to remove a dot (".") from a NumberFormatter, because an issue with VoiceOver that read 20.000 (dot is separator in spanish) as 20 instead of 20000 [...] Any idea how to fix this?

显示您想要的格式化数字,让 VoiceOver 读出您想要的任何内容 ⟹ 您无需移除屏幕上的点。 👍
问题是 VoiceOver 无法完美读取货币,而 numbers 没有问题。 .

您的问题的解决方案可能是将区域设置货币附加到金额(仅适用于 VoiceOver 😓),如下所示:

@IBOutlet weak var myLabel: UILabel!

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

// Your function is used to display the formatted text.
myLabel.text = formatTest(.currencyPlural,
usesGroupingSeparator: true)

let locale = Locale(identifier: "es_CL")

let formatter = NumberFormatter()
formatter.locale = locale
formatter.numberStyle = .spellOut

// Define the a11y label to be specifically read out by VoiceOver.
myLabel.accessibilityLabel = formatter.string(from: 20000)! + " " + locale.localizedString(forCurrencyCode: locale.currencyCode!)!
}

即使我一个西类牙语单词都不会,我还是更改了我的设备配置来测试它,显然,它按预期工作。 😳

根据您的环境调整此代码片段,以保持您的格式适用于多种语言,并为您的区域设置货币自动配置 VoiceOver。 😉

关于ios - 货币复数 swift 不允许配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60176805/

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