【问题标题】:iOS: Localise multi-line string literalsiOS:本地化多行字符串文字
【发布时间】:2018-12-30 21:08:30
【问题描述】:

从最近的 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 中的 value 总是可以是多行的 (stackoverflow.com/a/2968662/1187415) - 为什么你希望 key 是多行的?跨度>
  • 谢谢@MartinR,这很有趣。我一直认为会查找确切的字符串。我一直使用基本语言(英语)字符串作为键。如果我按照您的建议将其更改为工作,我还需要为英语设置一个专用的 .strings 文件,对吗?
  • 没错。
  • @nontomatic 我认为如果它是一个本地化的 1 字符串,那么如果它是 \\n 或写入多行则不会有任何区别
  • 是的,但我试图给出一个最大简化示例,但我正在寻找一种可以与任何多行字符串文字以及自定义缩进舒适地工作的解决方案。

标签: ios swift string localization


【解决方案1】:

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

“你好, 我想分享以下反馈: " = "你好, ich möchte folgendes 反馈信息: ";

电话

let localizedMessage = NSLocalizedString("""
                      Hi,

                       I would like to share the following feedback:

                      """, comment: "")

按预期展开。

但是,这可能不适用于本地化工具,也不适用于 在 Localizable.strings 中以正确的语法着色显示,其中 可能会令人困惑。

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

【讨论】:

    【解决方案2】:

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

    Localizable.strings

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

    实施

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 2016-07-09
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      相关资源
      最近更新 更多