自最近的swift版本以来,提供了多行字符串文字,可以轻松格式化多行字符串的外观。
不过,我正在寻找一种方法来本地化这样一个字符串。
以下是用户可以发送的预配置邮件的文本示例:
mailComposerVC.setMessageBody("""
Hi,
I would like to share the following feedback:
""",
isHTML: false)
似乎没有办法将其正确地转换为可本地化的.strings文件。
作为一种变通方法,我想出了一个解决方案,可以单独定位消息的每个部分并使用插值:
let localisedGreeting = NSLocalizedString("Hi", comment: "")
let localisedMessage = NSLocalizedString("I would like to share the following feedback: ", comment: "")
mailComposerVC.setMessageBody("""
(localisedGreeting),
(localisedMessage)
""",
isHTML: false)
.strings文件如下所示:
"Hi" = "Hallo";
"I would like to share the following feedback: " = "ich möchte folgendes Feedback geben: ";
有更好/更简洁的方法吗?
Localizable.strings
文件中的键和值都可以是多行的。带
"嗨,我想分享以下反馈:"="你好,ich möchte遵循反馈geben:";
调用
let localizedMessage = NSLocalizedString("""
Hi,
I would like to share the following feedback:
""", comment: "")
按预期扩展。
然而,这可能不适用于本地化工具,而且也不适用在Localizable.strings中以正确的语法着色显示可能会令人困惑。
我会使用一个短(单行(键,并将其本地化语言(包括默认语言英语(。
对我来说,这种文本和引号的布局很有效(Swift 5.3,Xcode 12(
Localizable.strings
"First Line
Second Line" = "Erste Linie
Zweite Linie";
实施
let lines = NSLocalizedString("""
First Line
Second Line
""", comment: "")