Schreibrichtung von rechts nach links und Layout-Richtung
Unterstützen Sie RTL-Sprachen und gespiegelte Layouts.
Schreibrichtung von rechts nach links und Layout-Richtung ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Sprachen mit Leserichtung von rechts nach links
Arabisch, Hebräisch, Persisch und Urdu werden von rechts nach links (RTL) geschrieben. Für diese Benutzer sollte sich die gesamte Benutzeroberfläche spiegeln: Zurück-Navigationsschaltflächen zeigen nach rechts, Listen werden am rechten Rand ausgerichtet und der Fortschritt verläuft von rechts nach links. Die Unterstützung von RTL ist ein wesentlicher Bestandteil der Internationalisierung.
// RTL locales include: ar, he, fa, ur
// The whole UI mirrors, not just the text.Leading und Trailing statt links und rechts
Die wichtigste Regel lautet: Entwerfen Sie mit leading und trailing statt mit links und rechts. Leading bezeichnet die Seite, an der das Lesen beginnt (links im Englischen, rechts im Arabischen). Wenn Sie leading/trailing verwenden, spiegelt das System Ihr Layout in RTL automatisch.
// SwiftUI uses leading/trailing automatically:
// HStack { Image(...); Text("Title") }
// .padding(.leading, 16) // flips in RTL
let edge = "leading mirrors automatically"
_ = edgelayoutDirection auslesen
SwiftUI stellt die aktuelle Richtung über den Umgebungswert layoutDirection bereit. Dieser ist entweder .leftToRight oder .rightToLeft. Lesen Sie ihn aus, wenn Sie richtungsabhängige Logik benötigen, etwa zur Auswahl eines Chevron-Assets.
// 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)SF Symbols und Bilder spiegeln
Viele SF Symbols werden automatisch gespiegelt. Bei richtungsabhängigen eigenen Bildern markieren Sie, dass sie mit der Leserichtung gespiegelt werden sollen, damit ein nach vorn zeigender Pfeil auch in RTL nach vorn zeigt. Der Modifier flipsForRightToLeftLayoutDirection steuert dieses Verhalten.
// SwiftUI:
// Image("forwardArrow")
// .flipsForRightToLeftLayoutDirection(true)
let shouldFlip = true
_ = shouldFlipEine Richtung erzwingen
Gelegentlich muss eine untergeordnete Ansicht eine feste Richtung beibehalten — etwa eine Telefonnummer oder ein von links nach rechts laufender Codeausschnitt innerhalb eines RTL-Layouts. Überschreiben Sie die Richtung mit dem Modifier environment(\.layoutDirection, _) nur für diesen Teilbaum.
// Keep a code block LTR even in an RTL app:
// CodeView(snippet)
// .environment(\.layoutDirection, .leftToRight)
let forced = "leftToRight subtree"
_ = forcedTextausrichtung und multilineTextAlignment
Verwenden Sie auch für die Textausrichtung .leading und .trailing. Ein mit .leading ausgerichteter Absatz liegt auf Arabisch automatisch am rechten Rand an. Vermeiden Sie .left/.right, da diese niemals gespiegelt werden.
// Text(longBody)
// .multilineTextAlignment(.leading) // flips in RTL
let alignment = "leading flips, left does not"
_ = alignmentBidirektionaler Text
RTL-Absätze enthalten häufig LTR-Abschnitte (URLs, Zahlen, englische Markennamen). Der Unicode Bidirectional Algorithm übernimmt die Anordnung, aber Sie können mehrdeutige Abschnitte mit Zeichen für die Richtungsisolation umschließen, um eine visuelle Vermischung zu verhindern.
import Foundation
// First-strong isolate keeps an embedded run intact
let isolated = "\u{2068}example.com\u{2069}"
print(isolated.count > 0)Semantische Inhalte für nicht zu spiegelnde Ansichten
Einige Steuerelemente — Mediensteuerungen und Zeitachsen — sollten NICHT gespiegelt werden, weil ihre Bedeutung physisch und nicht leserichtungsabhängig ist. Das semanticContentAttribute von UIKit (.playback, .spatial, .forceLeftToRight) teilt dem System mit, wann eine feste Richtung beibehalten werden soll.
// UIKit example:
// playbackBar.semanticContentAttribute = .playback
// mapOverlay.semanticContentAttribute = .spatial
let keepFixed = "playback / spatial do not mirror"
_ = keepFixedRTL testen, ohne zu übersetzen
Sie benötigen keine arabische Übersetzung, um das Spiegeln zu testen. Führen Sie die App mit der Right-to-Left Pseudolanguage in der Einstellung für die App-Sprache des Schemas aus. Die Benutzeroberfläche wird mit Ihren vorhandenen Strings gespiegelt, sodass Sie Fehler durch fest codiertes .left/.right sofort erkennen.
// Edit Scheme > Run > Options >
// App Language: Right-to-Left Pseudolanguage
let test = "mirror without real translations"
_ = testHäufige RTL-Fehler
Achten Sie auf Folgendes:
- Fest codierte Ausrichtung oder Abstände mit
.left/.right. - Manuell positionierte Ansichten mit festen x-Versätzen.
- Eigene richtungsabhängige Bilder, die nicht gespiegelt werden.
- Zurück-Chevrons oder Schieberegler, die in die falsche Richtung zeigen.
- Verkettete bidirektionale Strings, deren Darstellung durcheinandergerät.
// Replace fixed offsets with leading/trailing layout
// so AutoLayout / SwiftUI can mirror them.
let rule = "prefer leading/trailing everywhere"
_ = ruleEine RTL-fähige Zeile
Eine gut erstellte Zeile verwendet durchgehend leading/trailing, lässt Symbole spiegeln und erzwingt die Richtung nur dort, wo es die Semantik verlangt. Eine solche Ansicht benötigt keinerlei Änderungen, um sowohl auf Englisch als auch auf Arabisch korrekt auszusehen.
// HStack {
// Image(systemName: "star")
// Text("Favorite")
// Spacer()
// Image(systemName: "chevron.forward") // mirrors
// }
// .padding(.horizontal, 16)
let ready = "row mirrors automatically"
_ = readyKurze Überprüfung
Rufen Sie sich das Grundprinzip eines RTL-sicheren Layouts ins Gedächtnis.
Zusammenfassung
Sie haben gelernt, Sprachen mit Leserichtung von rechts nach links zu unterstützen:
- Entwerfen Sie mit leading/trailing, niemals mit links/rechts.
- Lesen Sie die Umgebung
layoutDirectionfür richtungsabhängige Logik aus. - Spiegeln Sie richtungsabhängige Bilder; überschreiben Sie die Richtung für feste Teilbäume wie Code oder Telefonnummern.
- Verwenden Sie
semanticContentAttributefür Wiedergabe- und räumliche Steuerelemente, die nicht gespiegelt werden dürfen. - Testen Sie vor der Veröffentlichung mit der RTL-Pseudosprache.
Häufig gestellte Fragen
Ist die Lektion „Schreibrichtung von rechts nach links und Layout-Richtung“ kostenlos?
Ja — der vollständige Text von „Schreibrichtung von rechts nach links und Layout-Richtung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Schreibrichtung von rechts nach links und Layout-Richtung“?
Unterstützen Sie RTL-Sprachen und gespiegelte Layouts. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Schreibrichtung von rechts nach links und Layout-Richtung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- String Catalogs und lokalisierte Strings
- Pluralisierung und Stringsdict
- Locale-abhängige Formatierung
- Schreibrichtung von rechts nach links und Layout-Richtung