Skip to content

Commit dc4738e

Browse files
authored
Merge pull request #127 from rokon12/bengali-translations
feat: Add Bengali YAML translations
2 parents 875d51e + 99005bb commit dc4738e

File tree

114 files changed

+2113
-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.

114 files changed

+2113
-0
lines changed

html-generators/locales.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ ar=🇸🇦 العربية
88
fr=🇫🇷 Français
99
ja=🇯🇵 日本語
1010
ko=🇰🇷 한국어
11+
bn=🇧🇩 বাংলা
1112
it=🇮🇹 Italiano
1213
pl=🇵🇱 Polski
1314
tr=🇹🇷 Türkçe
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: Collectors.teeing()
3+
oldApproach: দুটি ধাপে
4+
modernApproach: teeing()
5+
summary: একবার স্ট্রিম ট্রাভার্স করেই দুটি আলাদা এগ্রিগেশন (সমষ্টি) বের করুন।
6+
explanation: Collectors.teeing() স্ট্রিমের প্রতিটি উপাদানকে দুটি আলাদা ডাউনস্ট্রিম কালেক্টরে পাঠায় এবং তাদের ফলাফলগুলোকে মার্জ বা একত্রিত করে। এর ফলে একই ডেটা দুইবার স্ট্রিম করতে হয় না এবং মিউটেবল (পরিবর্তনশীল) অ্যাকুমুলেটর ব্যবহারের প্রয়োজন পড়ে না।
7+
whyModernWins:
8+
- icon: ""
9+
title: সিঙ্গেল পাস
10+
desc: দুইবারের বদলে স্ট্রিমটি মাত্র একবারই প্রসেস করা যায়।
11+
- icon: "🧩"
12+
title: কম্পোজেবল
13+
desc: যেকোনো দুটি কালেক্টরকে একটি মার্জার ফাংশন দিয়ে সহজেই যুক্ত করা যায়।
14+
- icon: "🔒"
15+
title: ইমিউটেবল ফলাফল
16+
desc: সরাসরি কোনো রেকর্ড (record) বা ভ্যালু অবজেক্টে মার্জ করা যায়।
17+
support:
18+
description: JDK 12 (মার্চ 2019) থেকে ব্যাপকভাবে উপলব্ধ
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: কালেকশনকে ইমিউটেবল (অপরিবর্তনীয়) ভাবে কপি করা
3+
oldApproach: ম্যানুয়াল কপি + র‍্যাপ
4+
modernApproach: List.copyOf()
5+
summary: যেকোনো কালেকশনের একটি ইমিউটেবল কপি এক কল (call)-এই তৈরি করুন।
6+
explanation: List.copyOf(), Set.copyOf(), এবং Map.copyOf() বিদ্যমান কালেকশনগুলোর ইমিউটেবল স্ন্যাপশট তৈরি করে। যদি সোর্স কালেকশনটি ইতিমধ্যেই ইমিউটেবল হয়, তবে কোনো নতুন কপি তৈরি করা হয় না।
7+
whyModernWins:
8+
- icon: ""
9+
title: স্মার্ট কপি
10+
desc: সোর্স কালেকশনটি ইমিউটেবল হলে, নতুন করে কপি করার প্রয়োজন হয় না।
11+
- icon: "📏"
12+
title: এক কলে কাজ শেষ
13+
desc: ম্যানুয়াল ArrayList তৈরি বা র‍্যাপ করার দরকার নেই।
14+
- icon: "🛡️"
15+
title: ডিফেন্সিভ কপি
16+
desc: মূল কালেকশনে পরিবর্তন আনলেও কপি করা কালেকশনে তার কোনো প্রভাব পড়ে না।
17+
support:
18+
description: JDK 10 (মার্চ 2018) থেকে ব্যাপকভাবে উপলব্ধ
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: ইমিউটেবল (Immutable) লিস্ট তৈরি
3+
oldApproach: ভার্বোস র‍্যাপিং
4+
modernApproach: List.of()
5+
summary: একটি পরিষ্কার এক্সপ্রেশন ব্যবহার করে ইমিউটেবল লিস্ট তৈরি করুন।
6+
explanation: List.of() একটি সত্যিকারের ইমিউটেবল লিস্ট তৈরি করে - এখানে কোনো র‍্যাপিং বা ডিফেন্সিভ কপির প্রয়োজন হয় না। এটি null-হোস্টাইল (অর্থাৎ null এলিমেন্ট গ্রহণ করে না) এবং কাঠামোগতভাবেও ইমিউটেবল। পুরোনো পদ্ধতিতে তিনটি নেস্টেড কল ব্যবহার করতে হতো।
7+
whyModernWins:
8+
- icon: "📏"
9+
title: এক কলেই
10+
desc: তিনটি নেস্টেড কলকে একটি মাত্র ফ্যাক্টরি মেথড দিয়ে প্রতিস্থাপন করা যায়।
11+
- icon: "🔒"
12+
title: সত্যিকারের ইমিউটেবল
13+
desc: এটি কেবল একটি র‍্যাপার নয় – লিস্টটি নিজেই ইমিউটেবল।
14+
- icon: "🛡️"
15+
title: null-সেফ
16+
desc: তৈরির সময়ই null এলিমেন্ট থাকলে তা প্রত্যাখ্যান করে, ফলে দ্রুত ত্রুটি ধরা পড়ে (failing fast)।
17+
support:
18+
description: JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: ইমিউটেবল (Immutable) ম্যাপ তৈরি
3+
oldApproach: ম্যাপ বিল্ডার প্যাটার্ন
4+
modernApproach: Map.of()
5+
summary: কোনো বিল্ডার ছাড়াই ইনলাইন (inline) ম্যাপ তৈরি করুন যা ইমিউটেবল।
6+
explanation: Map.of() সরাসরি কী-ভ্যালু পেয়ার (key-value pairs) গ্রহণ করে একটি ইমিউটেবল ম্যাপ তৈরি করে। যদি 10টির বেশি এন্ট্রি থাকে, তাহলে Map.entry() পেয়ার সহ Map.ofEntries() ব্যবহার করা উচিত।
7+
whyModernWins:
8+
- icon: "📏"
9+
title: ইনলাইন তৈরি
10+
desc: কোনো টেম্পোরারি মিউটেবল ম্যাপের প্রয়োজন নেই।
11+
- icon: "🔒"
12+
title: ইমিউটেবল ফলাফল
13+
desc: ম্যাপ তৈরির পর আর পরিবর্তন করা যাবে না।
14+
- icon: "🚫"
15+
title: null কী/ভ্যালু নেই
16+
desc: null এন্ট্রি সঙ্গে সঙ্গেই প্রত্যাখ্যান করা হয়।
17+
support:
18+
description: JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: ইমিউটেবল (Immutable) সেট তৈরি
3+
oldApproach: ভার্বোস র‍্যাপিং
4+
modernApproach: Set.of()
5+
summary: একটি সিঙ্গেল ফ্যাক্টরি কল (factory call) ব্যবহার করে ইমিউটেবল সেট তৈরি করুন।
6+
explanation: Set.of() একটি সত্যিকারের ইমিউটেবল সেট তৈরি করে, যা সেট তৈরির সময়ই null এবং ডুপ্লিকেট এলিমেন্ট (duplicate elements) গ্রহণ করে না। মিউটেবল সেটকে আর র‍্যাপ করার প্রয়োজন নেই।
7+
whyModernWins:
8+
- icon: "📏"
9+
title: সুসংক্ষিপ্ত
10+
desc: তিনটি নেস্টেড কলের পরিবর্তে একটি মাত্র লাইন ব্যবহার করুন।
11+
- icon: "🚫"
12+
title: ডুপ্লিকেট সনাক্ত করে
13+
desc: ভুলবশত ডুপ্লিকেট এলিমেন্ট দিলে এরর (error) দেবে।
14+
- icon: "🔒"
15+
title: ইমিউটেবল
16+
desc: সেট তৈরির পর আর যোগ বা অপসারণ (add/remove) করা সম্ভব নয়।
17+
support:
18+
description: JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: Map.entry() ফ্যাক্টরি
3+
oldApproach: SimpleEntry
4+
modernApproach: Map.entry()
5+
summary: একটি পরিষ্কার ফ্যাক্টরি মেথড ব্যবহার করে ম্যাপ এন্ট্রি (map entries) তৈরি করুন।
6+
explanation: Map.entry() মেথডটি verbose AbstractMap.SimpleEntry কনস্ট্রাক্টরের (constructor) বিকল্প হিসাবে কাজ করে। এটি একটি ইমিউটেবল (immutable) এন্ট্রি রিটার্ন করে, যা Map.ofEntries() এবং স্ট্রিম অপারেশনগুলির জন্য খুবই উপযোগী।
7+
whyModernWins:
8+
- icon: "📏"
9+
title: সুসংক্ষিপ্ত
10+
desc: তিনটি লাইনের পরিবর্তে একটি মাত্র লাইন, যা এর উদ্দেশ্যকে আরও পরিষ্কার করে।
11+
- icon: "🔒"
12+
title: ইমিউটেবল
13+
desc: তৈরি করা এন্ট্রিটি পরিবর্তন করা যাবে না।
14+
- icon: "🧩"
15+
title: কম্পোজেবল
16+
desc: বড় ম্যাপ তৈরির জন্য Map.ofEntries() এর সাথে এটি দারুণভাবে কাজ করে।
17+
support:
18+
description: JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: লিস্টের আইটারেশন উল্টো দিক থেকে (Reverse List Iteration)
3+
oldApproach: ম্যানুয়াল ListIterator
4+
modernApproach: reversed()
5+
summary: একটি পরিষ্কার for-each লুপ ব্যবহার করে লিস্টের উপাদানগুলোকে উল্টো দিক থেকে আইটারেট করুন।
6+
explanation: SequencedCollection-এর reversed() মেথডটি লিস্টের একটি রিভার্স-অর্ডারড ভিউ (reverse-ordered view) প্রদান করে। এই ভিউটি মূল লিস্টের ওপর ভিত্তি করে তৈরি হয়, তাই কোনো কপি করা হয় না। উন্নত for লুপ সিনট্যাক্স (enhanced for loop syntax) ব্যবহার করে রিভার্স আইটারেশনকে ফরোয়ার্ড আইটারেশনের মতোই পঠনযোগ্য করে তোলে।
7+
whyModernWins:
8+
- icon: "📖"
9+
title: স্বাভাবিক সিনট্যাক্স
10+
desc: verbose ListIterator-এর পরিবর্তে সহজবোধ্য for-each লুপ ব্যবহার করা হয়।
11+
- icon: ""
12+
title: কোনো কপি হয় না
13+
desc: reversed() একটি ভিউ রিটার্ন করে, তাই পারফরম্যান্সের ওপর কোনো অতিরিক্ত চাপ (overhead) পড়ে না।
14+
- icon: "🧩"
15+
title: সামঞ্জস্যপূর্ণ API
16+
desc: List, Deque, এবং SortedSet-এর মতো কালেকশনগুলোতে একইভাবে কাজ করে।
17+
support:
18+
description: JDK 21 LTS (সেপ্টেম্বর 2023) থেকে ব্যাপকভাবে উপলব্ধ
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: সিকোয়েন্সড কালেকশন (Sequenced Collections)
3+
oldApproach: ইনডেক্স অ্যারিথমেটিক (Index Arithmetic)
4+
modernApproach: getFirst()/getLast()
5+
summary: পরিষ্কার API মেথড ব্যবহার করে লিস্টের প্রথম/শেষ এলিমেন্ট অ্যাক্সেস করা এবং রিভার্সড ভিউ (reversed view) তৈরি করা।
6+
explanation: SequencedCollection, List, Deque, SortedSet, এবং LinkedHashSet-এ getFirst(), getLast(), reversed(), addFirst(), addLast() মেথডগুলো যোগ করে। এর ফলে আর size-1 অ্যারিথমেটিক বা ম্যানুয়াল রিভার্স আইটারেশনের প্রয়োজন হয় না।
7+
whyModernWins:
8+
- icon: "📖"
9+
title: স্ব-ডকুমেন্টিং
10+
desc: getLast() মেথডটি get(size()-1) এর চেয়ে অনেক বেশি স্পষ্ট এবং পঠনযোগ্য।
11+
- icon: "🔄"
12+
title: রিভার্সড ভিউ
13+
desc: reversed() মেথড একটি ভিউ (view) রিটার্ন করে, তাই কোনো কপি করার প্রয়োজন হয় না।
14+
- icon: "🧩"
15+
title: ইউনিফর্ম API
16+
desc: List, Deque, এবং SortedSet-এর মতো কালেকশনগুলোতে একইভাবে কাজ করে।
17+
support:
18+
description: JDK 21 LTS (সেপ্টেম্বর 2023) থেকে ব্যাপকভাবে উপলব্ধ
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: টাইপড স্ট্রিমকে অ্যারেতে রূপান্তর (Typed Stream toArray)
3+
oldApproach: ম্যানুয়াল অ্যারে কপি
4+
modernApproach: toArray(generator)
5+
summary: একটি মেথড রেফারেন্স (method reference) ব্যবহার করে স্ট্রিমকে টাইপড অ্যারেতে রূপান্তর করুন।
6+
explanation: toArray(IntFunction) মেথডটি একটি স্ট্রিম থেকে সঠিক টাইপের অ্যারে তৈরি করে। এখানে জেনারেটর (যেমন String[]::new) স্ট্রিমকে বলে দেয় কোন ধরনের অ্যারে তৈরি করতে হবে।
7+
whyModernWins:
8+
- icon: "🎯"
9+
title: টাইপ-সেফ (Type-safe)
10+
desc: কোনো Object[] কাস্ট করার প্রয়োজন হয় না – অ্যারের টাইপ সঠিক থাকে।
11+
- icon: "🔗"
12+
title: চেইনেবল (Chainable)
13+
desc: যেকোনো স্ট্রিম পাইপলাইনের শেষে এটি ব্যবহার করা যায়।
14+
- icon: "📏"
15+
title: সুসংক্ষিপ্ত
16+
desc: একটি এক্সপ্রেশন ব্যবহার করেই ম্যানুয়াল লুপের কাজ সম্পন্ন হয়।
17+
support:
18+
description: JDK 8 (মার্চ 2014) থেকে ব্যাপকভাবে উপলব্ধ

0 commit comments

Comments
 (0)