web-dev-qa-db-fra.com

Comment implémenter la localisation dans Swift UI

Quelqu'un peut-il m'aider? Je ne trouve aucune description de la localisation dans Swift UI. Quelqu'un peut-il donner des conseils ou mieux un exemple de localisation par exemple Text()?

8
Oleh H

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:

  • créer un nouveau fichier de type Strings File, appelez-le Localizable
  • sélectionnez le nouveau fichier et naïf à l'inspecteur de fichiers dans le panneau de droite et cliquez sur Localiser ...
  • accédez à votre fichier de projet dans la section Localisations et ajoutez une autre langue à la liste - Xcode créera des fichiers de localisation pour vous

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 des 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))
        }
    }
}
11
LuLuGaGa

Pour Swift UI file, 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

3
Oleh H

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)
}
0
Roland Lariotte

Pour localiser votre application, vous avez besoin de:

  1. Utilisez des éléments SwiftUI comme: Text ("Nice") . Nice devient la clé de Localizable.strings.
  2. Dans les cas où le texte n'est pas dans l'élément SwiftUI, il faut utiliser NSLocalizedString .
  3. Sélectionnez votre cible d'application.
  4. Exporter la localisation: Modifier -> Exporter pour la localisation ...
  5. Donnez les fichiers exportés au traducteur.
  6. Importer les traductions: Modifier -> Importer les localisations ...
0
Ramis