iOS:本地化多行字符串文字

时间:2018-07-23 12:03:58

标签: ios swift string localization

从最近的快速版本开始,多行字符串文字就可以使用,可以轻松地格式化多行字符串的外观。

不过,我正在寻找一种本地化此类字符串的方法。

以下是用户可以发送的预配置邮件文本的示例:

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: ";

是否有更好/更简洁的方法?

2 个答案:

答案 0 :(得分:4)

Localizable.strings文件中的键和值都可以是多行。 与

"Hi,

 I would like to share the following feedback:
" = "Hallo,

 ich möchte folgendes Feedback geben:
";

通话

let localizedMessage = NSLocalizedString("""
                      Hi,

                       I would like to share the following feedback:

                      """, comment: "")

按预期扩展。

但是,这可能不适用于本地化工具,并且也无法 在Localizable.strings中以正确的语法颜色显示 可能会造成混淆。

我将改用短(单行)键,并将其本地化 语言(包括默认语言英语)。

答案 1 :(得分:0)

对我来说,这种文本和引号的布局有效(Swift 5.3,Xcode 12)

Localizable.strings

"First Line
Second Line" = "Erste Linie
Zweite Linie";

实施

let lines = NSLocalizedString("""
            First Line
            Second Line
""", comment: "")