Antworten:
Wenn Sie sich die Dokumentation für Text ansehen, sehen Sie, dass LocalizedStringKey kein String in den Initialisierer aufgenommen wird:
init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)
Dies macht die Lokalisierung sehr einfach. Alles was du tun musst, ist:
Wenn Sie Localizable.strings auswählen, sehen Sie, dass es Dateien für die Originalsprache und die Sprache enthält, die Sie gerade hinzugefügt haben. Dort platzieren Sie Ihre Übersetzungen, dh schlüssellokalisierte Textpaare.
Wenn Sie einen Text wie diesen haben, ist dies Ihre App:
Text("Hello World!")
Sie müssen jetzt Ihre Übersetzungen zu Ihren Localizable.strings hinzufügen:
für Ihre Basissprache:
"Hello World!" = "Hello World!";
und für Ihre zweite Sprache (in diesem Fall Deutsch):
"Hello World!" = "Hallo Welt!";
Um Ihre Vorschauen lokalisiert zu sehen, können Sie sie wie folgt definieren:
struct ContentViewView_Previews: PreviewProvider {
static var previews: some View {
ForEach(["en", "de"], id: \.self) { id in
ContentView()
.environment(\.locale, .init(identifier: id))
}
}
}
Für eine schnelle UI-Datei müssen Sie nur den Zeichenfolgenschlüssel aus der Lokalisierungsdatei .strings einfügen
SwiftUI importieren
struct ContentView: View {
var body: some View {
VStack {
Text("selectLanguage")
Text("languagesList")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.environment(\.locale, .init(identifier: "en"))
}
}
und dies ist ein Beispiel aus der .strings-Datei
"selectLanguage" = "Select language";
"languagesList" = "Languages list";
Ergebnis ist hier
Um Ihre App zu lokalisieren, benötigen Sie:
Um Localazable in SwiftUI zu verwenden, können Sie folgende Schritte ausführen:
Importieren Sie SwiftUI, um LocalizedStringKey in Ihren Dateien zu verwenden
//MARK: - File where you enum your keys to your Localized file
enum ButtonName: LocalizedStringKey {
case submit
case cancel
}
//MARK: - Your Localized file where are your translation
"submit" = "Submit is pressed";
"cancel" = "Cancel";
//MARK: - In your code
let submitButtonName = ButtonName.submit.rawValue
let cancelButtonName = ButtonName.cancel.rawValue
VStack {
Text(submitButtonName)
Text(cancelButtonName)
}