Réponses:
Lorsque vous regardez la documentation de Text, vous pouvez voir qu'il prend LocalizedStringKey et non une chaîne dans son initialiseur:
init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)
Cela rend la localisation très simple. Tout ce que tu dois faire est:
Lorsque vous sélectionnez Localizable.strings, vous verrez qu'il contient des fichiers pour la langue d'origine et la langue que vous venez d'ajouter. C'est là que vous placez vos traductions, c'est-à-dire les paires de textes localisés.
Si vous avez un texte comme celui-ci, c'est votre application:
Text("Hello World!")
Vous devez maintenant ajouter à vos localisations.strings vos traductions:
pour votre langue de base:
"Hello World!" = "Hello World!";
et pour votre deuxième langue (en l'occurrence l'allemand):
"Hello World!" = "Hallo Welt!";
Pour voir vos aperçus localisés, vous pouvez les définir comme ceci:
struct ContentViewView_Previews: PreviewProvider {
static var previews: some View {
ForEach(["en", "de"], id: \.self) { id in
ContentView()
.environment(\.locale, .init(identifier: id))
}
}
}
Pour le fichier d'interface utilisateur rapide, il vous suffit d'insérer la clé de chaîne du fichier de localisation .strings
importer SwiftUI
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"))
}
}
et ceci est un exemple du fichier .strings
"selectLanguage" = "Select language";
"languagesList" = "Languages list";
le résultat est ici
Pour localiser votre application, vous avez besoin de:
Pour utiliser Localazable dans SwiftUI, vous pouvez procéder comme suit:
importer SwiftUI pour utiliser LocalizedStringKey dans vos fichiers
//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)
}