0Pricing
Swift Academy · درس

التنسيق المراعي للمحلية

نسّق الأعداد والتواريخ والعملات وفقًا للمحلية.

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

الأعداد ليست موحّدة عالميًا

يُكتب العدد مليون ومئتا ألف بالشكل 1,200,000.50 في الولايات المتحدة، وبالشكل 1.200.000,50 في ألمانيا، وبالشكل 12,00,000.50 في الهند. يؤدي تثبيت الفواصل أو التنسيقات في الكود إلى أخطاء في معظم أنحاء العالم. تتولى واجهة برمجة التطبيقات FormatStyle في Swift معالجة ذلك بشكل صحيح لكل لغة محلية.

import Foundation
let value = 1_200_000.5
print(value.formatted()) // uses current locale

نقطة الدخول formatted()

تحتوي معظم الأنواع القياسية — مثل الأعداد والتواريخ وقياسات الوحدات والقوائم — على أسلوب formatted(). وعند استخدامه من دون معاملات، يطبق إعدادات افتراضية مناسبة تراعي اللغة المحلية؛ ويمكنك تمرير نمط لتخصيص التنسيق.

import Foundation
let n = 1234.567
print(n.formatted())                      // default
print(n.formatted(.number.precision(.fractionLength(2))))

أنماط الأعداد

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

import Foundation
let x = 1234.5
print(x.formatted(
    .number
    .grouping(.automatic)
    .precision(.fractionLength(0...2))))

تنسيق العملات

بالنسبة إلى الأموال، يضع .currency(code:) الرمز وفواصل التجميع والمنازل العشرية بالشكل الصحيح وفقًا للغة المحلية. ويظهر المبلغ نفسه بالشكل $1,200.00 أو 1.200,00 €€ حسب منطقة المستخدم — فلا تنشئ سلاسل العملات يدويًا أبدًا.

import Foundation
let price = 1200.0
print(price.formatted(.currency(code: "USD")))
print(price.formatted(.currency(code: "EUR")))
print(price.formatted(.currency(code: "JPY")))

تنسيق النسب المئوية

يضرب .percent القيمة في 100 ويضيف علامة النسبة المئوية الخاصة باللغة المحلية، كما يتعامل مع قواعد المسافات التي تتطلبها بعض اللغات بين العدد والرمز.

import Foundation
let ratio = 0.875
print(ratio.formatted(.percent))
print(ratio.formatted(.percent.precision(.fractionLength(1))))

تجاوز اللغة المحلية

يستخدم التنسيق افتراضيًا Locale.current. ولإجبار التنسيق على استخدام لغة محلية محددة — لأغراض الاختبار أو لعرض قيمة وفق منطقة ثابتة — أضف .locale(_:) إلى أي نمط.

import Foundation
let value = 1234567.89
let german = Locale(identifier: "de_DE")
print(value.formatted(.number.locale(german)))
// 1.234.567,89

تنسيق التواريخ

للتواريخ أنماطها الخاصة. يتيح لك .dateTime تركيب الحقول التي تريدها، مثل السنة والشهر واليوم والساعة، ثم يرتبها النظام وفقًا للغة المحلية — شهر-يوم-سنة في الولايات المتحدة، ويوم-شهر-سنة في معظم أوروبا.

import Foundation
let now = Date()
print(now.formatted(
    .dateTime.year().month().day()))
print(now.formatted(date: .long, time: .shortened))

التواريخ النسبية

ينتج كل من RelativeDateTimeFormatter والنمط .relative عبارات مثل «منذ ساعتين» أو «خلال 3 أيام» مترجمة بالكامل. وهذا مناسب جدًا لخلاصات المحتوى والطوابع الزمنية.

import Foundation
let past = Date().addingTimeInterval(-3600)
let text = past.formatted(
    .relative(presentation: .named))
print(text) // e.g. "1 hour ago"

القياسات والوحدات

ينسّق Measurement الكميات الفيزيائية ويمكنه تحويل الوحدات. وتحدد اللغة المحلية ما إذا كان سيُعرض الكيلومتر أم الميل، كما يترجم النمط اسم الوحدة نفسه.

import Foundation
let distance = Measurement(value: 5, unit: UnitLength.kilometers)
print(distance.formatted())
print(distance.formatted(
    .measurement(width: .wide)))

القوائم والأسماء

حتى وصل العناصر يراعي اللغة. يُنتج .list(type:) عبارة «تفاح وبرتقال وإجاص» بالإنجليزية، ويستخدم أداة العطف والفواصل الصحيحة في اللغات الأخرى — فتجنب إدراج الفواصل وكلمة «و» يدويًا.

import Foundation
let fruits = ["apples", "oranges", "pears"]
print(fruits.formatted(.list(type: .and)))
print(fruits.formatted(.list(type: .or)))

التحليل العكسي

إن FormatStyles قابلة للعكس. إذ تعمل parseStrategy الخاصة بالنمط — أو تهيئة قيمة من سلسلة نصية باستخدام النمط — على تحويل النص المترجم محليًا مرة أخرى إلى عدد أو تاريخ، مع مراعاة قواعد اللغة المحلية نفسها.

import Foundation
let style = Decimal.FormatStyle.Currency(code: "USD")
let amount = try? Decimal("$1,234.50", format: style)
print(amount ?? 0)

تحقق سريع

تذكّر الأداة المناسبة لتنسيق الأموال.

مراجعة

لقد تعلمت التنسيق الذي يراعي اللغة المحلية باستخدام FormatStyle:

  • يوفر formatted() إعدادات افتراضية صحيحة وفق اللغة المحلية؛ ومرّر نمطًا لتخصيصها.
  • تغطي .number و.currency(code:) و.percent و.dateTime و.relative و.measurement و.list معظم الاحتياجات.
  • أضف .locale(_:) لتجاوز المنطقة؛ ويمكن للأنماط أيضًا تحليل النص وإعادته إلى قيم.
  • لا تنشئ الفواصل أو رموز العملات أو ترتيب التاريخ يدويًا أبدًا.

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

هل درس «التنسيق المراعي للمحلية» مجاني؟

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

ماذا ستتعلم في «التنسيق المراعي للمحلية»؟

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

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

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

كم من الوقت يستغرق درس «التنسيق المراعي للمحلية»؟

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

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

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

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

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