首页 > 解决方案 > iOS:本地化多行字符串文字

问题描述

从最近的 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: ";

有没有更好/更简洁的方法来做到这一点?

标签: iosswiftstringlocalization

解决方案


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

“你好,

 我想分享以下反馈:
" = "你好,

 ich möchte folgendes 反馈信息:
";

通话

let localizedMessage = NSLocalizedString("""
                      Hi,

                       I would like to share the following feedback:

                      """, comment: "")

按预期扩展。

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

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


推荐阅读