0Pricing
Swift Academy · درس

من اليمين إلى اليسار واتجاه التخطيط

ادعم لغات RTL والتخطيطات المعكوسة.

من اليمين إلى اليسار واتجاه التخطيط درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

اللغات التي تُقرأ من اليمين إلى اليسار

تُكتب العربية والعبرية والفارسية والأردية من اليمين إلى اليسار (RTL). وبالنسبة إلى هؤلاء المستخدمين، ينبغي أن تعكس الواجهة بأكملها اتجاهها: تتجه أزرار الرجوع في التنقل إلى اليمين، وتصطف القوائم بمحاذاة الحافة اليمنى، ويتدفق التقدم من اليمين إلى اليسار. ويُعد دعم RTL جزءًا أساسيًا من التدويل.

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

البداية والنهاية، لا اليسار واليمين

القاعدة الذهبية هي التصميم باستخدام البداية والنهاية بدلًا من اليسار واليمين. فالبداية هي الموضع الذي تبدأ منه القراءة، أي اليسار في الإنجليزية واليمين في العربية. وعند استخدام البداية والنهاية، يعكس النظام تخطيطك تلقائيًا في RTL.

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

قراءة layoutDirection

يتيح SwiftUI الاتجاه الحالي من خلال قيمة البيئة layoutDirection، التي تكون إما .leftToRight أو .rightToLeft. اقرأ هذه القيمة عندما تحتاج إلى منطق يعتمد على الاتجاه، مثل اختيار مورد سهم.

// 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 والصور

تنعكس العديد من رموز SF تلقائيًا. أما الصور المخصصة التي تشير إلى اتجاه، فعليك تحديد أنها تنقلب مع اتجاه التخطيط، حتى يظل السهم المتجه إلى الأمام متجهًا إلى الأمام في RTL. ويتحكم المعدِّل flipsForRightToLeftLayoutDirection في ذلك.

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

فرض اتجاه معين

قد يلزم أحيانًا أن يحافظ عرض فرعي على اتجاه ثابت — مثل رقم هاتف أو مقطع كود من اليسار إلى اليمين داخل تخطيط RTL. يمكنك تجاوز الاتجاه باستخدام المعدِّل environment(\.layoutDirection, _) على هذه الشجرة الفرعية فقط.

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

محاذاة النص وmultilineTextAlignment

استخدم .leading و.trailing لمحاذاة النص أيضًا. فالفِقرة المحاذاة باستخدام .leading تلتصق بالحافة اليمنى في العربية تلقائيًا. تجنب .left/.right لأنهما لا ينعكسان أبدًا.

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

النص ثنائي الاتجاه

غالبًا ما تتضمن الفقرات RTL مقاطع من اليسار إلى اليمين، مثل عناوين URL والأعداد وأسماء العلامات التجارية الإنجليزية. تتولى خوارزمية Unicode ثنائية الاتجاه ترتيبها، لكن يمكنك إحاطة المقاطع الملتبسة بأحرف عزل الاتجاه لمنع اضطرابها بصريًا.

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

محتوى دلالي للعروض التي لا تنعكس

ينبغي ألا تنعكس بعض عناصر التحكم — مثل أزرار تشغيل الوسائط والخطوط الزمنية — لأن معناها فيزيائي وليس قائمًا على اتجاه القراءة. تخبر semanticContentAttribute في UIKit النظام بموعد الحفاظ على اتجاه ثابت، باستخدام .playback و.spatial و.forceLeftToRight.

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

اختبار RTL دون ترجمة

لا تحتاج إلى ترجمة عربية لاختبار الانعكاس. شغّل التطبيق باستخدام Right-to-Left Pseudolanguage في إعداد لغة التطبيق ضمن المخطط. ستنعكس الواجهة باستخدام السلاسل النصية الحالية، ما يتيح لك اكتشاف أخطاء .left/.right المثبتة في الكود فورًا.

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

أخطاء RTL الشائعة

انتبه إلى ما يلي:

  • محاذاة أو مسافات داخلية ثابتة باستخدام .left/.right.
  • عروض موضوعة يدويًا باستخدام إزاحات x ثابتة.
  • صور مخصصة تشير إلى اتجاه ولا تنعكس.
  • أسهم الرجوع أو أشرطة التمرير المتجهة في الاتجاه الخاطئ.
  • سلاسل نصية ثنائية الاتجاه مدمجة بطريقة تؤدي إلى اضطرابها.
// Replace fixed offsets with leading/trailing layout
// so AutoLayout / SwiftUI can mirror them.
let rule = "prefer leading/trailing everywhere"
_ = rule

صف RTL جاهز

يستخدم الصف المصمم جيدًا البداية والنهاية في جميع المواضع، ويسمح بانعكاس الرموز، ويفرض الاتجاه فقط عندما تتطلب الدلالات ذلك. ولا يحتاج هذا العرض إلى أي تغييرات ليظهر بشكل صحيح باللغتين الإنجليزية والعربية.

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

تحقق سريع

تذكّر المبدأ الأساسي لتخطيط آمن مع RTL.

مراجعة

لقد تعلمت دعم اللغات التي تُكتب من اليمين إلى اليسار:

  • صمّم باستخدام البداية/النهاية، وليس اليسار/اليمين.
  • اقرأ بيئة layoutDirection للمنطق الذي يعتمد على الاتجاه.
  • اعكس الصور التي تشير إلى اتجاه، وتجاوز الاتجاه للأشجار الفرعية الثابتة مثل الكود أو أرقام الهواتف.
  • استخدم semanticContentAttribute لعناصر التحكم في التشغيل/الموضع التي يجب ألا تنعكس.
  • اختبر باستخدام اللغة الزائفة RTL قبل الإصدار.

الأسئلة الشائعة

هل درس «من اليمين إلى اليسار واتجاه التخطيط» مجاني؟

نعم — نص درس «من اليمين إلى اليسار واتجاه التخطيط» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «من اليمين إلى اليسار واتجاه التخطيط»؟

ادعم لغات RTL والتخطيطات المعكوسة. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «من اليمين إلى اليسار واتجاه التخطيط»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. كتالوجات السلاسل النصية والسلاسل المترجمة
  2. التثنية وStringsdict
  3. التنسيق المراعي للمحلية
  4. من اليمين إلى اليسار واتجاه التخطيط
← العودة إلى Swift Academy