在 Swift UITest 中检测从右到左的语言
Detect right to left Language in Swift UITest
我正在尝试设置我的 UI 本地化测试。特别是 阿拉伯语 和任何其他 从右到左 (RTL) 语言。
在我的例子中,我有一个 swipe(direction: SwipeDirection)
函数,它的值是 SwipeDirection
(.up, .down, .left, .right
).
如果我现在想删除一个单元格,我只需执行 cell.swipe(.left)
并且我的 UITest
会删除该单元格。由于 UI 在 RTL 语言 上翻转,因此必须更改为 cell.swipe(.right)
。
我找不到任何检测当前设备语言的方法,也不是 UILayoutDirection
。
我已经试过像这样检查它了:
let isLeftToRight = UIView.userInterfaceLayoutDirection(for: UIView().semanticContentAttribute) == .leftToRight
还有
let isLeftToRight = UIApplication.shared.userInterfaceLayoutDirection == .leftToRight
但无论使用哪种语言,它们都总是返回 true
。
有没有其他方法可以检查我不知道的当前 UILayoutDirection
?
谢谢!
在文档中并不难找到
let locale = NSLocale.autoupdatingCurrent
let lang = locale.languageCode
let direction = NSLocale.characterDirection(forLanguage:lang!)
我正在尝试设置我的 UI 本地化测试。特别是 阿拉伯语 和任何其他 从右到左 (RTL) 语言。
在我的例子中,我有一个 swipe(direction: SwipeDirection)
函数,它的值是 SwipeDirection
(.up, .down, .left, .right
).
如果我现在想删除一个单元格,我只需执行 cell.swipe(.left)
并且我的 UITest
会删除该单元格。由于 UI 在 RTL 语言 上翻转,因此必须更改为 cell.swipe(.right)
。
我找不到任何检测当前设备语言的方法,也不是 UILayoutDirection
。
我已经试过像这样检查它了:
let isLeftToRight = UIView.userInterfaceLayoutDirection(for: UIView().semanticContentAttribute) == .leftToRight
还有
let isLeftToRight = UIApplication.shared.userInterfaceLayoutDirection == .leftToRight
但无论使用哪种语言,它们都总是返回 true
。
有没有其他方法可以检查我不知道的当前 UILayoutDirection
?
谢谢!
在文档中并不难找到
let locale = NSLocale.autoupdatingCurrent
let lang = locale.languageCode
let direction = NSLocale.characterDirection(forLanguage:lang!)