如何知道 SwiftUI 中的语言是否是从右到左的?
How to know if language is right-to-left in SwiftUI?
我正在使用 SwiftUI 构建一个应用程序,并且我正在使用指向手 SF 符号,问题是要将应用程序本地化为从右到左的语言,这个符号没有意义,我想要添加条件以在语言从右到左时更改它。
如何知道本地语言在SwiftUI中是否是从右到左的?
代码如下:
struct MyView: View {
var body: some View {
HStack {
Spacer()
Text("SWIPE")
.font(.system(.headline, design: .serif))
Image(systemName: localizedSymbol)
.font(.title2)
}
}
var localizedSymbol: String {
var leftToRight = true // How to get this property
return leftToRight ? "hand.point.right" : "hand.point.left"
}
}
我确实找到了这篇文章,但我如何访问 UIView,我可以将 UIViewRepresentable 与 UIImage 一起使用,但对于此类任务来说似乎太复杂且难以阅读。 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/SupportingRight-To-LeftLanguages/SupportingRight-To-LeftLanguages.html
您可以通过获取当前语言来检查并检查前缀是否为“ar”表示语言是阿拉伯语然后是从右到左的语言。
这里是示例代码。
var isRightToLeft: Bool {
if let languageArray = UserDefaults.standard.value(forKey: "AppleLanguages") as? Array<String>,
let languageObj = languageArray.first,
languageObj.prefix(2) == "ar" {
return true
} else {
return false
}
}
对于更具体和所有语言,您可以使用下面的代码。
var isRightToLeft: Bool {
if let languageArray = UserDefaults.standard.value(forKey: "AppleLanguages") as? Array<String>,
let languageObj = languageArray.first {
let direction = Locale.characterDirection(forLanguage: languageObj)
switch direction {
case .leftToRight:
return false
case .rightToLeft:
return true
default:
return false
}
}
return false
}
这是基于 Locale
的方法:
guard let language = Locale.current.languageCode else { return }
let direction = Locale.characterDirection(forLanguage: language)
switch direction {
case .leftToRight:
print("do something here")
case .rightToLeft:
print("do something here")
// ... others if needed
default:
print("do something here")
}
我正在使用 SwiftUI 构建一个应用程序,并且我正在使用指向手 SF 符号,问题是要将应用程序本地化为从右到左的语言,这个符号没有意义,我想要添加条件以在语言从右到左时更改它。
如何知道本地语言在SwiftUI中是否是从右到左的?
代码如下:
struct MyView: View {
var body: some View {
HStack {
Spacer()
Text("SWIPE")
.font(.system(.headline, design: .serif))
Image(systemName: localizedSymbol)
.font(.title2)
}
}
var localizedSymbol: String {
var leftToRight = true // How to get this property
return leftToRight ? "hand.point.right" : "hand.point.left"
}
}
我确实找到了这篇文章,但我如何访问 UIView,我可以将 UIViewRepresentable 与 UIImage 一起使用,但对于此类任务来说似乎太复杂且难以阅读。 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/SupportingRight-To-LeftLanguages/SupportingRight-To-LeftLanguages.html
您可以通过获取当前语言来检查并检查前缀是否为“ar”表示语言是阿拉伯语然后是从右到左的语言。
这里是示例代码。
var isRightToLeft: Bool {
if let languageArray = UserDefaults.standard.value(forKey: "AppleLanguages") as? Array<String>,
let languageObj = languageArray.first,
languageObj.prefix(2) == "ar" {
return true
} else {
return false
}
}
对于更具体和所有语言,您可以使用下面的代码。
var isRightToLeft: Bool {
if let languageArray = UserDefaults.standard.value(forKey: "AppleLanguages") as? Array<String>,
let languageObj = languageArray.first {
let direction = Locale.characterDirection(forLanguage: languageObj)
switch direction {
case .leftToRight:
return false
case .rightToLeft:
return true
default:
return false
}
}
return false
}
这是基于 Locale
的方法:
guard let language = Locale.current.languageCode else { return }
let direction = Locale.characterDirection(forLanguage: language)
switch direction {
case .leftToRight:
print("do something here")
case .rightToLeft:
print("do something here")
// ... others if needed
default:
print("do something here")
}