From 8646df44a080df1d0e8e7b7f9b5e0c710fd03e74 Mon Sep 17 00:00:00 2001 From: Mekal <23715925+MekalBoy@users.noreply.github.com> Date: Thu, 19 Jan 2023 18:06:19 +0200 Subject: [PATCH 1/7] Chapter 9 Romanian Translation Chapter 9 was translated. --- lessons/ro/chapter_9.yaml | 177 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 lessons/ro/chapter_9.yaml diff --git a/lessons/ro/chapter_9.yaml b/lessons/ro/chapter_9.yaml new file mode 100644 index 000000000..25c9ef7b3 --- /dev/null +++ b/lessons/ro/chapter_9.yaml @@ -0,0 +1,177 @@ +- title: Capitolul 9 - Organizarea și Structura Proiectului + content_markdown: > + Până acum, toate exemplele noastre de cod au fost un singur fișier. Haideți să discutăm cum + codul nostru poate fi mai bine organizat și partajat de alții! +- title: Module + content_markdown: | + Fiecare program sau bibliotecă Rust este o *cutie*. + + Fiecare cutie este alcătuit dintr-o ierarhie de *module*. + + Fiecare cutie are un modul rădăcină. + + Un modul poate conține variabile globale, funcții, structuri, trăsături sau chiar alte module! + + În Rust nu există o corespondență 1 la 1 între fișiere și ierarhia de module. Trebuie să construim arborele de module în mod explicit și manual în codul nostru. +- title: Scrierea unui Program + content_markdown: | + Un program are un modul rădăcină într-un fișier numit `main.rs`. +- title: Scrierea unei Biblioteci + content_markdown: | + O bibliotecă are un modul rădăcină într-un fișier numit `lib.rs`. +- title: Referințierea la alte Module și Cutii + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=use%20std%3A%3Af64%3A%3Aconsts%3A%3API%3B%0A%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22Welcome%20to%20the%20playground!%22)%3B%0A%20%20%20%20println!(%22I%20would%20love%20a%20slice%20of%20%7B%7D!%22%2C%20PI)%3B%0A%7D%0A + content_markdown: > + Elementele din module pot fi refererențiate cu calea completă a acestora. + `std::f64::consts::PI`. + + + O modalitate mai simplă este cuvântul cheie **use**. Acesta ne permite să specificăm + anumite elemente din modulele pe care dorim să le + + să folosim în tot codul nostru fără o cale completă. Spre exemplu `use + std::f64::consts::PI` + + îmi permite să folosesc doar identificatorul `PI` în funcția mea principală. + + + **std** este o cutie a **bibliotecii standard** din Rust, care este plină de + date utile + + structuri și funcții utile pentru interacțiunea cu sistemul de operare. + + + Un repertoriu de căutare a cutiilor create de comunitate poate fi găsit la adresa + [https://crates.io](https://crates.io/). +- title: Referința la mai multe elemente + content_markdown: | + Mai multe elemente pot fi menționate într-o singură cale de modul, astfel: + + ```rust + use std::f64::consts::{PI,TAU} + ``` + + Ferris doesn't eat TAU, he only eats PI. +- title: Crearea de Module + content_markdown: | + Când ne gândim la cod, ne imaginăm de obicei o ierarhie de fișiere organizate + în directoare. Rust vă permite să creați module strâns legate de fișierul dvs. + structura fișierelor. + + În Rust există două moduri de a declara un modul. De exemplu, un modul + `foo` poate fi reprezentat ca: + * un fișier numit `foo.rs` + * un director numit `foo` cu un fișier `mod.rs` în interior +- title: Ierarhia Modulelor + content_markdown: > + Un modul poate depinde de un alt modul. Pentru a stabili o relație + + între un modul și submodulul său, trebuie să scrieți în modulul părinte: + + + ```rust + + mod foo; + + ``` + + + Declarația de mai sus va căuta un fișier numit `foo.rs` sau `foo/mod.rs`. + și + + va insera conținutul acestuia în interiorul unui modul numit `foo` în acest domeniu de aplicare. +- title: Inline Module + content_markdown: > + Un submodul poate fi inclus direct în codul unui modul. + + + O utilizare foarte frecventă a modulelor inline este crearea de teste unitare. + Creăm un modul inline care există doar atunci când Rust este utilizat pentru testare! + + + ``` + + // Aceast macro elimină acest modul inline atunci când Rust + + // nu se află în modul de testare + + #[cfg(test)] + + mod tests { + // Observați că nu obținem imediat acces la + // modulul părinte. Trebuie să fim expliciți. + use super::*; + + ... tests go here ... + } + + ``` +- title: Referențierea Modulelor Interne + content_markdown: > + Rust are câteva cuvinte cheie pe care le puteți folosi în calea `use` pentru a obține rapid + rapid modulul pe care îl doriți: + + * `crate` - modulul rădăcină al cutiei dvs. + + * `super` - modulul părinte al modulului curent + + * `self` - modulul curent +- title: Exportarea + content_markdown: > + În mod implicit, membrii unui *modul* nu sunt accesibili din exteriorul + modulului (nici măcar pentru modulele sale inferioare!). Facem ca membrii + + unui modul sa fie accesibili cu ajutorul cuvântului cheie `pub`. + + + În mod implicit, membrii unui *crate* nu sunt accesibili din afara cutiei. Noi + facem membrii unei + + cutii accesibilă prin marcarea lor ca `pub` în *root module* al + cutiei dvs. (`lib.rs` sau `main.rs`). +- title: Vizibilitatea Structurilor + content_markdown: > + La fel ca și funcțiile, structurile pot declara ceea ce doresc să fie expus + în afara modulului lor folosind `pub`. + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=%2F%2F%20SeaCreature%20struct%20will%20be%20usable%20outside%20of%20our%20module%0Apub%20struct%20SeaCreature%20%7B%0A%20%20%20%20pub%20animal_type%3A%20String%2C%0A%20%20%20%20pub%20name%3A%20String%2C%0A%20%20%20%20pub%20arms%3A%20i32%2C%0A%20%20%20%20pub%20legs%3A%20i32%2C%0A%20%20%20%20%2F%2F%20let's%20keep%20our%20weapon%20private%0A%20%20%20%20weapon%3A%20String%2C%0A%7D%0A +- title: Preludiu + content_markdown: | + Poate vă întrebați cum de avem acces la `Vec` sau `Box`. + peste tot, fără un `use` pentru a le importa. Acest lucru se datorează modulului + `prelude` din biblioteca standard. + + În biblioteca standard Rust orice este exportat în + `std::prelude::*` este automat disponibil pentru fiecare parte a Rust. + Acesta este cazul pentru `Vec` și `Box`, dar și pentru altele (Option, Copy, + etc.). +- title: Preludiul Propriu + content_markdown: > + Datorită preludiului bibliotecii standard, este normal ca biblioteca dvs. să aibă + propriul său modul preludiu. Aceasta poate fi un punct de plecare pentru + + utilizatorii care doresc să importe cele mai comune structuri de date pentru utilizarea + bibliotecii dumneavoastră (de exemplu, `use my_library::prelude::*`). + + Acesta nu este utilizat automat în programele/bibliotecile care utilizează biblioteca dvs, + dar este o convenție bună de urmat pentru ca oamenii + + să știe de unde să înceapă. + + + Ferris spune: "Fiți un rustacean bun și ajutați alți crabi cu un + preludiu bun!" +- title: Capitolul 9 - Concluzii + content_markdown: > + Acum aveți câteva trucuri în mânecă atunci când vine vorba de crearea de aplicații Rust + pregătite pentru lume. Nu + + vă faceți griji să le țineți minte pe toate. Pe măsură ce biblioteca dvs. crește și este utilizată de alte + persoane, veți descoperi ce funcționează cel mai bine la fiecare etapă. + + + Resurse: + + - [Orientări pentru scrierea de + API-uri în Rust](https://rust-lang.github.io/api-guidelines/) From 1ce260c0f4363e04faa9bd5f5e4fdb2cceb43536 Mon Sep 17 00:00:00 2001 From: Mekal <23715925+MekalBoy@users.noreply.github.com> Date: Fri, 20 Jan 2023 23:41:07 +0200 Subject: [PATCH 2/7] Update lessons/ro/chapter_9.yaml Co-authored-by: Alexandru Radovici --- lessons/ro/chapter_9.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/ro/chapter_9.yaml b/lessons/ro/chapter_9.yaml index 25c9ef7b3..372337541 100644 --- a/lessons/ro/chapter_9.yaml +++ b/lessons/ro/chapter_9.yaml @@ -125,7 +125,7 @@ unui modul sa fie accesibili cu ajutorul cuvântului cheie `pub`. - În mod implicit, membrii unui *crate* nu sunt accesibili din afara cutiei. Noi + În mod implicit, membrii unei cutii nu sunt accesibili din afara cutiei. Noi facem membrii unei cutii accesibilă prin marcarea lor ca `pub` în *root module* al From 9759faba33e8b7650597166241d88b6a0cba499a Mon Sep 17 00:00:00 2001 From: Mekal <23715925+MekalBoy@users.noreply.github.com> Date: Fri, 20 Jan 2023 23:51:32 +0200 Subject: [PATCH 3/7] Apply part of suggestions from code review The one-liner solutions present in the code review suggestions have been added. Co-authored-by: Alexandru Radovici --- lessons/ro/chapter_9.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lessons/ro/chapter_9.yaml b/lessons/ro/chapter_9.yaml index 372337541..53763d157 100644 --- a/lessons/ro/chapter_9.yaml +++ b/lessons/ro/chapter_9.yaml @@ -1,4 +1,4 @@ -- title: Capitolul 9 - Organizarea și Structura Proiectului +- title: Capitolul 9 - Organizarea și Structurarea Proiectului content_markdown: > Până acum, toate exemplele noastre de cod au fost un singur fișier. Haideți să discutăm cum codul nostru poate fi mai bine organizat și partajat de alții! @@ -12,14 +12,14 @@ Un modul poate conține variabile globale, funcții, structuri, trăsături sau chiar alte module! - În Rust nu există o corespondență 1 la 1 între fișiere și ierarhia de module. Trebuie să construim arborele de module în mod explicit și manual în codul nostru. + În Rust nu există o corespondență unu la unu între fișiere și ierarhia de module. Trebuie să construim arborele de module în mod explicit și manual în codul nostru. - title: Scrierea unui Program content_markdown: | Un program are un modul rădăcină într-un fișier numit `main.rs`. - title: Scrierea unei Biblioteci content_markdown: | O bibliotecă are un modul rădăcină într-un fișier numit `lib.rs`. -- title: Referințierea la alte Module și Cutii +- title: Referințierea de către alte module și cutii code: >- https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=use%20std%3A%3Af64%3A%3Aconsts%3A%3API%3B%0A%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22Welcome%20to%20the%20playground!%22)%3B%0A%20%20%20%20println!(%22I%20would%20love%20a%20slice%20of%20%7B%7D!%22%2C%20PI)%3B%0A%7D%0A content_markdown: > @@ -42,7 +42,7 @@ structuri și funcții utile pentru interacțiunea cu sistemul de operare. - Un repertoriu de căutare a cutiilor create de comunitate poate fi găsit la adresa + Un repertoriu de căutare a cutiilor (în denumite engleza *crate*) create de comunitate poate fi găsit la adresa [https://crates.io](https://crates.io/). - title: Referința la mai multe elemente content_markdown: | @@ -81,7 +81,7 @@ și va insera conținutul acestuia în interiorul unui modul numit `foo` în acest domeniu de aplicare. -- title: Inline Module +- title: Modul *Inline* content_markdown: > Un submodul poate fi inclus direct în codul unui modul. @@ -119,8 +119,8 @@ * `self` - modulul curent - title: Exportarea content_markdown: > - În mod implicit, membrii unui *modul* nu sunt accesibili din exteriorul - modulului (nici măcar pentru modulele sale inferioare!). Facem ca membrii + În mod implicit, membrii unui modul nu sunt accesibili din exteriorul + modulului (nici măcar pentru submodulele sale!). Facem ca membrii unui modul sa fie accesibili cu ajutorul cuvântului cheie `pub`. @@ -128,7 +128,7 @@ În mod implicit, membrii unei cutii nu sunt accesibili din afara cutiei. Noi facem membrii unei - cutii accesibilă prin marcarea lor ca `pub` în *root module* al + cutii accesibilă prin marcarea lor ca `pub` în modulul rădăcină (în engleză *root module*) al cutiei dvs. (`lib.rs` sau `main.rs`). - title: Vizibilitatea Structurilor content_markdown: > @@ -144,7 +144,7 @@ În biblioteca standard Rust orice este exportat în `std::prelude::*` este automat disponibil pentru fiecare parte a Rust. - Acesta este cazul pentru `Vec` și `Box`, dar și pentru altele (Option, Copy, + Acesta este cazul pentru `Vec` și `Box`, dar și pentru altele (`Option`, `Copy`, etc.). - title: Preludiul Propriu content_markdown: > From 1d9599fbc05e0210613a7b76bc82fd85fe89f93a Mon Sep 17 00:00:00 2001 From: Mekal Boy <23715925+MekalBoy@users.noreply.github.com> Date: Mon, 23 Jan 2023 16:55:33 +0200 Subject: [PATCH 4/7] Additional translation fixes This commit resolves the following suggestions: https://github.com/UPB-CS-OpenSourceUpstream/tour_of_rust/pull/5#discussion_r1082524948 https://github.com/UPB-CS-OpenSourceUpstream/tour_of_rust/pull/5#discussion_r1082526819 https://github.com/UPB-CS-OpenSourceUpstream/tour_of_rust/pull/5#discussion_r1082529073 https://github.com/UPB-CS-OpenSourceUpstream/tour_of_rust/pull/5#discussion_r1082529600 https://github.com/UPB-CS-OpenSourceUpstream/tour_of_rust/pull/5#discussion_r1082541135 --- lessons/ro/chapter_9.yaml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lessons/ro/chapter_9.yaml b/lessons/ro/chapter_9.yaml index 53763d157..bea264bc0 100644 --- a/lessons/ro/chapter_9.yaml +++ b/lessons/ro/chapter_9.yaml @@ -21,7 +21,7 @@ O bibliotecă are un modul rădăcină într-un fișier numit `lib.rs`. - title: Referințierea de către alte module și cutii code: >- - https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=use%20std%3A%3Af64%3A%3Aconsts%3A%3API%3B%0A%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22Welcome%20to%20the%20playground!%22)%3B%0A%20%20%20%20println!(%22I%20would%20love%20a%20slice%20of%20%7B%7D!%22%2C%20PI)%3B%0A%7D%0A + https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=use%20std%3A%3Af64%3A%3Aconsts%3A%3API%3B%0A%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22Bun%20venit%20la%20locul%20de%20joac%C4%83!%22)%3B%0A%20%20%20%20println!(%22PI%20este%20echivalent%20cu%20%7B%7D%22%2C%20PI)%3B%0A%7D%0A content_markdown: > Elementele din module pot fi refererențiate cu calea completă a acestora. `std::f64::consts::PI`. @@ -37,9 +37,7 @@ **std** este o cutie a **bibliotecii standard** din Rust, care este plină de - date utile - - structuri și funcții utile pentru interacțiunea cu sistemul de operare. + structuri de date și funcții utile pentru interacțiunea cu sistemul de operare. Un repertoriu de căutare a cutiilor (în denumite engleza *crate*) create de comunitate poate fi găsit la adresa @@ -52,12 +50,12 @@ use std::f64::consts::{PI,TAU} ``` - Ferris doesn't eat TAU, he only eats PI. + Ferris nu mănâncă TAU, mănâncă doar PI. - title: Crearea de Module content_markdown: | Când ne gândim la cod, ne imaginăm de obicei o ierarhie de fișiere organizate - în directoare. Rust vă permite să creați module strâns legate de fișierul dvs. - structura fișierelor. + în directoare. Rust vă permite să creați module organizate într-un mod similar + cu structura dumneavoastră de fișiere. În Rust există două moduri de a declara un modul. De exemplu, un modul `foo` poate fi reprezentat ca: @@ -80,7 +78,7 @@ Declarația de mai sus va căuta un fișier numit `foo.rs` sau `foo/mod.rs`. și - va insera conținutul acestuia în interiorul unui modul numit `foo` în acest domeniu de aplicare. + va insera conținutul acestuia în interiorul unui modul numit `foo`, în scope-ul acestuia. - title: Modul *Inline* content_markdown: > Un submodul poate fi inclus direct în codul unui modul. From ba6e83a62e375e34a9d00b3e4e5c936c217f389c Mon Sep 17 00:00:00 2001 From: Mekal Boy <23715925+MekalBoy@users.noreply.github.com> Date: Mon, 23 Jan 2023 18:35:45 +0200 Subject: [PATCH 5/7] Replaced PI joke The PI joke was replaced by the spanish version's joke. --- lessons/ro/chapter_9.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/ro/chapter_9.yaml b/lessons/ro/chapter_9.yaml index bea264bc0..d91d9a076 100644 --- a/lessons/ro/chapter_9.yaml +++ b/lessons/ro/chapter_9.yaml @@ -50,7 +50,7 @@ use std::f64::consts::{PI,TAU} ``` - Ferris nu mănâncă TAU, mănâncă doar PI. + **TAU**r și **PI**sces sunt semnele zodiacale cele mai compatibile cu Ferris. - title: Crearea de Module content_markdown: | Când ne gândim la cod, ne imaginăm de obicei o ierarhie de fișiere organizate From d9b341d5ecf05475e998931567e385c39c5d191a Mon Sep 17 00:00:00 2001 From: Mekal Boy <23715925+MekalBoy@users.noreply.github.com> Date: Mon, 23 Jan 2023 19:03:32 +0200 Subject: [PATCH 6/7] Update translation Changed translation to better match other chapters. --- lessons/ro/chapter_9.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/ro/chapter_9.yaml b/lessons/ro/chapter_9.yaml index d91d9a076..d933b01d3 100644 --- a/lessons/ro/chapter_9.yaml +++ b/lessons/ro/chapter_9.yaml @@ -78,7 +78,7 @@ Declarația de mai sus va căuta un fișier numit `foo.rs` sau `foo/mod.rs`. și - va insera conținutul acestuia în interiorul unui modul numit `foo`, în scope-ul acestuia. + va insera conținutul acestuia în interiorul unui modul numit `foo`, în domeniul de vizibilitate al acestuia. - title: Modul *Inline* content_markdown: > Un submodul poate fi inclus direct în codul unui modul. From f9543e87434eb530aaa921a2aa0e5b4a5da09d7a Mon Sep 17 00:00:00 2001 From: Mekal <23715925+MekalBoy@users.noreply.github.com> Date: Tue, 14 Feb 2023 13:54:01 +0200 Subject: [PATCH 7/7] Update README progress table README has been updated to include Romanian chapters --- lessons/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/README.md b/lessons/README.md index 36401c470..542b57259 100644 --- a/lessons/README.md +++ b/lessons/README.md @@ -21,6 +21,6 @@ Every time you finish the translation of a chapter update the table underneath. |tr | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |ua | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | |vi | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - +|ro | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | ✓ | | Legend: ✓ = done, u = needs update