diff --git a/lessons/al/chapter_0.yaml b/lessons/al/chapter_0.yaml
new file mode 100644
index 000000000..b610195c6
--- /dev/null
+++ b/lessons/al/chapter_0.yaml
@@ -0,0 +1,39 @@
+- title: >-
+ Hello World!
+ code: >-
+ https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20main()%20%7B%0A%20%20%20%20println!(%22Ckemi!%2C%20%F0%9F%A6%80%22)%3B%0A%7D%0A
+ content_markdown: |
+
+
+ **Happy 3 Year Anniversary 🎉**
+
+ Welcome to the *Tour of Rust*. This is meant to be a step by step guide through the features of the Rust programming language. Rust is often considered a language with a steep learning curve, but I hope I can convince you there's a lot to explore before we even get to complex parts.
+
+ You can also find this guide in these languages:
+
+ * [Deutsch](00_de.html)
+ * [Español](00_es.html)
+ * [Français](00_fr.html)
+ * [Interlingue](00_ie.html)
+ * [Magyar](00_hu.html)
+ * [Polski](00_pl.html)
+ * [Português Brasileiro](00_pt-br.html)
+ * [Română](00_ro.html)
+ * [Русский](00_ru.html)
+ * [简体中文](00_zh-cn.html)
+ * [繁體中文](00_zh-tw.html)
+ * [日本語](00_ja.html)
+ * [한국어](00_ko.html)
+ * [Türkçe](00_tr.html)
+ * [Ελληνικά](00_gr.html)
+ * [Українська](00_ua.html)
+ * [ภาษาไทย](00_th.html)
+ * [Italian](00_it.html)
+ * [Tiếng Việt](00_vi.html)
+ * [العربية](00_ar.html)
+
+ If you have suggestions on content or would like to contribute to translations, check out Tour of Rust's [github repository](https://github.com/richardanaya/tour_of_rust).
+
+ You can navigate through the tour with keyboard ⬅️ and ➡️.
+
+ In this classic example we show Rust's support for Unicode strings.
diff --git a/lessons/al/chapter_1.yaml b/lessons/al/chapter_1.yaml
new file mode 100644
index 000000000..b41fbd284
--- /dev/null
+++ b/lessons/al/chapter_1.yaml
@@ -0,0 +1,233 @@
+- title: Kapitulli 1 - Bazat
+ content_markdown: >
+ Në këtë kapitull të parë ne do të eksplorojmë bazat
+ me funksionet, variablat dhe llojet më primitive. Gëzohemi që ju kemi
+ ne bord!
+
+
+ Gjithashtu! Në rast se po pyesni kush eshte kjo gaforre e adhurueshme qe
+ po te flet, unë jam **Ferris**,
+ maskota jozyrtare për gjuhën e programimit Rust. Gëzohem që u njohëm.
+
+
+ Pasi të njiheni me Rust, mund ta quani veten **Rustacean**. Kjo është
+ si e quajnë veten njerëzit që përdorin, kontribuojnë ose janë të interesuar për Rust.
+- title: Sheshi i Lojërave Rust
+ code: >-
+ https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+content_markdown: >
+ Ky tur përdor një mjet kodimi ndërveprues nga [Rust
+ Playground](https://play.rust-lang.org).
+
+
+ Është një mënyrë e shkëlqyer për të luajtur me Rust dhe për t'u treguar të tjerëve kreativitetin tuaj
+ dhe te maresh pjese ne sfida!
+- title: Variablat
+ code: >-
+ https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+ content_markdown: >
+ Variablat deklarohen duke përdorur fjalën kyçe **let**.
+
+
+ Kur caktoni një vlerë, Rust do të jetë në gjendje të konkludojë llojin e variabiles tuaj
+ 99% te rasteve.
+
+ Nëse nuk mundet, mund të shtoni llojin në deklaratën tuaj të variabiles.
+
+
+ Vini re se si mund t'i caktojmë të njëjtit emër variabël shumë herë. Kjo është
+ quhet variabël
+
+ hijezimi dhe lloji mund të ndryshohet për referenca të mëvonshme për këtë
+ emer.
+
+
+ Emrat e variabilave jane sa here ne `snake_case`.
+- title: Ndryshimi i variabilava
+ code: >-
+ https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+ content_markdown: >
+ Rust kujdeset shumë për variablat që mund të modifikohen. vlerat
+
+ ndahen në dy lloje:
+
+
+ * **mutable/e ndryshueshme** - kompajleri do të lejojë që variabila të shkruhet dhe
+ te lexohet.
+
+ * **immutable/e pa nryshueshme** - kompajleri do të lejojë vetëm leximin e ndryshores
+
+
+ Vlerat e ndryshueshme shënohen me një fjalë kyçe **mut**.
+
+
+ Ne do të kemi më shumë për të thënë më vonë për këtë koncept, por tani për tani vetëm mbani një sy
+ jashtë për këtë fjalë kyçe.
+- title: Tipet Bazike
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+
+ content_markdown: >
+ Rust ka një sërë llojesh të njohura:
+
+
+ * booleans - `bool` për paraqitjen e vërtetë/false
+
+ * numra të plotë të panënshkruar - `u8` `u16` `u32` `u64` `u128` për përfaqësim
+ numra të plotë jonegativë
+
+ * numra të plotë të nënshkruar - `i8` `i16` `i32` `i64` `i128` për përfaqësimin e numrave të plotë
+
+ * Numrat e plotë të madhësisë së treguesit - `usize` `isize` për paraqitjen e indekseve
+
+ dhe madhësive të gjërave në kujtesë
+
+ * pikë lundruese - `f32` `f64`
+
+ * karaktere - `char` për përfaqësimin e një karakteri të vetëm Unicode
+
+ * tuple - `(vlera, vlera, ...)` për kalimin e sekuencave fikse të vlerave në
+ rafte
+
+ * vargje - `[vlera, vlera, ...]` një koleksion elementësh të ngjashëm me fikse
+ gjatësia e njohur në kohën e përpilimit
+
+ * slices - një koleksion elementësh të ngjashëm me gjatësi të njohur në kohën e ekzekutimit
+
+ * `str` (prerja e vargut) - tekst me një gjatësi të njohur në kohën e ekzekutimit
+
+
+ Teksti mund të jetë më kompleks se sa jeni mësuar në gjuhë të tjera;
+
+ meqenëse Rust është një gjuhë programimi e sistemit, ajo kujdeset për kujtesën
+
+ çështje me të cilat mund të mos jeni mësuar. Ne do të hyjmë në këtë në detaje më vonë.
+
+
+ Llojet numerike mund të specifikohen në mënyrë eksplicite duke i bashkangjitur tipit në fund
+ të numrit (p.sh. "13u32", "2u8").
+- title: Konvertimi i tipit bazë
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+ content_markdown: >
+ Ndryshku kërkon qartësi kur bëhet fjalë për llojet numerike. Një nuk mund
+
+ përdorni një `u8` për një `u32` rastësisht pa
+
+ gabim.
+
+
+ Fatmirësisht Rust i bën konvertimet e tipit numerik shumë të lehtë me fjalë kyçen
+ **as**.
+- title: Konstantet
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+ content_markdown: >
+ Konstantet na lejojnë të specifikojmë një vlerë të përbashkët që përdoret gjatë gjithë kohës
+
+ nd kodin tone shumë herë me efikasitet. Në vend të kopjimit të vlerave si variablat
+
+ aty ku përdoren, konstantet zëvendësojnë drejtpërdrejt identifikuesin e tekstit ku
+ ata
+
+ përdoren me vlerën e tyre në kohën e përpilimit.
+
+
+ Ndryshe nga variablat, konstantet duhet të kenë gjithmonë lloje eksplicite.
+
+
+ Emrat konstant janë gjithmonë ne `SCREAMING_SNAKE_CASE`.
+- title: Vargjet
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+ content_markdown: >
+ Një *array/varg* është një **përmbledhje me gjatësi fikse** të elementeve të të dhënave të gjitha të te njëjta
+ lloji.
+
+
+ Lloji i të dhënave për një *array* është `[T;N]` ku T është lloji i elementeve dhe N
+ është gjatësia fikse e njohur në kohën e përpilimit.
+
+
+ Elementet individuale mund të merren me operatorin `[x]` ku *x* është a
+ indeksi *usize* (duke filluar nga 0) i elementit që dëshironi.
+
+
+ Koleksionet me gjatësi dinamike, të quajtura shpesh vargje dinamike ose të ndryshueshme, janë
+ prezantuar në një kapitull të mëvonshëm rreth **Vektorëve**.
+- title: Funksionet
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+ content_markdown: >
+ Një funksion ka zero ose më shumë parametra.
+
+
+ Në këtë shembull, funksioni *add* merr dy argumente të tipit `i32`
+ (numër i plotë i nënshkruar me gjatësi 32-bit).
+
+
+ Nëse thjesht dëshironi të ktheni një shprehje, mund të hiqni fjalën kyçe "kthim".
+ dhe pikëpresjes në fund, siç bëmë në funksionin *zbris*.
+
+
+ Emrat e funksioneve janë gjithmonë në `snake_case`.
+
+
+ Këshillë: nëse përcaktoni një funksion, të dhënat që ai pranon quhen parametra.
+ Nëse e thërrisni atë funksion dhe i kaloni të dhëna, atëherë ai quhet argumente.
+- title: Vlerat e shumëfishta të kthimit
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+ content_markdown: >
+ Funksionet mund të kthejnë vlera të shumta duke kthyer një **tuple**
+
+ të vlerave.
+
+
+ Elementet e dyfishta mund të referohen me numrin e tyre të indeksit.
+
+
+ Rust mbështet lloje të ndryshme destrukturimi që do t'i shohim në shumë forma,
+ duke lejuar
+
+ ne të nxjerrim nën-pjesë të strukturave të të dhënave në mënyra ergonomike. Të jesh në
+ kujdes!
+- title: Kthe asgje
+ content_markdown: >
+ Nëse asnjë lloj kthimi nuk është specifikuar për një funksion, ai kthen një tuple bosh,
+ i njohur gjithashtu si një *njësi*.
+
+
+ Një tuple bosh përfaqësohet nga `()`.
+
+
+ Përdorimi i `()` është i pazakontë, por do të shfaqet aq shpesh sa është mirë të dihet
+ cfare po ndodh.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021
+- title: Chapter 1 - Conclusion
+ content_markdown: >
+ Punë e bukur deri tani! Bazat e Rust nuk janë aq të këqija, apo jo? ne jemi
+
+ duke parë se si mendon përpiluesi Rust. Si programim sistemi
+ gjuhe
+
+ kujdeset shumë për madhësinë e vlerave në kujtesë, nëse gjërat mund të jenë
+ modifikuar apo jo,
+
+ dhe sigurohuni që matematika juaj të jetë ajo që dëshironi të jetë. Në vazhdim do të jemi
+ duke parë disa miq të vjetër:
+
+ "if" testet dhe "for".
+
+
+ Më shumë burime:
+
+
+ * [Youtube: Rust Cast - A deeper dive on Rust's primitive number
+ types](https://www.youtube.com/watch?v=n5TRBkbystY)
+
+ * [Website: Rust Book 2018 - A deeper description on basic data
+ types](https://doc.rust-lang.org/1.30.0/book/2018-edition/ch03-02-data-types.html)
+
+ * [Website: Rust Cheat Sheet - Data Types](https://cheats.rs/#basic-types)
diff --git a/lessons/al/chapter_2.yaml b/lessons/al/chapter_2.yaml
new file mode 100644
index 000000000..175e6a676
--- /dev/null
+++ b/lessons/al/chapter_2.yaml
@@ -0,0 +1,134 @@
+- title: Kapitulli 2 - Rrjedha e kontrollit bazë
+ content_markdown: >
+ Në këtë kapitull le të flasim për metodat bazë të kontrollit të rrjedhës në Rust.
+
+ Nëse jeni të njohur me gjuhët e bazuara në C, do të ndiheni si në shtëpi dhe
+ ndoshta
+
+ shijoni një ose dy surpriza.
+- title: if/else
+ content_markdown: >
+ Degëzimi i kodit në Rust nuk është befasues.
+
+
+ Kushtet nuk kanë kllapa! A kemi pasur vërtet nevojë për to? Logjika jonë
+ tani duket bukur dhe e pastër.
+
+
+ Të gjithë operatorët tuaj të zakonshëm relacionalë dhe logjikë ende funksionojnë: `==`, `!=`, `<`,
+ `>`, `<=`, `>=`, `!`, `||`, `&&`.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn%20main()%20%7B%0A%20%20%20%20let%20x%20%3D%2042%3B%0A%20%20%20%20if%20x%20%3C%2042%20%7B%0A%20%20%20%20%20%20%20%20println!(%22M%C3%AB%20pak%20se%2042%22)%3B%0A%20%20%20%20%7D%20else%20if%20x%20%3D%3D%2042%20%7B%0A%20%20%20%20%20%20%20%20println!(%22%C3%8Bsht%C3%AB%2042%22)%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20println!(%22M%C3%AB%20shum%C3%AB%20se%2042%22)%3B%0A%20%20%20%20%7D%0A%7D)
+- title: loop/lak
+ content_markdown: |
+ Keni nevojë për një lak të pafund?
+
+ Rust e bën të lehtë.
+
+ 'break' do t'i shpëtojë një lak kur të jeni gati.
+
+ "loop" ka një sekret për të cilin do të flasim së shpejti.
+ code: >-
+ttps://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn%20main()%20%7B%0A%20%20%20%20let%20mut%20x%20%3D%200%3B%0A%20%20%20%20loop%20%7B%0A%20%20%20%20%20%20%20%20x%20%2B%3D%201%3B%0A%20%20%20%20%20%20%20%20if%20x%20%3D%3D%2042%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20println!(%22%7B%7D%22%2C%20x)%3B%0A%7D
+- title: while
+ content_markdown: |
+ "while" ju lejon të shtoni me lehtësi një kusht në një lak.
+
+ Nëse kushti vlerësohet në "false", cikli do të dalë.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn%20main()%20%7B%0A%20%20%20%20let%20mut%20x%20%3D%200%3B%0A%20%20%20%20while%20x%20!%3D%2042%20%7B%0A%20%20%20%20%20%20%20%20x%20%2B%3D%201%3B%0A%20%20%20%20%7D%0A%20%20%20%20println!(%22x%20is%20%7B%7D%22%2C%20x)%3B%0A%7D)
+- title: for
+ content_markdown: >
+ Cikli 'for' i Rust është një përmirësim i fuqishëm. Ajo
+
+ përsëritet mbi vlera nga çdo shprehje që vlerësohet në një përsëritës.
+ Çfarë është
+
+ një përsëritës? Një përsëritës është një objekt që mund të bëni pyetjen "Çfarë është
+
+
+ artikulli tjetër qe keni?" derisa të mos ketë më artikuj.
+
+
+ Ne do ta shqyrtojmë këtë më shumë në një kapitull të ardhshëm. Ndërkohë, njihni Rust
+ bën
+
+ te lehtë të krijohen përsëritës që gjenerojnë një sekuencë numrash të plotë.
+
+
+ Operatori `..` krijon një përsëritës që gjeneron numra nga fillimi
+ numri deri në
+
+ por duke mos përfshirë një numër fundor.
+
+
+ Operatori `..=` krijon një përsëritës që gjeneron numra nga fillimi
+ numri deri në
+
+ dhe duke përfshirë një numër fundor.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn%20main()%20%7B%0A%20%20%20%20for%20x%20in%200..5%20%7B%0A%20%20%20%20%20%20%20%20println!(%22%7B%7D%22%2C%20x)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20for%20x%20in%200..%3D5%20%7B%0A%20%20%20%20%20%20%20%20println!(%22%7B%7D%22%2C%20x)%3B%0A%20%20%20%20%7D%0A%7D)
+- title: match
+ content_markdown: >
+ Të mungon deklarata switch? Rust ka një fjalë kyçe tepër të dobishme
+
+ për përputhjen e të gjitha kushteve të mundshme të një vlere dhe ekzekutimin e një shtegu kodi nëse
+
+
+ ndeshja është e vërtetë. Le të shohim se si funksionon kjo për numrat. Do të kemi më shumë per te
+ thene
+
+ në kapitujt e ardhshëm mbi përputhjen e modelit të të dhënave më komplekse. Ju premtoj
+ do
+
+ ia vlej pritja.
+
+
+ "match" është shteruese, kështu që të gjitha rastet
+
+ duhen trajtuar.
+
+
+ Përputhja e kombinuar me destrukturimin është padyshim një nga
+
+ modelet më të zakonshme që do të shihni në të gjithë Rust.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn%20main()%20%7B%0A%20%20%20%20let%20x%20%3D%2042%3B%0A%0A%20%20%20%20match%20x%20%7B%0A%20%20%20%20%20%20%20%200%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20println!(%22gjeta%20zero%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20mund%20t%C3%AB%20p%C3%ABrputhet%20me%20shum%C3%AB%20vlera%0A%20%20%20%20%20%20%20%201%20%7C%202%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20println!(%22gjeta%201%20ose%202!%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20mund%20t%C3%AB%20p%C3%ABrputhet%20me%20interval%0A%20%20%20%20%20%20%20%203..%3D9%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20println!(%22gjeta%20nj%C3%AB%20num%C3%ABr%20nga%203%20deri%20n%C3%AB%209%20p%C3%ABrfshir%C3%AB%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20mund%20t%C3%AB%20lidhet%20numri%20gjetur%20me%20nj%C3%AB%20variab%C3%ABl%0A%20%20%20%20%20%20%20%20numri_gjetur%20%40%2010..%3D100%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20println!(%22gjeta%20numrin%20nga%2010%20deri%20n%C3%AB%20100!%22%2C%20numri_gjetur)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20kjo%20%C3%ABsht%C3%AB%20nje%20lidhje%20e%20p%C3%ABrgjithshme%20q%C3%AB%20duhet%20t%C3%AB%20ekzistoj%C3%AB%20n%C3%AB%20rast%20se%20t%C3%AB%20gjitha%20rastet%20nuk%20jan%C3%AB%20t%C3%AB%20mbuluara%0A%20%20%20%20%20%20%20%20_%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20println!(%22gjeta%20di%C3%A7ka%20tjet%C3%ABr!%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D)
+- title: Kthimi i nje vlere nga loop-i
+ content_markdown: |
+ `loop` mund te ndaloje (break) qe te ktheje nje vlere.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn%20main()%20%7B%0A%20%20%20%20let%20mut%20x%20%3D%200%3B%0A%20%20%20%20let%20v%20%3D%20loop%20%7B%0A%20%20%20%20%20%20%20%20x%20%2B%3D%201%3B%0A%20%20%20%20%20%20%20%20if%20x%20%3D%3D%2013%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%20%22gjeta%20numrin%2013%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20println!(%22nga%20loop%3A%20%7B%7D%22%2C%20v)%3B%0A%7D%0A)
+- title: Kthimi i vlerave nga shprehjet e bllokut
+ content_markdown: >
+ `if`, `match`, funksionet dhe blloqet e fushëveprimit kanë të gjitha një mënyrë unike
+ kthimin e vlerave në Rust.
+
+
+ Nëse deklarata e fundit në një bllok "if", "match", funksion ose fushëveprimi është një
+ shprehje pa
+
+ `;`, Rust do ta kthejë atë si vlerë nga blloku. Kjo
+
+ është një mënyrë e shkëlqyer për të krijuar logjikë koncize që kthen një vlerë që mund të vendoset
+ në
+
+ një ndryshore te re.
+
+
+ Vini re se ai gjithashtu lejon që një deklaratë "if" të funksionojë si një konciz
+ shprehje treshe.
+ code: >-
+ https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20example()%20-%3E%20i32%20%7B%0A%20%20%20%20let%20x%20%3D%2042%3B%0A%20%20%20%20%2F%2F%20Rust's%20ternary%20expression%0A%20%20%20%20let%20v%20%3D%20if%20x%20%3C%2042%20%7B%20-1%20%7D%20else%20%7B%201%20%7D%3B%0A%20%20%20%20println!(%22from%20if%3A%20%7B%7D%22%2C%20v)%3B%0A%0A%20%20%20%20let%20food%20%3D%20%22hamburger%22%3B%0A%20%20%20%20let%20result%20%3D%20match%20food%20%7B%0A%20%20%20%20%20%20%20%20%22hotdog%22%20%3D%3E%20%22is%20hotdog%22%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20notice%20the%20braces%20are%20optional%20when%20its%20just%20a%20single%20return%20expression%0A%20%20%20%20%20%20%20%20_%20%3D%3E%20%22is%20not%20hotdog%22%2C%0A%20%20%20%20%7D%3B%0A%20%20%20%20println!(%22identifying%20food%3A%20%7B%7D%22%2C%20result)%3B%0A%0A%20%20%20%20let%20v%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20This%20scope%20block%20lets%20us%20get%20a%20result%20without%20polluting%20function%20scope%0A%20%20%20%20%20%20%20%20let%20a%20%3D%201%3B%0A%20%20%20%20%20%20%20%20let%20b%20%3D%202%3B%0A%20%20%20%20%20%20%20%20a%20%2B%20b%0A%20%20%20%20%7D%3B%0A%20%20%20%20println!(%22from%20block%3A%20%7B%7D%22%2C%20v)%3B%0A%0A%20%20%20%20%2F%2F%20The%20idiomatic%20way%20to%20return%20a%20value%20in%20rust%20from%20a%20function%20at%20the%20end%0A%20%20%20%20v%20%2B%204%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22from%20function%3A%20%7B%7D%22%2C%20example())%3B%0A%7D%0A
+- title: Kapitull 2 - Konkluzion
+ content_markdown: >
+ Shpresoj se kam treguar një paraqitje të shkurtër të fuqisë së Rustit edhe në shumicën e rasteve
+
+ veçoritë themelore të gjuhës. Do të flasim për "for" dhe
+
+ 'match' edhe më në thellësi pasi fitojmë më shumë njohuri për këtë
+
+ mund të shfrytëzojnë aftësitë e tyre. Herën tjetër do të futemi në themelet e Rust
+
+
+ strukturat e data-ve.
diff --git a/lessons/al/chapter_3.yaml b/lessons/al/chapter_3.yaml
new file mode 100644
index 000000000..ee9c66dac
--- /dev/null
+++ b/lessons/al/chapter_3.yaml
@@ -0,0 +1,156 @@
+- title: Kapitulli 3 - Llojet bazë të strukturës së të dhënave/data-ve
+ content_markdown: >
+ Është koha të eksplorojmë përtej llojeve bazë! Në këtë kapitull do të shikojmë
+ më strukturat e të dhënave
+
+ me primitive në Rust, duke i kushtuar vëmendje paraqitjeve të tyre në
+ memorie. Unë mendoj
+
+ qe do të kënaqeni sa pak Rust fsheh nga ju se si funksionojnë gjërat.
+- title: Strukturat
+ content_markdown: >
+ Një "struktur" është një koleksion fushash.
+
+
+ Një *fushë* është thjesht një vlerë e të dhënave e lidhur me një strukturë të dhënash. Vlera e saj
+ mund të jetë i një lloji primitiv ose një strukturë të dhënash.
+
+
+ Përkufizimi i saj është si një plan për një përpilues se si të vendoset
+ fusha në kujtesë pranë njëra-tjetrës.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=struct%20SeaCreature%20%7B%0A%20%20%20%20%2F%2F%20String%20%C3%ABsht%C3%AB%20nj%C3%AB%20struktur%C3%AB%0A%20%20%20%20animal_type%3A%20String%2C%0A%20%20%20%20name%3A%20String%2C%0A%20%20%20%20arms%3A%20i32%2C%0A%20%20%20%20legs%3A%20i32%2C%0A%20%20%20%20weapon%3A%20String%2C%0A%7D)
+- title: Metodat e thirrjes
+ content_markdown: >
+ Ndryshe nga funksionet, metodat janë funksione të lidhura me një të dhënë specifike
+ lloji.
+
+
+ **metodat statike** — metodat që i përkasin një lloji vetvete thirren duke përdorur
+ operatorin `::`.
+
+
+ **metodat e shembullit** — metodat që i përkasin një shembulli të një lloji
+ thirren duke përdorur operatorin `.`.
+
+
+ Ne do të flasim më shumë për krijimin e metodave tuaja në kapitujt e ardhshëm.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn%20main()%20%7B%0A%20%20%20%20%2F%2F%20P%C3%ABrdorimi%20i%20nj%C3%AB%20metode%20statike%20p%C3%ABr%20krijimin%20e%20nj%C3%AB%20instance%20t%C3%AB%20String%0A%20%20%20%20let%20s%20%3D%20String%3A%3Afrom(%22P%C3%ABrshej%20bota!%22)%3B%0A%20%20%20%20%2F%2F%20P%C3%ABrdorimi%20i%20nj%C3%AB%20metode%20n%C3%AB%20instanc%C3%AB%0A%20%20%20%20println!(%22%7B%7D%20%C3%ABsht%C3%AB%20%7B%7D%20karaktere%20gjat%C3%AB.%22%2C%20s%2C%20s.len())%3B%0A%7D%0A)
+- title: Memorja
+ content_markdown: >
+ Programet Rust kanë 3 rajone memorie ku ruhen të dhënat:
+
+ * **memoria e të dhënave** - Për të dhënat që janë të fiksuara në madhësi dhe **statike** (d.m.th.
+ gjithmonë i disponueshëm gjatë gjithë jetës së programit).
+ Merrni parasysh tekstin në programin tuaj (p.sh. "Hello World!"): Bajtet e këtij teksti lexohen vetëm nga një vend
+ dhe për këtë arsye mund të ruhet në këtë rajon. Përpiluesit bëjnë shumë optimizime
+ me këtë lloj të dhënash, dhe ato përgjithësisht konsiderohen shumë të shpejta për t'u përdorur që nga ajo kohë
+ vendndodhjet janë të njohura dhe të fiksuara.
+ * **stack memorie** - Për të dhënat që deklarohen si variabla brenda
+ funksionit.
+ Vendndodhja e kësaj memorie nuk ndryshon kurrë gjatë kohëzgjatjes së një thirrjeje funksioni; për shkak të këtij përpiluesit
+ mund të optimizojë kodin në mënyrë që të dhënat e grumbullimit të jenë shumë të shpejta për t'u aksesuar.
+ * **Memorie grumbull ** - Për të dhënat që krijohen ndërsa aplikacioni është
+ ne vrapim.
+ Të dhënat në këtë rajon mund të shtohen, zhvendosen, hiqen, ndryshohen përmasat, etj. Për shkak të
+ natyres se tij dinamike përgjithësisht konsiderohet më e ngadaltë për t'u përdorur, por e lejon
+ për perdorime shumë më kreative të kujtesës. Kur të dhënat shtohen në këtë rajon ne
+ quajme atë një **alokim**. Kur të dhënat hiqen nga ky seksion, ne e quajmë atë a
+ **shpërndarja/dealokim**.
+- title: Krijimi i të dhënave në memorie
+ content_markdown: >
+ Kur ne **instantojmë** një **struktur** në kodin tonë programi ynë krijon
+ të dhënat e fushës shoqëruese krah për krah në memorie.
+
+
+ Ne instantojmë duke specifikuar të gjitha vlerat e fushës brenda
+
+
+ `Emri i strukturës { ... }`.
+
+
+ Fushat e strukturës aksesohen duke përdorur një operator me pika `.`.
+
+
+ Detajet e kujtesës të shembullit tonë:
+
+ * Teksti brenda thonjëzave është vetëm të dhëna për lexim (p.sh. "Ferris"), prandaj
+ është
+ vendosur në *regjionin e memories së të dhënave*.
+ * Thirrja e funksionit `String::from` krijon një strukturë `String` që vendoset
+ anësor
+ krah për krah me fushat e SeaCreature në *stack*. Një varg paraqet tekst që mund të ndryshohet
+ dhe e bën këtë duke:
+ 1. Krijimi i memories në *grumbull* për tekstin ku mund të modifikohet
+ 2. Ruajtja e një referimi në atë vendndodhje memorie në *grumbull* dhe ruajtja e saj në `String`
+ struct (Më shumë për këtë në mësimet e ardhshme)
+ * Më në fund dy miqtë tanë *Ferris* dhe *Sara* kanë struktura të dhënash që
+ do të ketë gjithmonë
+ vendndodhje fikse në programin tonë, kështu që ato vendosen në *stack*.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=struct%20SeaCreature%20%7B%0A%20%20%20%20animal_type%3A%20String%2C%0A%20%20%20%20name%3A%20String%2C%0A%20%20%20%20arms%3A%20i32%2C%0A%20%20%20%20legs%3A%20i32%2C%0A%20%20%20%20weapon%3A%20String%2C%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20T%C3%AB%20dhenat%20e%20SeaCreature%20jan%C3%AB%20n%C3%AB%20stack%0A%20%20%20%20let%20ferris%20%3D%20SeaCreature%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20String%20struct%20%C3%ABsht%C3%AB%20gjithashtu%20n%C3%AB%20stack%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20por%20mban%20nj%C3%AB%20referenc%C3%AB%20n%C3%AB%20t%C3%AB%20dh%C3%ABnat%20n%C3%AB%20heap%0A%20%20%20%20%20%20%20%20animal_type%3A%20String%3A%3Afrom(%22karkalec%22)%2C%0A%20%20%20%20%20%20%20%20name%3A%20String%3A%3Afrom(%22Ferris%22)%2C%0A%20%20%20%20%20%20%20%20arms%3A%202%2C%0A%20%20%20%20%20%20%20%20legs%3A%204%2C%0A%20%20%20%20%20%20%20%20weapon%3A%20String%3A%3Afrom(%22kong%22)%2C%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20let%20sarah%20%3D%20SeaCreature%20%7B%0A%20%20%20%20%20%20%20%20animal_type%3A%20String%3A%3Afrom(%22qent%22)%2C%0A%20%20%20%20%20%20%20%20name%3A%20String%3A%3Afrom(%22Sarah%22)%2C%0A%20%20%20%20%20%20%20%20arms%3A%208%2C%0A%20%20%20%20%20%20%20%20legs%3A%200%2C%0A%20%20%20%20%20%20%20%20weapon%3A%20String%3A%3Afrom(%22truri%22)%2C%0A%20%20%20%20%7D%3B%0A%20%20%20%20%0A%20%20%20%20println!(%0A%20%20%20%20%20%20%20%20%22%7B%7D%20%C3%ABsht%C3%AB%20nje%20%7B%7D.%20Ata%20kan%C3%AB%20%7B%7D%20krah%C3%AB%2C%20%7B%7D%20kembe%2C%20dhe%20nje%20%7B%7D%20arm%C3%AB%22%2C%0A%20%20%20%20%20%20%20%20ferris.name%2C%20ferris.animal_type%2C%20ferris.arms%2C%20ferris.legs%2C%20ferris.weapon%0A%20%20%20%20)%3B%0A%20%20%20%20println!(%0A%20%20%20%20%20%20%20%20%22%7B%7D%20%C3%ABsht%C3%AB%20nje%20%7B%7D.%20Ata%20kan%C3%AB%20%7B%7D%20krah%C3%AB%2C%20dhe%20%7B%7D%20kembe.%20Nuk%20kan%C3%AB%20arme..%22%2C%0A%20%20%20%20%20%20%20%20sarah.name%2C%20sarah.animal_type%2C%20sarah.arms%2C%20sarah.legs%0A%20%20%20%20)%3B%0A%7D)
+- title: Struktura të ngjashme me tufë
+ content_markdown: |
+ Për koncizitet, mund të krijoni struktura që përdoren si një tufë.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=struct%20Location(i32%2C%20i32)%3B%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20Kjo%20%C3%ABsht%C3%AB%20ende%20nj%C3%AB%20strukture%20n%C3%AB%20stack%0A%20%20%20%20let%20loc%20%3D%20Location(42%2C%2032)%3B%0A%20%20%20%20println!(%22%7B%7D%2C%20%7B%7D%22%2C%20loc.0%2C%20loc.1)%3B%0A%7D
+- title: Struktura të ngjashme me njësinë
+ content_markdown: >
+ Strukturat edhe nuk duhet të kenë fare fusha.
+
+
+ Siç u përmend në Kapitullin 1, një *njësi* është një fjalë tjetër për një tuple bosh `()`.
+ Kjo është arsyeja pse ky lloj strukture quhet *Unit-like*.
+
+
+ Ky lloj strukture përdoret rrallë.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=struct%20Marker%3B%0A%0Afn%20main()%20%7B%0A%20%20%20%20let%20_m%20%3D%20Marker%3B%0A%7D)
+- title: Enumeracionet
+ content_markdown: >
+ Enumerimet ju lejojnë të krijoni një lloj të ri që mund të ketë një vlerë prej disa
+ elementë te etiketuar duke përdorur fjalën kyçe "enum".
+
+
+ "match" ndihmon në sigurimin e trajtimit shterues të të gjitha bërjes së vlerave të mundshme të numrit
+ është një mjet i fuqishëm për të siguruar kod cilësor.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%23!%5Blejohet(dead_code)%5D%20%2F%2F%20ky%20rresht%20parandalon%20sinjalizimet%20e%20kompiluesit%0A%0Aenum%20Lloji%20%7B%0A%20%20%20%20Karkalec%2C%0A%20%20%20%20Zogu%20i%20detit%2C%0A%20%20%20%20Peshku%2C%0A%20%20%20%20Palura%0A%7D%0A%0Astruct%20KrijesaDeti%20%7B%0A%20%20%20%20lloji%3A%20Lloji%2C%0A%20%20%20%20emri%3A%20String%2C%0A%20%20%20%20krah%C3%ABt%3A%20i32%2C%0A%20%20%20%20kembe%3A%20i32%2C%0A%20%20%20%20arm%C3%ABt%3A%20String%2C%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20let%20ferris%20%3D%20KrijesaDeti%20%7B%0A%20%20%20%20%20%20%20%20lloji%3A%20Lloji%3A%3AKarkalec%2C%0A%20%20%20%20%20%20%20%20emri%3A%20String%3A%3Afrom(%22Ferris%22)%2C%0A%20%20%20%20%20%20%20%20krah%C3%ABt%3A%202%2C%0A%20%20%20%20%20%20%20%20kembe%3A%204%2C%0A%20%20%20%20%20%20%20%20arm%C3%ABt%3A%20String%3A%3Afrom(%22kam%C3%ABy%22)%2C%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20match%20ferris.lloji%20%7B%0A%20%20%20%20%20%20%20%20Lloji%3A%3AKarkalec%20%3D%3E%20println!(%22%7B%7D%20%C3%ABsht%C3%AB%20nj%C3%AB%20karkalec%22%2Cferris.emri)%2C%0A%20%20%20%20%20%20%20%20Lloji%3A%3AZogu%20i%20detit%20%3D%3E%20println!(%22%7B%7D%20%C3%ABsht%C3%AB%20nj%C3%AB%20zog%20i%20detit%22%2Cferris.emri)%2C%0A%20%20%20%20%20%20%20%20Lloji%3A%3APeshku%20%3D%3E%20println!(%22%7B%7D%20%C3%ABsht%C3%AB%20nj%C3%AB%20peshk%22%2Cferris.emri)%2C%0A%20%20%20%20%20%20%20%20Lloji%3A%3APalura%20%3D%3E%20println!(%22%7B%7D%20%C3%ABsht%C3%AB%20nj%C3%AB%20palur%C3%AB%22%2Cferris.emri)%2C%0A%20%20%20%20%7D%0A%7D)
+- title: Enumerations With Data
+ content_markdown: >
+ Elementet "enum" mund të kenë gjithashtu një ose më shumë lloje të dhënash që i lejojnë ata të sillen
+ si *union* nga C.
+
+
+ Kur një model "enum" përputhet duke përdorur "match", ju mund të lidhni një ndryshore
+ emër për secilën vlerë të të dhënave.
+
+
+ Detajet e memories së `enum`:
+
+ * Një vlerë e të dhënave enum do të ketë një madhësi memorie të barabartë me elementin e saj më të madh.
+ Kjo lejon që të gjitha vlerat potenciale të përshtaten në të njëjtën hapësirë të memories.
+
+ * Përveç llojeve të të dhënave të elementit (nëse ka), çdo element ka gjithashtu një
+ vlerë numerike që përfaqëson se cili etiketë është.
+
+
+ Detaje të tjera:
+
+ * 'Enum' i Rust është diçka e njohur gjithashtu si një bashkim *etiketuar*.
+
+ * Kombinimi i llojeve për të krijuar një lloj të ri është ajo që njerëzit nënkuptojnë kur ata
+ Ndryshku ka *lloje algjebrike*.
+ code: >-
+https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%23!%5Blejohet(dead_code)%5D%20%2F%2F%20ky%20rresht%20parandalon%20sinjalizimet%20e%20kompiluesit%0A%0Aenum%20Lloji%20%7B%20Karkalec%2C%20Zogu%20i%20detit%2C%20Peshku%2C%20Palura%20%7D%0Aenum%20LlojiVeneni%20%7B%20Acid%2C%20Dhimbshme%2C%20Vdekjeprurese%20%7D%0Aenum%20Madhesia%20%7B%20Madhe%2C%20Vogel%20%7D%0Aenum%20Arma%20%7B%0A%20%20%20%20Krah%28i32%2C%20Madhesia%29%2C%0A%20%20%20%20Venin%28LlojiVeneni%29%2C%0A%20%20%20%20Asnje%0A%7D%0A%0Astruct%20KrijesaDeti%20%7B%0A%20%20%20%20lloji%3A%20Lloji%2C%0A%20%20%20%20emri%3A%20String%2C%0A%20%20%20%20krah%C3%ABt%3A%20i32%2C%0A%20%20%20%20kembe%3A%20i32%2C%0A%20%20%20%20arma%3A%20Arma%2C%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20Te%20dhenat%20e%20Krijes%D0%91eDeti%20jane%20ne%20stek%0A%20%20%20%20let%20ferris%20%3D%20KrijesaDeti%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Struktura%20String%20gjithashtu%20eshte%20ne%20stek%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20por%20mban%20nje%20referenc%20ne%20te%20dhena%20ne%20heap%0A%20%20%20%20%20%20%20%20lloji%3A%20Lloji%3A%3AKarkalec%2C%0A%20%20%20%20%20%20%20%20emri%3A%20String%3A%3Afrom(%22Ferris%22)%2C%0A%20%20%20%20%20%20%20%20krah%C3%ABt%3A%202%2C%0A%20%20%20%20%20%20%20%20kembe%3A%204%2C%0A%20%20%20%20%20%20%20%20arma%3A%20Arma%3A%3AKrah(2%2C%20Madhesia%3A%3AVogel)%2C%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20match%20ferris.lloji%20%7B%0A%20%20%20%20%20%20%20%20Lloji%3A%3AKarkalec%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20match%20ferris.arma%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Arma%3A%3AKrah(nr_krah%C3%ABve%2Cmadhesia)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20pershkrim_madh%C3%ABsie%20%3D%20match%20madhesia%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Madhesia%3A%3AMadhe%20%3D%3E%20%22madhe%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Madhesia%3A%3AVogel%20%3D%3E%20%22vogel%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20println!(%22ferris%20%C3%ABsht%C3%AB%20nj%C3%AB%20karkalec%20me%20%7B%7D%20%7B%7D%20krah%C3%AB%22%2C%20nr_krah%C3%ABve%2C%20pershkrim_madh%C3%ABsie)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_%20%3D%3E%20println!(%22ferris%20%C3%ABsht%C3%AB%20nj%C3%AB%20karkalec%20me%20nj%C3%AB%20arm%C3%AB%20tjet%C3%ABr%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20_%20%3D%3E%20println!(%22ferris%20%C3%ABsht%C3%AB%20nj%C3%AB%20kafsh%C3%AB%20tjet%C3%ABr%22)%2C%0A%20%20%20%20%7D%0A%7D)
+- title: Kapitulli 3 - Konkluzion
+ content_markdown: >
+ Sa emocionuese! Tani kemi mjetet më themelore për përfaqësimin e formës së
+ ideve tona në kod. Shpresojmë tani ne
+
+ mund të shohim një dritë sesi funksionet themelore të Rust funksionojnë në harmoni dhe
+ koncizitet me llojet e tij. Në vazhdim do të flasim për
+
+ një koncept që u jep llojeve tona të të dhënave edhe më shumë fleksibilitet të përfaqësimit:
+ *gjenerike*.
diff --git a/lessons/al/common_words.yaml b/lessons/al/common_words.yaml
new file mode 100644
index 000000000..4673e3f8f
--- /dev/null
+++ b/lessons/al/common_words.yaml
@@ -0,0 +1,9 @@
+chapter: Kapitull
+tor: Tut i Rustit
+next: Tjetri
+previous: Paraardhesi
+toc: Tabela e permbajtjeve
+lessons: Mesimet
+untranslated: E paperkthyer
+welcometothe: Miresevine ne
+presstocontinue: Shtyp per te vazhduar