Skip to content

Commit b9c2233

Browse files
CopilotCopilot
andcommitted
Add Arabic (ar) content translation YAML files for all 112 Java pattern snippets
Create translations/content/ar/ with Arabic translations for all categories: - collections (10 files) - concurrency (10 files) - datetime (6 files) - enterprise (12 files) - errors (7 files) - io (10 files) - language (21 files) - security (5 files) - streams (11 files) - strings (7 files) - tooling (8 files) Translations use Modern Standard Arabic (فصحى), keeping Java technical terms, class names, method names, and API names in English. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 43c82f3 commit b9c2233

File tree

112 files changed

+1904
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+1904
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Collectors.teeing()"
2+
oldApproach: "تمريرتان على البيانات"
3+
modernApproach: "teeing()"
4+
summary: "احسب تجميعَين في تمريرة واحدة على Stream."
5+
explanation: "يُرسل Collectors.teeing() كل عنصر إلى مُجمِّعَين فرعيَّين ثم يدمج النتيجتين. يتجنّب هذا تكرار تدفق البيانات مرتين أو استخدام متراكم قابل للتعديل."
6+
whyModernWins:
7+
- icon: ""
8+
title: "تمريرة واحدة"
9+
desc: "تمر على Stream مرة واحدة بدلاً من مرتين."
10+
- icon: "🧩"
11+
title: "قابل للتركيب"
12+
desc: "ادمج أي مُجمِّعَين باستخدام دالة دمج."
13+
- icon: "🔒"
14+
title: "نتيجة ثابتة"
15+
desc: "ادمج مباشرةً في record أو كائن قيمة."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 12 (مارس 2019)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "نسخ المجموعات بصورة ثابتة"
2+
oldApproach: "نسخ يدوي + تغليف"
3+
modernApproach: "List.copyOf()"
4+
summary: "أنشئ نسخة ثابتة من أي مجموعة في استدعاء واحد."
5+
explanation: "تُنشئ List.copyOf() و Set.copyOf() و Map.copyOf() نسخاً ثابتة من المجموعات الموجودة. إذا كان المصدر مجموعةً ثابتةً بالفعل فلن تُنشأ نسخة."
6+
whyModernWins:
7+
- icon: ""
8+
title: "نسخ ذكي"
9+
desc: "يتجاوز النسخ إذا كان المصدر ثابتاً بالفعل."
10+
- icon: "📏"
11+
title: "استدعاء واحد"
12+
desc: "لا حاجة لإنشاء ArrayList يدوياً ثم تغليفه."
13+
- icon: "🛡️"
14+
title: "نسخة دفاعية"
15+
desc: "التغييرات في المصدر لا تؤثر على النسخة."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 10 (مارس 2018)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "إنشاء قوائم ثابتة"
2+
oldApproach: "تغليف مطوّل"
3+
modernApproach: "List.of()"
4+
summary: "أنشئ قوائم ثابتة في تعبير واحد نظيف."
5+
explanation: "تُنشئ List.of() قائمةً ثابتةً حقيقيةً دون تغليف أو نسخ دفاعية. وهي لا تقبل القيم الفارغة وهي ثابتة هيكلياً. كانت الطريقة القديمة تتطلب ثلاثة استدعاءات متداخلة."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "استدعاء واحد"
9+
desc: "استبدل ثلاثة استدعاءات متداخلة بدالة مصنع واحدة."
10+
- icon: "🔒"
11+
title: "ثابتة حقاً"
12+
desc: "ليست مجرد غلاف — القائمة نفسها ثابتة."
13+
- icon: "🛡️"
14+
title: "آمنة من القيم الفارغة"
15+
desc: "ترفض عناصر null وقت الإنشاء وتفشل مبكراً."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "إنشاء خرائط ثابتة"
2+
oldApproach: "نمط بناء الخريطة"
3+
modernApproach: "Map.of()"
4+
summary: "أنشئ خرائط ثابتة مضمّنةً دون مُنشئ."
5+
explanation: "تقبل Map.of() أزواجاً من المفاتيح والقيم مضمّنةً وتُرجع خريطةً ثابتة. للحصول على أكثر من 10 إدخالات، استخدم Map.ofEntries() مع أزواج Map.entry()."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "إنشاء مضمّن"
9+
desc: "لا حاجة لخريطة مؤقتة قابلة للتعديل."
10+
- icon: "🔒"
11+
title: "نتيجة ثابتة"
12+
desc: "لا يمكن تعديل الخريطة بعد إنشائها."
13+
- icon: "🚫"
14+
title: "لا مفاتيح/قيم فارغة"
15+
desc: "تُرفض الإدخالات الفارغة فوراً."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "إنشاء مجموعات ثابتة"
2+
oldApproach: "تغليف مطوّل"
3+
modernApproach: "Set.of()"
4+
summary: "أنشئ مجموعات ثابتة باستدعاء مصنع واحد."
5+
explanation: "تُنشئ Set.of() مجموعةً ثابتةً حقيقيةً ترفض القيم الفارغة والعناصر المكررة وقت الإنشاء. لا مزيد من تغليف المجموعات القابلة للتعديل."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "موجز"
9+
desc: "سطر واحد بدلاً من ثلاثة استدعاءات متداخلة."
10+
- icon: "🚫"
11+
title: "يكشف التكرار"
12+
desc: "يُطلق استثناءً إذا مررت عناصر مكررة عن طريق الخطأ."
13+
- icon: "🔒"
14+
title: "ثابتة"
15+
desc: "لا إضافة أو حذف ممكن بعد الإنشاء."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "دالة مصنع Map.entry()"
2+
oldApproach: "SimpleEntry"
3+
modernApproach: "Map.entry()"
4+
summary: "أنشئ إدخالات الخريطة بدالة مصنع نظيفة."
5+
explanation: "تستبدل Map.entry() مُنشئ AbstractMap.SimpleEntry المطوّل. وهي تُرجع إدخالاً ثابتاً مما يجعلها مثاليةً مع Map.ofEntries() وعمليات Stream."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "موجز"
9+
desc: "سطر واحد بدلاً من ثلاثة بنيّة أوضح."
10+
- icon: "🔒"
11+
title: "ثابت"
12+
desc: "لا يمكن تعديل الإدخال المُرجَع."
13+
- icon: "🧩"
14+
title: "قابل للتركيب"
15+
desc: "يعمل بشكل مثالي مع Map.ofEntries() للخرائط الكبيرة."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "التكرار العكسي على القوائم"
2+
oldApproach: "ListIterator يدوي"
3+
modernApproach: "reversed()"
4+
summary: "كرّر على قائمة بترتيب عكسي باستخدام حلقة for-each نظيفة."
5+
explanation: "تُرجع الدالة reversed() من SequencedCollection عرضاً عكسياً للقائمة. هذا العرض مدعوم بالقائمة الأصلية دون نسخ. تجعل صيغة حلقة for المحسّنة التكرار العكسي بنفس سهولة التكرار الأمامي."
6+
whyModernWins:
7+
- icon: "📖"
8+
title: "بنية طبيعية"
9+
desc: "حلقة for المحسّنة بدلاً من ListIterator المطوّل."
10+
- icon: ""
11+
title: "لا نسخ"
12+
desc: "reversed() تُرجع عرضاً — لا تكلفة أداء."
13+
- icon: "🧩"
14+
title: "واجهة برمجية موحّدة"
15+
desc: "تعمل على List و Deque و SortedSet بشكل موحّد."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 21 LTS (سبتمبر 2023)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "المجموعات المتسلسلة"
2+
oldApproach: "حساب الفهارس"
3+
modernApproach: "getFirst/getLast"
4+
summary: "الوصول إلى العناصر الأولى والأخيرة والعروض العكسية بدوال API نظيفة."
5+
explanation: "تضيف SequencedCollection الدوالَ getFirst() و getLast() و reversed() و addFirst() و addLast() إلى List و Deque و SortedSet و LinkedHashSet. لا مزيد من حساب size-1 أو التكرار العكسي اليدوي."
6+
whyModernWins:
7+
- icon: "📖"
8+
title: "موثّق ذاتياً"
9+
desc: "getLast() أوضح من get(size()-1)."
10+
- icon: "🔄"
11+
title: "عرض عكسي"
12+
desc: "reversed() تُعطي عرضاً — لا نسخ مطلوب."
13+
- icon: "🧩"
14+
title: "واجهة برمجية موحّدة"
15+
desc: "تعمل بنفس الطريقة على List و Deque و SortedSet."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 21 LTS (سبتمبر 2023)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "تحويل Stream إلى مصفوفة محدّدة النوع"
2+
oldApproach: "نسخ المصفوفة يدوياً"
3+
modernApproach: "toArray(generator)"
4+
summary: "حوّل Stream إلى مصفوفة محدّدة النوع باستخدام مرجع دالة."
5+
explanation: "تُنشئ الدالة toArray(IntFunction) مصفوفةً محدّدة النوع من Stream. يُخبر المولّد (String[]::new) التدفقَ بنوع المصفوفة المراد إنشاؤها."
6+
whyModernWins:
7+
- icon: "🎯"
8+
title: "آمن من حيث النوع"
9+
desc: "لا تحويل لـ Object[] — نوع المصفوفة صحيح."
10+
- icon: "🔗"
11+
title: "قابل للتسلسل"
12+
desc: "يعمل في نهاية أي خط معالجة Stream."
13+
- icon: "📏"
14+
title: "موجز"
15+
desc: "تعبير واحد يستبدل الحلقة اليدوية."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 8 (مارس 2014)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "مُجمِّعات غير قابلة للتعديل"
2+
oldApproach: "collectingAndThen"
3+
modernApproach: "stream.toList()"
4+
summary: "جمّع مباشرةً إلى قائمة غير قابلة للتعديل باستخدام stream.toList()."
5+
explanation: "أضاف Java 10 الدوالَ toUnmodifiableList() و toUnmodifiableSet() و toUnmodifiableMap() لاستبدال غلاف collectingAndThen المطوّل. بالنسبة للقوائم تحديداً، توفر stream.toList() في Java 16 بديلاً أبسط — دون استدعاء collect() على الإطلاق. استخدم toUnmodifiableSet() و toUnmodifiableMap() لأنواع المجموعات الأخرى."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "الأقصر على الإطلاق"
9+
desc: "stream.toList() لا تحتاج استدعاء collect() أو استيراد Collectors."
10+
- icon: "🔒"
11+
title: "ثابتة"
12+
desc: "لا يمكن تعديل النتيجة — لا طفرات عرضية."
13+
- icon: "📖"
14+
title: "مقروءة"
15+
desc: "تُقرأ بشكل طبيعي كخطوة نهائية في أي خط Stream."
16+
support:
17+
description: "متاح على نطاق واسع منذ JDK 16 (مارس 2021)"

0 commit comments

Comments
 (0)