如何将选择器本地化为另一种语言?
how to localize a picker to another language?
@State var selectedSpace : FreeSpace = .Big_Bag
Picker("", selection: $selectedSpace) {
ForEach(FreeSpace.allCases) { FreeSpace in
Text(FreeSpace.rawValue.capitalized)
}
}.environment(\.locale, Locale.init(identifier: "az-Arab"))
.foregroundColor(Color("Color"))
.padding(.trailing)
知道 pickerValues
enum FreeSpace: String, CaseIterable, Identifiable {
case Big_Bag, Small_Bag
var id: Self { self }
}
我正在尝试将选择器中的内容转换为阿拉伯语,但找不到解决方案,它始终以英语显示。
来自苹果文档:
If you intialize a text view with a variable value, the view uses the init(:) initializer, which doesn’t localize the string. However, you can request localization by creating a LocalizedStringKey instance first, which triggers the init(:tableName:bundle:comment:) initializer instead:
// Don't localize a string variable...
Text(writingImplement)
// ...unless you explicitly convert it to a localized string key.
Text(LocalizedStringKey(writingImplement))
这意味着您必须使用:
Text(LocalizedStringKey(FreeSpace.rawValue.capitalized))
我认为您误解了 iOS 本地化的概念。在您的应用程序中,您需要提供可本地化的字符串文件(通常命名为 Localizable.strings),其中包含您支持的语言的本地化值。
所以基本上在您的项目设置中,您需要启用所需的语言(屏幕截图上的英语和阿拉伯语)。
然后您创建 Localizable.strings 文件并将其添加为您的应用程序的资源。然后通过单击文件检查器中的本地化使其可本地化。
这将让您选择要为当前文件使用的语言。使其可本地化后,您可以勾选要使用的语言,然后可以在 Project Navigator 中切换它们。
从现在开始,您将把本地化文本放入其适当的 Localizable 文件中,并使用其密钥访问它。
那么如果你使用 Text(String(localized: "key").uppercased())
你应该没问题。
@State var selectedSpace : FreeSpace = .Big_Bag
Picker("", selection: $selectedSpace) {
ForEach(FreeSpace.allCases) { FreeSpace in
Text(FreeSpace.rawValue.capitalized)
}
}.environment(\.locale, Locale.init(identifier: "az-Arab"))
.foregroundColor(Color("Color"))
.padding(.trailing)
知道 pickerValues
enum FreeSpace: String, CaseIterable, Identifiable {
case Big_Bag, Small_Bag
var id: Self { self }
}
我正在尝试将选择器中的内容转换为阿拉伯语,但找不到解决方案,它始终以英语显示。
来自苹果文档:
If you intialize a text view with a variable value, the view uses the init(:) initializer, which doesn’t localize the string. However, you can request localization by creating a LocalizedStringKey instance first, which triggers the init(:tableName:bundle:comment:) initializer instead:
// Don't localize a string variable...
Text(writingImplement)
// ...unless you explicitly convert it to a localized string key.
Text(LocalizedStringKey(writingImplement))
这意味着您必须使用:
Text(LocalizedStringKey(FreeSpace.rawValue.capitalized))
我认为您误解了 iOS 本地化的概念。在您的应用程序中,您需要提供可本地化的字符串文件(通常命名为 Localizable.strings),其中包含您支持的语言的本地化值。
所以基本上在您的项目设置中,您需要启用所需的语言(屏幕截图上的英语和阿拉伯语)。
然后您创建 Localizable.strings 文件并将其添加为您的应用程序的资源。然后通过单击文件检查器中的本地化使其可本地化。
这将让您选择要为当前文件使用的语言。使其可本地化后,您可以勾选要使用的语言,然后可以在 Project Navigator 中切换它们。
从现在开始,您将把本地化文本放入其适当的 Localizable 文件中,并使用其密钥访问它。
那么如果你使用 Text(String(localized: "key").uppercased())
你应该没问题。