Swift Academy · Leçon

Écriture de droite à gauche et direction de la mise en page

Prenez en charge les langues RTL et les mises en page en miroir.

Leçon 4 sur 413 étapes

Écriture de droite à gauche et direction de la mise en page est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Langues qui se lisent de droite à gauche

L’arabe, l’hébreu, le persan et l’ourdou s’écrivent de droite à gauche (RTL). Pour ces utilisateurs, toute l’interface doit être inversée : les boutons de retour de navigation pointent vers la droite, les listes s’alignent sur le bord droit et la progression s’effectue de droite à gauche. La prise en charge de RTL est un élément essentiel de l’internationalisation.

// RTL locales include: ar, he, fa, ur
// The whole UI mirrors, not just the text.

Début et fin, pas gauche et droite

La règle d’or : concevez vos interfaces avec le début et la fin plutôt qu’avec la gauche et la droite. Le début correspond au point où commence la lecture — à gauche en anglais, à droite en arabe. Lorsque vous utilisez le début et la fin, le système inverse automatiquement votre mise en page en RTL.

// SwiftUI uses leading/trailing automatically:
// HStack { Image(...); Text("Title") }
// .padding(.leading, 16)  // flips in RTL
let edge = "leading mirrors automatically"
_ = edge

Lire layoutDirection

SwiftUI expose la direction actuelle au moyen de la valeur d’environnement layoutDirection, qui vaut soit .leftToRight, soit .rightToLeft. Lisez-la lorsque vous avez besoin d’une logique dépendante de la direction, par exemple pour choisir une ressource de chevron.

// In a SwiftUI View:
// @Environment(\.layoutDirection) var direction
// let chevron = direction == .rightToLeft
//     ? "chevron.left" : "chevron.right"
let ltr = "leftToRight"
let rtl = "rightToLeft"
print(ltr, rtl)

Inverser les symboles et images SF

De nombreux symboles SF s’inversent automatiquement. Pour les images personnalisées directionnelles, indiquez qu’elles doivent s’inverser avec la direction de mise en page afin qu’une flèche pointant vers l’avant continue de pointer vers l’avant en RTL. Le modificateur flipsForRightToLeftLayoutDirection contrôle ce comportement.

// SwiftUI:
// Image("forwardArrow")
//   .flipsForRightToLeftLayoutDirection(true)
let shouldFlip = true
_ = shouldFlip

Imposer une direction

Il arrive qu’une sous-vue doive conserver une direction fixe — par exemple un numéro de téléphone ou un extrait de code de gauche à droite dans une mise en page RTL. Remplacez-la avec le modificateur environment(\.layoutDirection, _) appliqué uniquement à cette sous-arborescence.

// Keep a code block LTR even in an RTL app:
// CodeView(snippet)
//   .environment(\.layoutDirection, .leftToRight)
let forced = "leftToRight subtree"
_ = forced

Alignement du texte et multilineTextAlignment

Utilisez également le début et la fin pour l’alignement du texte. Un paragraphe aligné au début se colle automatiquement au bord droit en arabe. Évitez .left/.right, qui ne s’inversent jamais.

// Text(longBody)
//   .multilineTextAlignment(.leading) // flips in RTL
let alignment = "leading flips, left does not"
_ = alignment

Texte bidirectionnel

Les paragraphes RTL intègrent souvent des séquences LTR — URL, nombres ou noms de marques anglais. L’algorithme bidirectionnel d’Unicode gère leur ordre, mais vous pouvez entourer les séquences ambiguës de caractères d’isolation directionnelle afin d’éviter les mélanges visuels.

import Foundation
// First-strong isolate keeps an embedded run intact
let isolated = "\u{2068}example.com\u{2069}"
print(isolated.count > 0)

Contenu sémantique pour les vues qui ne s’inversent pas

Certains contrôles — boutons de lecture multimédia, chronologies — ne doivent NOT pas s’inverser, car leur signification est physique et non liée au sens de lecture. L’attribut semanticContentAttribute d’UIKit (.playback, .spatial, .forceLeftToRight) indique au système quand conserver une direction fixe.

// UIKit example:
// playbackBar.semanticContentAttribute = .playback
// mapOverlay.semanticContentAttribute = .spatial
let keepFixed = "playback / spatial do not mirror"
_ = keepFixed

Tester RTL sans traduire

Vous n’avez pas besoin d’une traduction arabe pour tester l’inversion. Exécutez l’application avec la pseudolangue de droite à gauche dans le réglage de langue de l’application du schéma. L’interface s’inverse à partir de vos chaînes existantes, ce qui vous permet de repérer immédiatement les problèmes causés par .left/.right codés en dur.

// Edit Scheme > Run > Options >
//   App Language: Right-to-Left Pseudolanguage
let test = "mirror without real translations"
_ = test

Bugs RTL courants

Surveillez les problèmes suivants :

  • Un alignement ou un remplissage .left/.right codé en dur.
  • Des vues positionnées manuellement à l’aide de décalages fixes sur l’axe x.
  • Des images directionnelles personnalisées qui ne s’inversent pas.
  • Des chevrons de retour ou des curseurs qui pointent dans la mauvaise direction.
  • Des chaînes bidirectionnelles concaténées qui se mélangent.
// Replace fixed offsets with leading/trailing layout
// so AutoLayout / SwiftUI can mirror them.
let rule = "prefer leading/trailing everywhere"
_ = rule

Une ligne compatible avec RTL

Une ligne bien conçue utilise partout le début et la fin, permet aux symboles de s’inverser et n’impose une direction que lorsque la sémantique l’exige. Une telle vue ne nécessite aucune modification pour s’afficher correctement en anglais comme en arabe.

// HStack {
//   Image(systemName: "star")
//   Text("Favorite")
//   Spacer()
//   Image(systemName: "chevron.forward") // mirrors
// }
// .padding(.horizontal, 16)
let ready = "row mirrors automatically"
_ = ready

Vérification rapide

Rappelez-vous le principe essentiel d’une mise en page compatible avec RTL.

Récapitulatif

Vous avez appris à prendre en charge les langues qui se lisent de droite à gauche :

  • Concevez vos interfaces avec le début et la fin, jamais avec la gauche et la droite.
  • Lisez l’environnement layoutDirection pour la logique dépendante de la direction.
  • Inversez les images directionnelles ; remplacez la direction pour les sous-arborescences fixes comme le code ou les numéros de téléphone.
  • Utilisez semanticContentAttribute pour les commandes de lecture et spatiales qui ne doivent pas s’inverser.
  • Testez avec la pseudolangue RTL avant la mise en production.
Gratuit pour commencer

Apprends Swift avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
122
Leçons
409

Questions Fréquemment Posées

La leçon « Écriture de droite à gauche et direction de la mise en page » est-elle gratuite ?

Oui — le texte complet de « Écriture de droite à gauche et direction de la mise en page » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Écriture de droite à gauche et direction de la mise en page » ?

Prenez en charge les langues RTL et les mises en page en miroir. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Écriture de droite à gauche et direction de la mise en page » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Catalogues de chaînes et chaînes localisées
  2. Pluriels et Stringsdict
  3. Formatage selon les paramètres régionaux
  4. Écriture de droite à gauche et direction de la mise en page
← Retour à Swift Academy