gpt4 book ai didi

ios - 测试此字符串初始化方法是否将字符串更改为不同的语言?

转载 作者:行者123 更新时间:2023-11-28 14:19:07 26 4
gpt4 key购买 nike

我正在浏览字符串引用文档,因为我很想知道什么是可用的或可供我使用的。我在 playground 中实现字符串 init 方法以查看其工作原理时遇到问题。我想测试这个字符串初始化方法是否可以接受一个字符串和一个语言环境对象,看看输出是否是一个翻译后的字符串。当然,我使用自动完成作为一个障碍,所以到目前为止我尝试的是我尝试键入 String.init 但我想要测试的 init 方法没有出现在列表中。如何使用此方法?

Apple reference doc

另外,我熟悉本地化。同样,这只是一个测试,以了解该函数的工作原理。

init(format: String, locale: Locale?, _ args: CVarArg...)

最佳答案

那个 String 初始化器不做任何语言翻译。它根据提供的语言环境格式化数字。

这是一个使用美国英语和德国德语语言环境的示例:

let fmtStrUS = String(format: "%@ %.2f %d", locale: Locale(identifier: "en_US"), "Hello", 1234.5, 12345)
let fmtStrDE = String(format: "%@ %.2f %d", locale: Locale(identifier: "de_DE"), "Hello", 1234.5, 12345)

结果是:

Hello 1,234.50 12,345
Hello 1.234,50 12.345

请注意,唯一的区别是数字的格式。没有完成文本翻译。

如果您只需要格式化数字,请使用 NumberFormatter。但是,如果您要本地化更多包含数字的文本,则此 String init 是更好的方法。

这可以与使用 NSLocalizedString 的标准本地化相结合。

您可能有如下代码:

let messageFormat = NSLocalizedString("Hello %.2f %d", comment: "Fun with localization")
let fullMessage = String(format: messageFormat, locale: Locale.current, someDoubleVariable, someIntVariable)

然后在 en.strings 中你将拥有:

"Hello %.2f %d" = "Hello %.2f %d"

在 de.strings 中你会:

"Hello %.2f %d = "Gutentag %.2f %d"

所以文本翻译是通过字符串文件正常完成的,但是这个 String 初始化器可以让你确保数字的格式适合当前用户的语言环境。

请注意,如果您将它与 Locale.current 一起使用,您可能希望使用 localizedStringWithFormat 而不是假定当前语言环境。

let fullMessage = String.localizedStringWithFormat(messageFormat, someDoubleVariable, someIntVariable)

关于ios - 测试此字符串初始化方法是否将字符串更改为不同的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52012922/

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