如何解决如何在多个语言环境中检查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 举报,一经查实,本站将立刻删除。