微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在多个语言环境中检查NSLocalizedString的值?

如何解决如何在多个语言环境中检查NSLocalizedString的值?

我们的iOS应用已翻译成19种语言,最近我发现一个问题,即屏幕上的两个按钮具有相同的标题-这意味着用户无法分辨要按哪个按钮!

我想编写一个单元测试,以检查特定区域设置中的两个NSLocalizedString键,并确保它们不会冲突。

如何在任意语言环境中查找NSLocalizedString的值?

(例如,假设我要查找“删除”和“删除”的翻译版本,或类似的东西,并确保这两个翻译的字符串不同。)

(我猜答案将与Bundle有关吗?​​)

这是我正在寻找的伪代码

class TranslationTest: XCTest {
  func testNoTranslationCollision() {
    let allLocales = // list of all supported locales in the app
    allLocales.forEach { locale in
      let translatedStringA = "Remove".asTranslatedIn(locale)
      let translatedStringB = "Delete".asTranslatedIn(locale)
      XCTAssertNotEqual(
        translatedStringA,translatedStringB,"The translations for these different strings shouldn't be identical!"
      )
    }
  }
}

解决方法

现在,在Xcode 11中,您可以使用“测试计划”为每个测试定义不同的配置。因此,请定义不同的配置,以便每个配置都使用特定语言启动应用程序。如果未在“应用​​程序语言”中显示特定语言(如波斯语),则将其语言代码添加到“启动时传递的参数”中,如下所示:

-AppleLanguages (en)

首先,您需要创建一个受支持的语言代码数组,并遍历该数组并设置语言并比较您的字符串

let stringA = NSLocalizedString("Remove",comment: "stringA")
let stringB = NSLocalizedString("Delete",comment: "stringB")
XCTAssertNotEqual(
    stringA,stringB,"The translations for these different strings shouldn't be identical!"
  )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。