diff --git a/docs/src/content/docs/ru/challenges/angular/1-projection.md b/docs/src/content/docs/ru/challenges/angular/1-projection.md
new file mode 100644
index 000000000..a08f04671
--- /dev/null
+++ b/docs/src/content/docs/ru/challenges/angular/1-projection.md
@@ -0,0 +1,43 @@
+---
+title: π’ ΠΡΠΎΠ΅ΠΊΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
+description: Challenge 1 Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² DOM ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
+author: thomas-laforge
+challengeNumber: 1
+command: angular-projection
+blogLink: https://medium.com/@thomas.laforge/create-a-highly-customizable-component-cc3a9805e4c5
+videoLink:
+ link: https://www.youtube.com/watch?v=npyEyUZxoIw&ab_channel=ArthurLannelucq
+ alt: Projection video by Arthur Lannelucq
+ flag: FR
+sidebar:
+ order: 1
+---
+
+## ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
+
+ΠΡΠΎΠ΅ΠΊΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π² Angular - ΡΡΠΎ ΠΌΠΎΡΠ½Π°Ρ ΡΠ΅Ρ
Π½ΠΈΠΊΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Ρ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ ng-content ΠΈ ngTemplateOutlet ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
+
+[ΠΠ΄Π΅ΡΡ](https://angular.io/guide/content-projection#projecting-content-in-more-complex-environments) Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΎ ng-content, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΡΠΎΡΡΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ
.
+
+ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ngTemplateOutlett, Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ [ΡΡΡ](https://angular.io/api/common/NgTemplateOutlet).
+
+ΠΠΌΠ΅Ρ ΡΡΠΈ Π΄Π²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ, Π²Ρ ΡΠ΅ΠΏΠ΅ΡΡ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠΎΠΉΡΠΈ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅.
+
+## ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
+
+ΠΡ Π½Π°ΡΠ½Π΅ΡΠ΅ Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠ°Π½Π΅Π»Ρ Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠΎΠΉ ΡΡΠΈΡΠ΅Π»Ρ ΠΈ ΠΊΠ°ΡΡΠΎΡΠΊΠΎΠΉ ΡΡΡΠ΄Π΅Π½ΡΠ°. Π¦Π΅Π»Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΡ Π³ΠΎΡΠΎΠ΄Π°.
+
+Π₯ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ ΠΈΠ΄Π΅Π°Π»Π°. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΡ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ `card.component.ts`. Π ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
. Π¦Π΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ `CardComponent`, Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ `CityCardComponent` Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ `CardComponent`.
+
+## ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
+
+- ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ `CardComponent` ΠΈ `ListItemComponent`.
+- ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° `NgFor` Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π²Π½ΡΡΡΠΈ `CardComponent`, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π΅Ρ Π² `ParentCardComponent`,ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² `TeacherCardComponent`.
+- `CardComponent` Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ `NgIf` ΠΈΠ»ΠΈ `NgSwitch`.
+- CSS: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ `::ng-deep`. ΠΡΠΈΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ CSS.
+
+## ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ
+
+- ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ (Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ [ΡΡΡ](https://angular.dev/guide/templates/control-flow)).
+- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ signal API Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ [ΡΡΡ](https://angular.dev/guide/signals)).
+- ΠΠ»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΡΡΠΎΠΊ ([What is wrong with magic strings?](https://softwareengineering.stackexchange.com/a/365344)).
diff --git a/docs/src/content/docs/ru/challenges/angular/21-achor-scrolling.md b/docs/src/content/docs/ru/challenges/angular/21-achor-scrolling.md
new file mode 100644
index 000000000..716f18b8b
--- /dev/null
+++ b/docs/src/content/docs/ru/challenges/angular/21-achor-scrolling.md
@@ -0,0 +1,18 @@
+---
+title: π’ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ ΡΠΊΠΎΡΡ
+description: ΠΡΠΏΡΡΠ°Π½ΠΈΠ΅ 21 ΠΏΡΠΎ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠΎΡΡ
+author: thomas-laforge
+challengeNumber: 21
+command: angular-anchor-scrolling
+sidebar:
+ order: 4
+---
+
+## ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
+
+ΠΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠΎΡΠ΅ΠΉ Π² `HomeComponent`. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ `href` ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ.
+
+## ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
+
+- ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° - ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ, Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Angular. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ router, Π½ΠΎ Π»ΡΡΡΠ΅ ΠΎΡΡΠ°ΡΡΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `RouterLink` Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ.
+- ΠΠ»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ°, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ»Π°Π²Π½ΡΡ ΠΏΡΠΎΠΊΡΡΡΠΊΡ.
diff --git a/docs/src/content/docs/ru/challenges/angular/4-context-outlet-typed.md b/docs/src/content/docs/ru/challenges/angular/4-context-outlet-typed.md
new file mode 100644
index 000000000..053897d78
--- /dev/null
+++ b/docs/src/content/docs/ru/challenges/angular/4-context-outlet-typed.md
@@ -0,0 +1,40 @@
+---
+title: π΄ Π’ΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ContextOutlet
+description: ΠΡΠΏΡΡΠ°Π½ΠΈΠ΅ 4 ΠΏΡΠΎ ΡΡΡΠΎΠ³ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ngContextOutlet Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
+author: thomas-laforge
+challengeNumber: 4
+command: angular-context-outlet-type
+blogLink: https://medium.com/@thomas.laforge/ngtemplateoutlet-type-checking-5d2dcb07a2c6
+sidebar:
+ order: 201
+---
+
+## ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
+
+Π Angular Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ [`ngTemplateContextGuard`](https://angular.io/guide/structural-directives#typing-the-directives-context) Π΄Π»Ρ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ².
+
+ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ **NgTemplateOutlet** ΡΠ²Π»ΡΠ΅ΡΡΡ **Object**. ΠΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΉ Π³Π°ΡΠ΄Π°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ»ΡΡΡΠΈΡΡ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
+
+## ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
+
+Π ΡΡΠΎΠΌ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠΈ, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π½Π°ΡΡΠΈΡΡΡΡ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ng-template Π² AppComponent.
+
+ΠΡΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΡΡΠΎΠ²Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ:
+
+### Π£ΡΠΎΠ²Π΅Π½Ρ 1: ΠΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
+
+Π‘Π΅ΠΉΡΠ°Ρ ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
+
+![Unkown Person](../../../../../assets/4/unknown-person.png 'Unkown Person')
+
+ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ name ΡΠΈΠΏ "any". ΠΡ Ρ
ΠΎΡΠΈΠΌ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΈΠΏ.
+
+### Π£ΡΠΎΠ²Π΅Π½Ρ 2: ΠΠ±ΠΎΠ±ΡΡΠ½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
+
+Π‘Π΅ΠΉΡΠ°Ρ ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
+
+![Unkown Student](../../../../../assets/4/unknown-student.png 'Unkown Student')
+
+ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ student ΡΠΈΠΏ "any". ΠΡ Ρ
ΠΎΡΠΈΠΌ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΈΠΏ.
+
+ΠΠΎ Π½Π° ΡΡΠΎΡ ΡΠ°Π·, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² `ListComponent` ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· Π»ΡΠ±ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π ΠΌΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Ρ
ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π±ΡΠ» Π²ΡΠ²Π΅Π΄Π΅Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΈΠΏ.
diff --git a/docs/src/content/docs/ru/challenges/angular/8-pipe-pure.md b/docs/src/content/docs/ru/challenges/angular/8-pipe-pure.md
new file mode 100644
index 000000000..7d8067abb
--- /dev/null
+++ b/docs/src/content/docs/ru/challenges/angular/8-pipe-pure.md
@@ -0,0 +1,36 @@
+---
+title: π’Π§ΠΈΡΡΡΠΉ ΠΏΠ°ΠΉΠΏ
+description: ΠΡΠΏΡΡΠ°Π½ΠΈΠ΅ 8 ΠΏΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΉΠΏΠ°
+author: thomas-laforge
+challengeNumber: 8
+command: angular-pipe-easy
+blogLink: https://medium.com/ngconf/deep-dive-into-angular-pipes-c040588cd15d
+sidebar:
+ order: 3
+---
+
+## ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
+
+This is the first of three `@Pipe()` challenges, the goal of this series is to master **pipes** in Angular.
+ΠΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎ `@Pipe()` ΠΈΠ· ΡΡΠ΅Ρ
, ΡΠ΅Π»Ρ ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠΉ - ΠΎΡΠ²ΠΎΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ **pipes** Π² Angular.
+
+ΠΠ°ΠΉΠΏΡ - ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½Π΅. Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠ°ΠΉΠΏΠΎΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΡΡΡΠΌΠΈ ΠΏΠ°ΠΉΠΏΠ°ΠΌΠΈ, ΠΊΡΡΠΈΡΡΠ΅ΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΈΡ
Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ.
+
+Pipes ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΡΠ»ΡΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
+
+ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΉΠΏΡ ΡΠΈΡΡΡΠ΅, Π½ΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° `pure` Π² false ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΎΠΊ.
+
+:::note[ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅]
+**Π§ΠΈΡΡΡΠ΅** ΠΏΠ°ΠΉΠΏ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.\
+**ΠΠ΅ΡΠΈΡΡΡΠΉ** ΠΏΠ°ΠΉΠΏ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΊΠ» ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
+:::
+
+Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΏΠ°ΠΉΠΏΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ DatePipe, UpperCasePipe ΠΈ CurrencyPipe. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΠΏΠ°ΠΉΠΏΠ°Ρ
Π² Angular, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ API [Π·Π΄Π΅ΡΡ](https://angular.io/guide/pipes).
+
+## ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
+
+Π ΡΡΠΎΠΌ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΉΠΏΠ°.
+
+## ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅
+
+- ΠΠ°ΠΉΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½.
diff --git a/docs/src/content/docs/ru/challenges/forms/41-control-value-accessor.md b/docs/src/content/docs/ru/challenges/forms/41-control-value-accessor.md
new file mode 100644
index 000000000..98659a936
--- /dev/null
+++ b/docs/src/content/docs/ru/challenges/forms/41-control-value-accessor.md
@@ -0,0 +1,41 @@
+---
+title: π Control Value Accessor
+description: ΠΡΠΏΡΡΠ°Π½ΠΈΠ΅ 41 ΠΏΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠΎΡΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ControlValueAccessor.
+author: stanislav-gavrilov
+challengeNumber: 41
+command: forms-control-value-accessor
+sidebar:
+ order: 1
+---
+
+## ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
+
+Π¦Π΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΡΡΠ°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ API ΡΠΎΡΠΌΡ Angular ΡΠ΅ΡΠ΅Π· `ControlValueAccessor`. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ [Π·Π΄Π΅ΡΡ](https://angular.io/api/forms/ControlValueAccessor). ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±Π΅ΡΠΏΡΠ΅ΠΏΡΡΡΡΠ²Π΅Π½Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ API ΡΠΎΡΠΌ Angular.
+
+## ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
+
+ΠΠ°Π΄Π°ΡΠ° - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ» Π² `feedbackForm` Π½Π°ΠΏΡΡΠΌΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ `@Output` Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· `app-rating-control` ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΅Π³ΠΎ Π² `FormGroup`.
+ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΎ ΡΠ΅ΠΉΡΠΈΠ½Π³Π΅. (ΠΠ½ΠΎΠΏΠΊΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΌΠ° Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°).
+
+Π‘Π΅ΠΉΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΠΉΡΠΈΠ½Π³Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
+
+```html
+
+```
+
+```ts
+rating: string | null = null;
+
+onFormSubmit(): void {
+ this.feedBackSubmit.emit({
+ ...this.feedbackForm.value,
+ rating: this.rating, // not inside the FormGroup and no validation
+ });
+}
+```
+
+ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ:
+
+```html
+
+```
diff --git a/docs/src/content/docs/ru/challenges/performance/40-christmas-web-worker.md b/docs/src/content/docs/ru/challenges/performance/40-christmas-web-worker.md
new file mode 100644
index 000000000..674ceed2b
--- /dev/null
+++ b/docs/src/content/docs/ru/challenges/performance/40-christmas-web-worker.md
@@ -0,0 +1,33 @@
+---
+title: π ΠΠ΅Π±-Π²ΠΎΡΠΊΠ΅ΡΡ
+description: ΠΡΠΏΡΡΠ°Π½ΠΈΠ΅ 40 ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅Π±-Π²ΠΎΡΠΊΠ΅Ρ
+author: thomas-laforge
+challengeNumber: 40
+command: performance-christmas-web-worker
+sidebar:
+ order: 119
+---
+
+## ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
+
+ΠΡΠΎ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ Π΄Π»Ρ [Angular Advent Calendar](https://angularchristmascalendar.com) 2023.
+
+ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ **Discover**, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΡΠΏΡΠΈΠ·, ΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉΡΡ Π·Π° ΡΠ΅ΡΠ½ΡΠΌ ΡΠΊΡΠ°Π½ΠΎΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΆΠ΅Π»Π°ΡΡ Π»ΡΡΡΠ΅Π³ΠΎ. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ, Π° Π·Π°ΡΠ΅ΠΌ, ΠΏΠΎΡΠ»Π΅ ΠΊΡΠ°ΡΠΊΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΡΠ΅ΠΊΡΠ΅Ρ ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΈ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ»Π°Π²Π½ΠΎΡΡΠΈ Π² Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ.
+
+> ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅: ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. Π₯ΠΎΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΡΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΡΡΠ°Π½ΠΈΡ.
+
+Π’Π°ΠΊ ΠΊΠ°ΠΊ JavaScript ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΈΡ
Π·Π°Π΄Π°Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΊΠ»ΠΈΠΊΠΈ ΠΌΡΡΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°Π΄Π°ΡΠ° ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΡΡΠ°Π½ΠΈΡ - ΡΠ°Π·Π³ΡΡΠ·ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΠ»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅Π±-Π²ΠΎΡΠΊΠ΅ΡΡ. ΠΠ΅Π±-Π²ΠΎΡΠΊΠ΅ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΡ Π² ΡΠΎΠ½Π΅, Π½Π΅ Π²Π»ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π²ΡΡΠΎΠΊΠΎΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ.
+
+Π Angular ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π΅ ΡΠ°ΠΊ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎ, Π½ΠΎ Π²Π½Π΅Π΄ΡΠΈΡΡ Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ. ΠΡΡΡ ΡΡ
Π΅ΠΌΠ°ΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ [Π·Π΄Π΅ΡΡ](https://angular.io/guide/web-worker) ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ.
+
+## ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
+
+ΠΡΠΎ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π²Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π² Π²Π΅Π±-Π²ΠΎΡΠΊΠ΅Ρ.
+
+ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡ
Π΅ΠΌΠ°ΡΠΈΠΊ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅Π±-Π²ΠΎΡΠΊΠ΅Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΈΡ
ΡΠ°Π³ΠΎΠ² Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠ°ΡΡ ΠΏΠ»Π°Π²Π½ΠΎΠΉ, Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π½ΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ β ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠΈΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΎΠΏΡΡ.
+
+:::note[ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅]
+ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Nx, ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ `ng` Π½Π° `nx` ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡ
Π΅ΠΌΠ°ΡΠΈΠΊΠ°.
+
+ΠΡΠ»ΠΈ `nx` Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡ `npx` ΠΊ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
+:::
diff --git a/docs/src/content/i18n/ru.json b/docs/src/content/i18n/ru.json
index 9595ba21d..4e58543ad 100644
--- a/docs/src/content/i18n/ru.json
+++ b/docs/src/content/i18n/ru.json
@@ -1,10 +1,10 @@
{
"page.title.challenge": "ΠΡΠΏΡΡΠ°Π½ΠΈΠ΅",
"author.createdBy": "Π‘ΠΎΠ·Π΄Π°Π½ΠΎ",
- "buttons.email": "Email subscription",
- "buttons.star": "ΠΠ°ΡΡ Π·Π²Π΅Π·Π΄Ρ",
- "buttons.sponsor": "Π‘ΠΏΠΎΠ½ΡΠΎΡ",
- "buttons.clipboardCopy": "Copied!",
+ "buttons.email": "ΠΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° email ΡΠ°ΡΡΡΠ»ΠΊΡ",
+ "buttons.star": "ΠΠΎΠ±Π°Π²ΠΈΡΡ Π·Π²Π΅Π·Π΄Ρ",
+ "buttons.sponsor": "Π‘ΠΏΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ",
+ "buttons.clipboardCopy": "Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΎ!",
"404.text": "Π‘ΡΡΠ°Π½ΠΈΡΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ URL-Π°Π΄ΡΠ΅Ρ ΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΡΠΎΠΊΠΎΠΉ ΠΏΠΎΠΈΡΠΊΠ°.",
"challenge.footer.note": "ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅",
"challenge.footer.running": "ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ:",
@@ -13,12 +13,12 @@
"challenge.footer.communityAnswers": "Π Π΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°",
"challenge.footer.authorAnswer": "Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΡΠ°",
"challenge.footer.blogPost": "Π‘ΡΠ°ΡΡΡ",
- "challenge.footer.video": "Video",
+ "challenge.footer.video": "ΠΠΈΠ΄Π΅ΠΎ",
"challenge.footer.gettingStarted.title": "Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠΉΡΠΈ ΡΡΠΎ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅, ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅:",
"challenge.footer.gettingStarted.link": "ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ",
- "challenge.footer.upvoteAnswer": "You can upvote an answer with a π if you like it",
- "subscription.button": "Subscribe",
+ "challenge.footer.upvoteAnswer": "ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°ΡΡ Π·Π° ΠΎΡΠ²Π΅Ρ π Π΅ΡΠ»ΠΈ ΠΎΠ½ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ",
+ "subscription.button": "ΠΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ",
"subscription.email": "username@gmail.com",
- "subscription.note.title": "Notes",
- "subscription.note.description": "This email will only be used for sending new challenges updates"
+ "subscription.note.title": "ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅",
+ "subscription.note.description": "ΠΡΠΎΡ email Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎ Π½ΠΎΠ²ΡΡ
ΠΈΡΠΏΡΡΠ°Π½ΠΈΡΡ
"
}