abc لبناء واجهة لاعب."
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "مراجعة البرمجة كائنية التوجه",
+ "intro": [
+ "قبل أن تخضع لاختبار البرمجة كائنية التوجه، يجب أن تراجع ما تعلمته عنها."
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "اختبار البرمجة كائنية التوجه",
+ "intro": [
+ "اختبر ما تعلمته عن البرمجة كائنية التوجه في بايثون بهذا الاختبار."
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "بناء حاسبة مساحة مضلع",
+ "intro": [
+ "في هذا المختبر، ستستخدم البرمجة كائنية التوجه لحساب مساحات مضلعات مختلفة مثل المربعات والمستطيلات."
+ ]
+ },
+ "review-python": {
+ "title": "مراجعة أساسيات برمجة بايثون",
+ "intro": ["راجع مفاهيم بايثون للتحضير للاختبار القادم."]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "شهادة الخوارزميات وهيكل البيانات",
"intro": [
diff --git a/client/chinese-traditional/intro.json b/client/chinese-traditional/intro.json
index f3ce205a76d..3f5e3d5e18d 100644
--- a/client/chinese-traditional/intro.json
+++ b/client/chinese-traditional/intro.json
@@ -1221,7 +1221,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "理解命令列與使用 Bash",
"intro": [
- "在這些課程中學習命令列與使用 Bash。"
+ "在這些課程中學習命令列和使用 Bash。"
]
},
"workshop-bash-boilerplate": {
@@ -1517,6 +1517,12 @@
"在這個工作坊中,你將透過建造一個產生格式化員工證件並分析員工代碼的工具,練習 Python 字串操作的基礎。"
]
},
+ "workshop-employee-profile-validator": {
+ "title": "建置員工資料驗證器",
+ "intro": [
+ "在這個工作坊中,你將使用 Python 字串方法來驗證和格式化員工資料。"
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "數字與數學運算",
"intro": [
@@ -6478,6 +6484,12 @@
"在這個工作坊中,你將透過建置一個產生格式化員工證件並分析員工代碼的工具,練習 Python 字串操作的基礎。"
]
},
+ "workshop-employee-profile-validator": {
+ "title": "建置員工資料驗證器",
+ "intro": [
+ "在這個工作坊中,你將使用 Python 字串方法來驗證和格式化員工資料。"
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "數字與數學運算",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "建置一個 RPG 角色",
"intro": [
- "在這個實驗中,你將透過建置一個 RPG 角色來練習基本的 Python。"
+ "在這個實驗中,你將透過建置一個 RPG 角色來練習 Python 基礎。"
]
},
"review-python-basics": {
@@ -7006,7 +7018,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "理解命令列與使用 Bash",
"intro": [
- "在這些課程中學習命令列與使用 Bash。"
+ "在這些課程中學習命令列和使用 Bash。"
]
},
"workshop-bash-boilerplate": {
@@ -10407,6 +10419,359 @@
"english-only": "本區的課程僅提供英文版本。目前我們只能翻譯標題和介紹,課程內容尚未翻譯。",
"exam-english-only": "請注意,認證考試目前僅提供英文版本。其他課程則有部分語言版本。"
},
+ "python-programming-fundamentals": {
+ "title": "Python 程式設計基礎",
+ "intro": [
+ "本課程教授 Python 程式設計的基礎。",
+ "完成指定專案並通過考試,即可獲得 Python 程式設計基礎認證。"
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Python 程式設計基礎"
+ },
+ "modules": {
+ "python-basics": "Python 基礎",
+ "python-installation": "安裝 Python",
+ "python-loops-and-sequences": "迴圈與序列",
+ "python-dictionaries-and-sets": "字典與集合",
+ "lab-user-configuration-manager": "建置使用者設定管理器",
+ "python-error-handling": "錯誤處理",
+ "python-classes-and-objects": "類別與物件",
+ "lab-budget-app": "建置預算應用程式",
+ "python-object-oriented-programming": "物件導向程式設計(OOP)",
+ "lab-polygon-area-calculator": "建置多邊形面積計算器",
+ "review-python-programming-fundamentals": "Python 複習"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "建置你的第一個 Python 程式",
+ "intro": [
+ "在這個工作坊中,你將建置你的第一個 Python 程式。"
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Python 簡介",
+ "intro": [
+ "在這些課程中,你將了解 Python 是什麼以及其在業界的常見應用。"
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "理解變數與資料型別",
+ "intro": [
+ "在這些課程中,你將學習 Python 中的變數與資料型別。"
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "建置成績單列印器",
+ "intro": [
+ "在這個工作坊中,你將透過建立並列印簡單成績單的資料,練習使用 Python 的原始資料型別。"
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "字串簡介",
+ "intro": ["在這些課程中,你將學習 Python 中的字串。"]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "建置員工資料產生器",
+ "intro": [
+ "在這個工作坊中,你將透過建置一個產生格式化員工證件並分析員工代碼的工具,練習 Python 字串操作基礎。"
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "建置員工資料驗證器",
+ "intro": [
+ "在這個工作坊中,你將使用 Python 字串方法來驗證和格式化員工資料。"
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "數字與數學運算",
+ "intro": [
+ "在這些課程中,你將學習 Python 中的數字與數學運算。"
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "建置帳單分攤器",
+ "intro": [
+ "在這個工作坊中,你將建置一個帳單分攤器,練習使用 Python 處理數字與數學運算。"
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "布林值與條件判斷",
+ "intro": [
+ "在這些課程中,你將學習 Python 中的布林值與條件判斷。"
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "建置電影票訂票計算器",
+ "intro": [
+ "在這個工作坊中,你將透過建置電影票訂票計算器,練習使用 Python 的布林值與條件敘述。"
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "建置旅遊天氣規劃器",
+ "intro": [
+ "在這個實驗中,你將使用條件判斷建置旅遊天氣規劃器。"
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "理解函式與作用域",
+ "intro": [
+ "在這些課程中,你將學習 Python 中的函式與作用域。"
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "建置廚房庫存追蹤器",
+ "intro": [
+ "在這個工作坊中,你將透過建置廚房庫存追蹤器,練習使用 Python 的函式與作用域。"
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "建置折扣套用函式",
+ "intro": [
+ "在這個實驗中,你將透過建置一個折扣計算器來練習 Python 基礎。"
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "建置凱薩密碼",
+ "intro": [
+ "在這個工作坊中,你將使用字串、條件判斷、函式等 Python 基礎概念建置凱薩密碼。"
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "建置 RPG 角色",
+ "intro": [
+ "在這個實驗中,你將透過建置一個 RPG 角色來練習 Python 基礎。"
+ ]
+ },
+ "review-python-basics": {
+ "title": "Python 基礎複習",
+ "intro": [
+ "在接受 Python 基礎測驗前,你應該先複習所學內容。",
+ "在這個複習頁面中,你將複習字串、函式、比較運算子等內容。"
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Python 基礎測驗",
+ "intro": [
+ "透過此測驗檢驗你對 Python 基礎的理解。"
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "安裝 Python 並在本機執行程式碼",
+ "intro": [
+ "在這些課程中,你將學習如何在本機裝置安裝 Python 並執行程式碼。"
+ ]
+ },
+ "review-python-installation": {
+ "title": "Python 安裝複習",
+ "intro": [
+ "在接受本機 Python 操作測驗前,你應該先複習課程涵蓋的概念。"
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Python 安裝測驗",
+ "intro": [
+ "透過此測驗檢驗你對本機安裝 Python 的理解。"
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "使用迴圈與序列",
+ "intro": [
+ "在這些課程中,學習如何使用迴圈與序列。"
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "建置密碼提取器",
+ "intro": [
+ "在這個工作坊中,你將建置一個函式來提取詩中隱藏的秘密密碼。"
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "建置數字樣式產生器",
+ "intro": ["在這個實驗中,你將建置一個數字樣式產生器。"]
+ },
+ "review-loops-and-sequences": {
+ "title": "迴圈與序列複習",
+ "intro": [
+ "在接受迴圈與序列測驗前,你應該先複習所學內容。",
+ "打開此頁面複習迴圈、列表、元組及其常用方法的概念。"
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "迴圈與序列測驗",
+ "intro": [
+ "透過此測驗檢驗你對 Python 迴圈與序列的理解。"
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "使用字典與集合",
+ "intro": [
+ "在這些課程中,學習如何使用字典與集合。"
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "模組操作",
+ "intro": ["在這些課程中學習如何操作模組。"]
+ },
+ "workshop-medical-data-validator": {
+ "title": "建置醫療資料驗證器",
+ "intro": [
+ "在這個工作坊中,你將練習操作字典和集合,同時驗證一組醫療資料。"
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "字典與集合複習",
+ "intro": [
+ "在接受字典與集合測驗前,你應該先複習相關內容。",
+ "打開此頁面複習字典、集合以及如何匯入模組的概念。"
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "字典與集合測驗",
+ "intro": [
+ "透過此測驗檢驗你對 Python 中字典與集合的理解。"
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "建置使用者設定管理器",
+ "intro": [
+ "在此實驗中,你將練習在 Python 中操作字典。"
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "理解錯誤處理",
+ "intro": [
+ "在這些課程中,你將學習 Python 的錯誤處理。你會了解不同類型的錯誤、良好的偵錯習慣、什麼是例外,以及如何處理例外。"
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "除錯 ISBN 驗證器",
+ "intro": [
+ "在此實驗中,你將從一個有錯誤的應用程式開始,並需要除錯修正錯誤直到它正常運作。"
+ ]
+ },
+ "review-error-handling": {
+ "title": "錯誤處理複習",
+ "intro": [
+ "在接受錯誤處理測驗前,你應該先複習相關內容。"
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "錯誤處理測驗",
+ "intro": [
+ "透過此測驗檢驗你對 Python 中錯誤處理的理解。"
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "類別與物件",
+ "intro": ["在這些課程中學習類別與物件。"]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "建置樂器庫存系統",
+ "intro": [
+ "在這個工作坊中,你將透過建置簡單的樂器庫存系統,學習 Python 中的類別、物件和方法。"
+ ]
+ },
+ "lab-planet-class": {
+ "title": "建置行星類別",
+ "intro": [
+ "在此實驗中,你將創建一個代表行星的類別。"
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "建置電子郵件模擬器",
+ "intro": [
+ "在這個工作坊中,你將透過建置一個模擬不同使用者間發送、接收和管理電子郵件的模擬器,實作類別與物件。"
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "類別與物件複習",
+ "intro": [
+ "在接受類別與物件測驗前,你應該先複習相關內容。",
+ "打開此頁面複習類別如何運作、什麼是物件、方法、屬性、特殊方法等概念。"
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "類別與物件測驗",
+ "intro": [
+ "透過此測驗檢驗你對 Python 中類別與物件的理解。"
+ ]
+ },
+ "lab-budget-app": {
+ "title": "建置預算應用程式",
+ "intro": [
+ "在此實驗中,你將建置一個預算應用程式,並練習為該類別創建類別和方法。"
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "理解物件導向程式設計與封裝",
+ "intro": [
+ "在這些課程中學習理解物件導向程式設計與封裝。"
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "建置薪資追蹤系統",
+ "intro": [
+ "在這個工作坊中,你將透過建置員工薪資追蹤系統,練習封裝、屬性和其他物件導向程式設計概念。"
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "建置遊戲角色屬性追蹤器",
+ "intro": [
+ "在此實驗中,你將使用物件導向程式設計建置一個具有不同屬性的遊戲角色。"
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "理解繼承與多型",
+ "intro": [
+ "在這些課程中學習理解繼承與多型。"
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "建置媒體目錄",
+ "intro": [
+ "在這個工作坊中,你將使用物件導向程式設計原則創建一個媒體目錄應用程式。"
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "理解抽象性",
+ "intro": ["在這些課程中學習理解抽象性。"]
+ },
+ "workshop-discount-calculator": {
+ "title": "建置折扣計算器",
+ "intro": [
+ "在這個工作坊中,你將透過抽象基礎類別建置一個靈活的折扣定價計算器,允許多種折扣演算法可互換使用,而無需修改核心邏輯。"
+ ]
+ },
+ "lab-player-interface": {
+ "title": "建置播放器介面",
+ "intro": [
+ "在此實驗中,你將使用 abc 模組建置播放器介面。"
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "物件導向程式設計複習",
+ "intro": [
+ "在接受物件導向程式設計測驗前,你應該先複習相關內容。"
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "物件導向程式設計測驗",
+ "intro": [
+ "透過此測驗檢驗你對 Python 中物件導向程式設計的理解。"
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "建置多邊形面積計算器",
+ "intro": [
+ "在此實驗中,你將使用物件導向程式設計計算不同多邊形(如正方形和長方形)的面積。"
+ ]
+ },
+ "review-python": {
+ "title": "Python 程式設計基礎複習",
+ "intro": ["複習 Python 概念以準備即將到來的考試。"]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "演算法與資料結構認證",
"intro": [
diff --git a/client/chinese/intro.json b/client/chinese/intro.json
index 7ae51a468b6..ca6161edf60 100644
--- a/client/chinese/intro.json
+++ b/client/chinese/intro.json
@@ -1221,7 +1221,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "理解命令行与 Bash 操作",
"intro": [
- "在这些课程中学习命令行和 Bash 的使用。"
+ "在这些课程中了解命令行和使用 Bash。"
]
},
"workshop-bash-boilerplate": {
@@ -1517,6 +1517,12 @@
"在本工作坊中,你将通过构建一个生成格式化员工徽章并分析员工代码的工具,练习 Python 字串操作基础。"
]
},
+ "workshop-employee-profile-validator": {
+ "title": "创建员工资料验证器",
+ "intro": [
+ "在本工作坊中,你将使用 Python 字串方法来验证和格式化员工资料中的数据。"
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "数字与数学运算",
"intro": [
@@ -6478,6 +6484,12 @@
"在本工作坊中,你将通过创建一个生成格式化员工徽章并分析员工代码的工具来练习 Python 字串操作的基础。"
]
},
+ "workshop-employee-profile-validator": {
+ "title": "创建员工资料验证器",
+ "intro": [
+ "在本工作坊中,你将使用 Python 字串方法来验证和格式化员工资料中的数据。"
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "数字和数学运算",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "创建一个 RPG 角色",
"intro": [
- "在本实验中,你将通过创建一个 RPG 角色来练习基本的 Python。"
+ "在本实验中,你将通过创建一个 RPG 角色来练习基础 Python。"
]
},
"review-python-basics": {
@@ -7006,7 +7018,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "理解命令行和使用 Bash",
"intro": [
- "在这些课程中学习命令行和 Bash 的使用。"
+ "在这些课程中了解命令行和使用 Bash。"
]
},
"workshop-bash-boilerplate": {
@@ -10407,6 +10419,359 @@
"english-only": "本节课程仅提供英文版本。目前我们只能翻译标题和介绍,课程内容暂未翻译。",
"exam-english-only": "请注意,认证考试目前仅提供英文版本。其他课程则有部分语言版本。"
},
+ "python-programming-fundamentals": {
+ "title": "Python 编程基础",
+ "intro": [
+ "本课程教授 Python 编程的基础知识。",
+ "完成必修项目并通过考试即可获得 Python 编程基础认证。"
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Python 编程基础"
+ },
+ "modules": {
+ "python-basics": "Python 基础",
+ "python-installation": "安装 Python",
+ "python-loops-and-sequences": "循环和序列",
+ "python-dictionaries-and-sets": "字典和集合",
+ "lab-user-configuration-manager": "创建用户配置管理器",
+ "python-error-handling": "误差处理",
+ "python-classes-and-objects": "类和对象",
+ "lab-budget-app": "创建预算应用",
+ "python-object-oriented-programming": "面向对象编程(OOP)",
+ "lab-polygon-area-calculator": "创建多边形面积计算器",
+ "review-python-programming-fundamentals": "Python 复习"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "创建你的第一个 Python 程序",
+ "intro": [
+ "在本工作坊中,你将创建你的第一个 Python 程序。"
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Python 入门",
+ "intro": [
+ "在这些课程中,你将了解 Python 是什么以及其在行业中的常见用途。"
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "理解变量和数据类型",
+ "intro": [
+ "在这些课程中,你将学习 Python 中的变量和数据类型。"
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "创建成绩单打印器",
+ "intro": [
+ "在本工作坊中,你将通过创建和打印简单成绩单的数据来练习使用 Python 的原语数据类型。"
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "字串入门",
+ "intro": ["在这些课程中,你将学习 Python 中的字串。"]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "创建员工资料生成器",
+ "intro": [
+ "在本工作坊中,你将通过创建一个生成格式化员工徽章并分析员工代码的工具,练习 Python 字串操作的基础知识。"
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "创建员工资料验证器",
+ "intro": [
+ "在本工作坊中,你将使用 Python 字串方法来验证和格式化员工资料中的数据。"
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "数字和数学运算",
+ "intro": [
+ "在这些课程中,你将学习 Python 中的数字和数学运算。"
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "创建账单分摊器",
+ "intro": [
+ "在本工作坊中,你将创建一个账单分摊器,练习使用 Python 处理数字和数学运算。"
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "布尔值和条件式",
+ "intro": [
+ "在这些课程中,你将学习 Python 中的布尔值和条件式。"
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "创建电影票预订计算器",
+ "intro": [
+ "在本工作坊中,你将通过创建电影票预订计算器,练习使用 Python 的布尔值和条件语句。"
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "创建旅行天气规划器",
+ "intro": [
+ "在本实验中,你将使用条件式创建一个旅行天气规划器。"
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "理解函数和作用域",
+ "intro": [
+ "在这些课程中,你将学习 Python 中的函数和作用域。"
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "创建厨房库存追踪器",
+ "intro": [
+ "在本工作坊中,你将通过创建厨房库存追踪器,练习使用 Python 的函数和作用域。"
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "创建应用折扣函数",
+ "intro": [
+ "在本实验中,你将通过创建一个计算器来应用价格折扣,练习基础 Python。"
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "创建凯撒密码",
+ "intro": [
+ "在本工作坊中,你将使用基础 Python 概念如字串、条件式、函数等,创建一个凯撒密码。"
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "创建 RPG 角色",
+ "intro": [
+ "在本实验中,你将通过创建一个 RPG 角色来练习基础 Python。"
+ ]
+ },
+ "review-python-basics": {
+ "title": "Python 基础复习",
+ "intro": [
+ "在进行 Python 基础测验前,你应该复习已学内容。",
+ "在此复习页面中,你将复习字串、函数、比较操作符等内容。"
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Python 基础测验",
+ "intro": [
+ "通过此测验测试你对 Python 基础的掌握。"
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "安装 Python 并在本地运行代码",
+ "intro": [
+ "在这些课程中,你将学习如何在本地设备安装 Python 并运行代码。"
+ ]
+ },
+ "review-python-installation": {
+ "title": "Python 安装复习",
+ "intro": [
+ "在进行本地 Python 操作测验前,你应该复习课程中涵盖的概念。"
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Python 安装测验",
+ "intro": [
+ "通过此测验测试你对本地安装 Python 的掌握。"
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "使用循环和序列",
+ "intro": [
+ "在这些课程中,学习如何使用循环和序列。"
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "创建密码提取器",
+ "intro": [
+ "在本工作坊中,你将创建一个函数来提取隐藏在诗歌中的秘密密码。"
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "创建数字模式生成器",
+ "intro": ["在本实验中,你将创建一个数字模式生成器。"]
+ },
+ "review-loops-and-sequences": {
+ "title": "循环和序列复习",
+ "intro": [
+ "在进行循环和序列测验前,你应该复习已学内容。",
+ "打开此页面复习循环、列表、元组及其常用方法的相关概念。"
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "循环和序列测验",
+ "intro": [
+ "通过此测验测试你对 Python 中循环和序列的掌握。"
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "使用字典和集合",
+ "intro": [
+ "在这些课程中,学习如何使用字典和集合。"
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "使用模块",
+ "intro": ["在这些课程中学习如何使用模块。"]
+ },
+ "workshop-medical-data-validator": {
+ "title": "创建医疗数据验证器",
+ "intro": [
+ "在本工作坊中,你将练习使用字典和集合,同时验证一组医疗数据。"
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "字典和集合复习",
+ "intro": [
+ "在进行字典和集合测验之前,你应该复习相关内容。",
+ "打开此页面复习有关字典、集合以及如何导入模块的概念。"
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "字典和集合测验",
+ "intro": [
+ "通过此测验测试你对 Python 中字典和集合的理解。"
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "创建用户配置管理器",
+ "intro": [
+ "在本实验中,你将练习使用 Python 中的字典。"
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "理解错误处理",
+ "intro": [
+ "在这些课程中,你将学习 Python 中的错误处理。你将了解不同类型的错误、一些良好的调试实践、什么是异常以及如何处理它们。"
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "调试 ISBN 验证器",
+ "intro": [
+ "在本实验中,你将从一个有错误的应用开始,调试并修复错误,直到它正常工作。"
+ ]
+ },
+ "review-error-handling": {
+ "title": "错误处理复习",
+ "intro": [
+ "在进行错误处理测验之前,你应该复习相关内容。"
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "错误处理测验",
+ "intro": [
+ "通过此测验测试你对 Python 中错误处理的理解。"
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "类和对象",
+ "intro": ["在这些课程中学习类和对象。"]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "创建乐器库存",
+ "intro": [
+ "在本工作坊中,你将通过创建一个简单的乐器库存,学习 Python 中的类、对象和方法。"
+ ]
+ },
+ "lab-planet-class": {
+ "title": "创建行星类",
+ "intro": [
+ "在本实验中,你将创建一个表现行星的类。"
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "创建电子邮件模拟器",
+ "intro": [
+ "在本工作坊中,你将通过构建一个模拟不同用户之间发送、接收和管理电子邮件的电子邮件模拟器,来实现类和对象。"
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "类和对象复习",
+ "intro": [
+ "在进行类和对象测验之前,你应该复习相关内容。",
+ "打开此页面复习类的工作原理、对象、方法、属性、特殊方法等概念。"
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "类和对象测验",
+ "intro": [
+ "通过此测验测试你对 Python 中类和对象的理解。"
+ ]
+ },
+ "lab-budget-app": {
+ "title": "创建预算应用",
+ "intro": [
+ "在本实验中,你将创建一个预算应用,并练习为该类创建类和方法。"
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "理解面向对象编程和封装",
+ "intro": [
+ "在这些课程中学习理解面向对象编程和封装。"
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "创建薪资跟踪器",
+ "intro": [
+ "在本工作坊中,你将通过创建一个员工薪资跟踪系统,练习封装、属性和其他面向对象编程概念。"
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "创建游戏角色属性跟踪器",
+ "intro": [
+ "在本实验中,你将使用面向对象编程创建一个具有不同属性的游戏角色。"
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "理解继承和多态",
+ "intro": [
+ "在这些课程中学习理解继承和多态。"
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "创建媒体目录",
+ "intro": [
+ "在本工作坊中,你将使用面向对象编程原则创建一个媒体目录应用。"
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "理解抽象",
+ "intro": ["在这些课程中学习理解抽象。"]
+ },
+ "workshop-discount-calculator": {
+ "title": "创建折扣计算器",
+ "intro": [
+ "在本工作坊中,你将通过抽象基类创建一个灵活的折扣定价计算器,允许多种折扣算法可互换应用而无需修改核心逻辑。"
+ ]
+ },
+ "lab-player-interface": {
+ "title": "创建播放器接口",
+ "intro": [
+ "在本实验中,你将使用 abc 模块创建一个播放器接口。"
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "面向对象编程复习",
+ "intro": [
+ "在进行面向对象编程测验之前,你应该复习相关内容。"
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "面向对象编程测验",
+ "intro": [
+ "通过此测验测试你对 Python 中面向对象编程的理解。"
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "创建多边形面积计算器",
+ "intro": [
+ "在本实验中,你将使用面向对象编程计算不同多边形(如正方形和矩形)的面积。"
+ ]
+ },
+ "review-python": {
+ "title": "Python 编程基础复习",
+ "intro": ["复习 Python 概念,为即将到来的考试做准备。"]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "算法与数据结构认证",
"intro": [
diff --git a/client/espanol/intro.json b/client/espanol/intro.json
index c5b728f34ec..892fb23e55f 100644
--- a/client/espanol/intro.json
+++ b/client/espanol/intro.json
@@ -1517,6 +1517,12 @@
"En este taller, practicarás los fundamentos de manipulación de cadenas en Python construyendo una herramienta que genera credenciales formateadas para empleados y analiza códigos de empleados."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Construye un validador de perfil de empleado",
+ "intro": [
+ "En este taller, usarás métodos de cadenas en Python para validar y formatear datos de un perfil de empleado."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Números y operaciones matemáticas",
"intro": [
@@ -6478,6 +6484,12 @@
"En este taller, practicarás los fundamentos de manipulación de cadenas en Python construyendo una herramienta que genera credenciales formateadas para empleados y analiza códigos de empleados."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Construye un validador de perfil de empleado",
+ "intro": [
+ "En este taller, usarás métodos de cadenas en Python para validar y formatear datos de un perfil de empleado."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Números y operaciones matemáticas",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "Crear un personaje de RPG",
"intro": [
- "En este laboratorio practicarás Python básico creando un personaje de RPG."
+ "En este laboratorio practicarás Python básico construyendo un personaje de RPG."
]
},
"review-python-basics": {
@@ -10407,6 +10419,359 @@
"english-only": "Los cursos en esta sección solo están disponibles en inglés. Por ahora solo podemos traducir los títulos y las introducciones, no las lecciones.",
"exam-english-only": "Ten en cuenta que el examen de certificación está disponible solo en inglés. El resto de los cursos están disponibles en algunos idiomas."
},
+ "python-programming-fundamentals": {
+ "title": "Fundamentos de programación en Python",
+ "intro": [
+ "Este curso enseña los fundamentos de la programación en Python.",
+ "Completa los proyectos requeridos y aprueba el examen para obtener la certificación en fundamentos de programación en Python."
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Fundamentos de programación en Python"
+ },
+ "modules": {
+ "python-basics": "Conceptos básicos de Python",
+ "python-installation": "Instalar Python",
+ "python-loops-and-sequences": "Ciclos y secuencias",
+ "python-dictionaries-and-sets": "Diccionarios y conjuntos",
+ "lab-user-configuration-manager": "Construye un gestor de configuración de usuario",
+ "python-error-handling": "Manejo de errores",
+ "python-classes-and-objects": "Clases y objetos",
+ "lab-budget-app": "Construye una app de presupuesto",
+ "python-object-oriented-programming": "Programación orientada a objetos (POO)",
+ "lab-polygon-area-calculator": "Construye un calculador de área de polígonos",
+ "review-python-programming-fundamentals": "Revisión de Python"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "Construye tu primer programa en Python",
+ "intro": [
+ "Para este taller, construirás tu primer programa en Python."
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Introducción a Python",
+ "intro": [
+ "En estas lecciones aprenderás qué es Python y sus usos comunes en la industria."
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "Entendiendo variables y tipos de datos",
+ "intro": [
+ "En estas lecciones aprenderás sobre variables y tipos de datos en Python."
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "Construye una impresora de boletas de calificaciones",
+ "intro": [
+ "En este taller practicarás con tipos de datos primitivos en Python creando e imprimiendo datos para una boleta de calificaciones simple."
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "Introducción a las cadenas",
+ "intro": ["En estas lecciones aprenderás sobre cadenas en Python."]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "Construye un generador de perfiles de empleado",
+ "intro": [
+ "En este taller practicarás los fundamentos de manipulación de cadenas en Python construyendo una herramienta que genera credenciales formateadas y analiza códigos de empleados."
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "Construye un validador de perfil de empleado",
+ "intro": [
+ "En este taller, usarás métodos de cadenas en Python para validar y formatear datos de un perfil de empleado."
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "Números y operaciones matemáticas",
+ "intro": [
+ "En estas lecciones aprenderás sobre números y operaciones matemáticas en Python."
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "Construye un divisor de cuentas",
+ "intro": [
+ "En este taller construirás un divisor de cuentas para practicar con números y operaciones matemáticas en Python."
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "Booleanos y condicionales",
+ "intro": [
+ "En estas lecciones aprenderás sobre booleanos y condicionales en Python."
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "Construye un calculador de reservas de entradas de cine",
+ "intro": [
+ "En este taller practicarás cómo usar booleanos y sentencias condicionales en Python construyendo un calculador de reservas de entradas de cine."
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "Construye un planificador de clima para viajes",
+ "intro": [
+ "En este laboratorio construirás un planificador de clima para viajes usando condicionales."
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "Entendiendo funciones y ámbito",
+ "intro": [
+ "En estas lecciones aprenderás sobre funciones y ámbito en Python."
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "Construye un rastreador de inventario de cocina",
+ "intro": [
+ "En este taller practicarás con funciones y ámbito en Python construyendo un rastreador de inventario de cocina."
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "Construye una función para aplicar descuentos",
+ "intro": [
+ "En este laboratorio practicarás Python básico construyendo un calculador para aplicar un descuento a un precio."
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "Construye un cifrado César",
+ "intro": [
+ "En este taller construirás un cifrado César usando conceptos básicos de Python como cadenas, condicionales, funciones y más."
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "Construye un personaje de RPG",
+ "intro": [
+ "En este laboratorio practicarás Python básico construyendo un personaje de RPG."
+ ]
+ },
+ "review-python-basics": {
+ "title": "Revisión de conceptos básicos de Python",
+ "intro": [
+ "Antes de hacer el quiz sobre conceptos básicos de Python, deberías repasar lo que has aprendido.",
+ "En esta página de revisión repasarás el trabajo con cadenas, funciones, operadores de comparación y más."
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Quiz de conceptos básicos de Python",
+ "intro": [
+ "Pon a prueba lo que has aprendido sobre conceptos básicos de Python con este quiz."
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "Instalación de Python y ejecución de código localmente",
+ "intro": [
+ "En estas lecciones aprenderás cómo instalar Python en tu dispositivo local y ejecutar código localmente."
+ ]
+ },
+ "review-python-installation": {
+ "title": "Revisión de instalación de Python",
+ "intro": [
+ "Antes de hacer el quiz sobre trabajar con Python localmente, deberías repasar los conceptos cubiertos en las lecciones."
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Quiz de instalación de Python",
+ "intro": [
+ "Pon a prueba lo que has aprendido sobre la instalación local de Python con este quiz."
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "Trabajo con ciclos y secuencias",
+ "intro": [
+ "Aprende sobre el trabajo con ciclos y secuencias en estas lecciones."
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "Construye un extractor de pines",
+ "intro": [
+ "En este taller construirás una función para extraer pines secretos ocultos en poemas."
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "Construye un generador de patrones numéricos",
+ "intro": ["En este laboratorio construirás un generador de patrones numéricos."]
+ },
+ "review-loops-and-sequences": {
+ "title": "Revisión de ciclos y secuencias",
+ "intro": [
+ "Antes de hacer el quiz sobre ciclos y secuencias, deberías repasar lo que has aprendido sobre ellos.",
+ "Abre esta página para repasar conceptos sobre ciclos, listas, tuplas y algunos de sus métodos comunes."
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "Quiz de ciclos y secuencias",
+ "intro": [
+ "Pon a prueba lo que has aprendido sobre ciclos y secuencias en Python con este quiz."
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "Trabajo con diccionarios y conjuntos",
+ "intro": [
+ "Aprende sobre el trabajo con diccionarios y conjuntos en estas lecciones."
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "Trabajar con módulos",
+ "intro": ["Aprende a trabajar con módulos en estas lecciones."]
+ },
+ "workshop-medical-data-validator": {
+ "title": "Construye un validador de datos médicos",
+ "intro": [
+ "En este taller, practicarás con diccionarios y conjuntos mientras validas una colección de datos médicos."
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "Revisión de diccionarios y conjuntos",
+ "intro": [
+ "Antes de hacer el quiz sobre diccionarios y conjuntos, deberías repasar lo que has aprendido sobre ellos.",
+ "Abre esta página para repasar conceptos sobre diccionarios, conjuntos y cómo importar módulos."
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "Quiz de diccionarios y conjuntos",
+ "intro": [
+ "Pon a prueba lo que has aprendido sobre diccionarios y conjuntos en Python con este quiz."
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "Construye un gestor de configuración de usuario",
+ "intro": [
+ "En este laboratorio, practicarás con diccionarios en Python."
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "Comprender el manejo de errores",
+ "intro": [
+ "En estas lecciones aprenderás sobre el manejo de errores en Python. Conocerás los diferentes tipos de errores, buenas prácticas de depuración, qué son las excepciones y cómo manejarlas."
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "Depura un validador de ISBN",
+ "intro": [
+ "En este laboratorio comenzarás con una app con bugs, y deberás depurar y corregir los bugs hasta que funcione correctamente."
+ ]
+ },
+ "review-error-handling": {
+ "title": "Revisión del manejo de errores",
+ "intro": [
+ "Antes de hacer el quiz sobre manejo de errores, deberías repasar lo que has aprendido sobre ello."
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "Quiz de manejo de errores",
+ "intro": [
+ "Pon a prueba lo que has aprendido sobre manejo de errores en Python con este quiz."
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "Clases y objetos",
+ "intro": ["Aprende sobre clases y objetos en estas lecciones."]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "Construye un inventario de instrumentos musicales",
+ "intro": [
+ "En este taller aprenderás sobre clases, objetos y métodos en Python construyendo un inventario simple de instrumentos musicales."
+ ]
+ },
+ "lab-planet-class": {
+ "title": "Construye una clase planeta",
+ "intro": [
+ "En este laboratorio crearás una clase que representa un planeta."
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "Construye un simulador de correo electrónico",
+ "intro": [
+ "En este taller implementarás clases y objetos construyendo un simulador de correo electrónico que simula enviar, recibir y gestionar correos entre diferentes usuarios."
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "Revisión de clases y objetos",
+ "intro": [
+ "Antes de hacer el quiz sobre clases y objetos, deberías repasar lo que has aprendido sobre ellos.",
+ "Abre esta página para repasar conceptos como cómo funcionan las clases, qué son los objetos, métodos, atributos, métodos especiales y más."
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "Quiz de clases y objetos",
+ "intro": [
+ "Pon a prueba lo que has aprendido sobre clases y objetos en Python con este quiz."
+ ]
+ },
+ "lab-budget-app": {
+ "title": "Construye una app de presupuesto",
+ "intro": [
+ "En este laboratorio construirás una app de presupuesto y practicarás creando una clase y métodos para esa clase."
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "Comprender la programación orientada a objetos y la encapsulación",
+ "intro": [
+ "Aprende a comprender la programación orientada a objetos y la encapsulación en estas lecciones."
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "Construye un rastreador de salarios",
+ "intro": [
+ "En este taller practicarás encapsulación, propiedades y otros conceptos de programación orientada a objetos construyendo un sistema para rastrear salarios de empleados."
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "Construye un rastreador de estadísticas de personajes de juego",
+ "intro": [
+ "En este laboratorio construirás un personaje de juego con diferentes estadísticas usando programación orientada a objetos."
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "Comprender la herencia y el polimorfismo",
+ "intro": [
+ "Aprende a comprender la herencia y el polimorfismo en estas lecciones."
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "Construye un catálogo de medios",
+ "intro": [
+ "En este taller crearás una aplicación de catálogo de medios usando principios de programación orientada a objetos."
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "Comprender la abstracción",
+ "intro": ["Aprende a comprender la abstracción en estas lecciones."]
+ },
+ "workshop-discount-calculator": {
+ "title": "Construye una calculadora de descuentos",
+ "intro": [
+ "En este taller construirás una calculadora flexible de precios con descuento mediante clases base abstractas, permitiendo aplicar múltiples algoritmos de descuento intercambiables sin modificar la lógica central."
+ ]
+ },
+ "lab-player-interface": {
+ "title": "Construye una interfaz de reproductor",
+ "intro": [
+ "En este laboratorio usarás el módulo abc para construir una interfaz de reproductor."
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "Revisión de programación orientada a objetos",
+ "intro": [
+ "Antes de hacer el quiz sobre programación orientada a objetos, deberías repasar lo que has aprendido sobre ello."
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "Quiz de programación orientada a objetos",
+ "intro": [
+ "Pon a prueba lo que has aprendido sobre programación orientada a objetos en Python con este quiz."
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "Construye una calculadora de área de polígonos",
+ "intro": [
+ "En este laboratorio usarás programación orientada a objetos para calcular las áreas de diferentes polígonos como cuadrados y rectángulos."
+ ]
+ },
+ "review-python": {
+ "title": "Revisión de fundamentos de programación en Python",
+ "intro": ["Repasa conceptos de Python para prepararte para el próximo examen."]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "Certificación en algoritmos y estructura de datos",
"intro": [
diff --git a/client/german/intro.json b/client/german/intro.json
index 75293ce1429..a8f19bb761a 100644
--- a/client/german/intro.json
+++ b/client/german/intro.json
@@ -1517,6 +1517,12 @@
"In diesem Workshop üben Sie die Grundlagen der String-Manipulation in Python, indem Sie ein Tool erstellen, das formatierte Mitarbeiterausweise generiert und Mitarbeitercodes analysiert."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Erstellen Sie einen Validator für Mitarbeiterprofile",
+ "intro": [
+ "In diesem Workshop verwenden Sie Python-String-Methoden, um Daten aus einem Mitarbeiterprofil zu validieren und zu formatieren."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Zahlen und mathematische Operationen",
"intro": [
@@ -6478,6 +6484,12 @@
"In diesem Workshop üben Sie die Grundlagen der String-Manipulation in Python, indem Sie ein Tool erstellen, das formatierte Mitarbeiterausweise generiert und Mitarbeitercodes analysiert."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Erstellen Sie einen Validator für Mitarbeiterprofile",
+ "intro": [
+ "In diesem Workshop verwenden Sie Python-String-Methoden, um Daten aus einem Mitarbeiterprofil zu validieren und zu formatieren."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Zahlen und mathematische Operationen",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "Erstellen Sie einen RPG-Charakter",
"intro": [
- "In diesem Workshop üben Sie grundlegendes Python, indem Sie einen RPG-Charakter erstellen."
+ "In diesem Labor üben Sie grundlegendes Python, indem Sie einen RPG-Charakter erstellen."
]
},
"review-python-basics": {
@@ -7006,7 +7018,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "Verstehen der Befehlszeile und Arbeiten mit Bash",
"intro": [
- "Lernen Sie in diesen Lektionen die Befehlszeile und das Arbeiten mit Bash kennen."
+ "Lernen Sie in diesen Lektionen die Befehlszeile und die Arbeit mit Bash kennen."
]
},
"workshop-bash-boilerplate": {
@@ -10407,6 +10419,359 @@
"english-only": "Die Kurse in diesem Abschnitt sind nur auf Englisch verfügbar. Momentan können wir nur die Titel und Einleitungen übersetzen, nicht jedoch die Lektionen selbst.",
"exam-english-only": "Bitte beachten Sie, dass die Zertifizierungsprüfung derzeit nur auf Englisch verfügbar ist. Die übrigen Kurse sind in einigen Sprachen verfügbar."
},
+ "python-programming-fundamentals": {
+ "title": "Grundlagen der Python-Programmierung",
+ "intro": [
+ "Dieser Kurs vermittelt die Grundlagen der Python-Programmierung.",
+ "Schließen Sie die erforderlichen Projekte ab und bestehen Sie die Prüfung, um die Zertifizierung für Grundlagen der Python-Programmierung zu erhalten."
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Grundlagen der Python-Programmierung"
+ },
+ "modules": {
+ "python-basics": "Python-Grundlagen",
+ "python-installation": "Python installieren",
+ "python-loops-and-sequences": "Schleifen und Folgen",
+ "python-dictionaries-and-sets": "Wörterbücher und Sets",
+ "lab-user-configuration-manager": "Erstellen Sie einen Benutzerkonfigurationsmanager",
+ "python-error-handling": "Fehlerbehandlung",
+ "python-classes-and-objects": "Klassen und Objekte",
+ "lab-budget-app": "Erstellen Sie eine Budget-App",
+ "python-object-oriented-programming": "Objektorientierte Programmierung (OOP)",
+ "lab-polygon-area-calculator": "Erstellen Sie einen Polygon-Flächenrechner",
+ "review-python-programming-fundamentals": "Python-Überblick"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "Erstellen Sie Ihr erstes Python-Programm",
+ "intro": [
+ "Für diesen Workshop erstellen Sie Ihr erstes Programm in Python."
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Einführung in Python",
+ "intro": [
+ "In diesen Lektionen lernen Sie, was Python ist und wie es in der Branche verwendet wird."
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "Variablen und Datentypen verstehen",
+ "intro": [
+ "In diesen Lektionen lernen Sie Variablen und Datentypen in Python kennen."
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "Erstellen Sie einen Zeugnisdrucker",
+ "intro": [
+ "In diesem Workshop üben Sie den Umgang mit primitiven Datentypen in Python, indem Sie Daten für ein einfaches Zeugnis erstellen und ausgeben."
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "Einführung in Strings",
+ "intro": ["In diesen Lektionen lernen Sie Strings in Python kennen."]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "Erstellen Sie einen Generator für Mitarbeiterprofile",
+ "intro": [
+ "In diesem Workshop üben Sie die Grundlagen der String-Manipulation in Python, indem Sie ein Tool erstellen, das formatierte Mitarbeiterausweise generiert und Mitarbeitercodes analysiert."
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "Erstellen Sie einen Validator für Mitarbeiterprofile",
+ "intro": [
+ "In diesem Workshop verwenden Sie Python-String-Methoden, um Daten aus einem Mitarbeiterprofil zu validieren und zu formatieren."
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "Zahlen und mathematische Operationen",
+ "intro": [
+ "In diesen Lektionen lernen Sie Zahlen und mathematische Operationen in Python kennen."
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "Erstellen Sie einen Rechnungsteiler",
+ "intro": [
+ "In diesem Workshop erstellen Sie einen Rechnungsteiler, um den Umgang mit Zahlen und mathematischen Operationen in Python zu üben."
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "Booleans und Bedingungen",
+ "intro": [
+ "In diesen Lektionen lernen Sie Booleans und Bedingungen in Python kennen."
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "Erstellen Sie einen Kinokartenrechner",
+ "intro": [
+ "In diesem Workshop üben Sie die Verwendung von Booleans und bedingten Anweisungen in Python, indem Sie einen Kinokartenrechner erstellen."
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "Erstellen Sie einen Reise-Wetterplaner",
+ "intro": [
+ "In diesem Labor erstellen Sie einen Reise-Wetterplaner mit Bedingungen."
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "Funktionen und Gültigkeitsbereich verstehen",
+ "intro": [
+ "In diesen Lektionen lernen Sie Funktionen und Gültigkeitsbereich in Python kennen."
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "Erstellen Sie einen Kücheninventar-Tracker",
+ "intro": [
+ "In diesem Workshop üben Sie den Umgang mit Funktionen und Gültigkeitsbereich in Python, indem Sie einen Kücheninventar-Tracker erstellen."
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "Erstellen Sie eine Rabatt-Funktion",
+ "intro": [
+ "In diesem Labor üben Sie grundlegendes Python, indem Sie einen Rechner erstellen, der einen Rabatt auf einen Preis anwendet."
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "Erstellen Sie eine Caesar-Verschlüsselung",
+ "intro": [
+ "In diesem Workshop erstellen Sie eine Caesar-Verschlüsselung mit grundlegenden Python-Konzepten wie Strings, Bedingungen, Funktionen und mehr."
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "Erstellen Sie einen RPG-Charakter",
+ "intro": [
+ "In diesem Labor üben Sie grundlegendes Python, indem Sie einen RPG-Charakter erstellen."
+ ]
+ },
+ "review-python-basics": {
+ "title": "Überblick über Python-Grundlagen",
+ "intro": [
+ "Bevor Sie im Quiz zu Python-Grundlagen geprüft werden, sollten Sie das Gelernte noch einmal überprüfen.",
+ "Auf dieser Übersichtsseite wiederholen Sie den Umgang mit Strings, Funktionen, Vergleichsoperatoren und mehr."
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Quiz zu Python-Grundlagen",
+ "intro": [
+ "Testen Sie Ihr Wissen zu Python-Grundlagen mit diesem Quiz."
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "Python installieren und Code lokal ausführen",
+ "intro": [
+ "In diesen Lektionen lernen Sie, wie Sie Python auf Ihrem lokalen Gerät installieren und Code lokal ausführen."
+ ]
+ },
+ "review-python-installation": {
+ "title": "Überblick zur Python-Installation",
+ "intro": [
+ "Bevor Sie im Quiz zum lokalen Arbeiten mit Python geprüft werden, sollten Sie die in den Lektionen behandelten Konzepte wiederholen."
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Quiz zur Python-Installation",
+ "intro": [
+ "Testen Sie Ihr Wissen zur lokalen Python-Installation mit diesem Quiz."
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "Arbeiten mit Schleifen und Folgen",
+ "intro": [
+ "Lernen Sie in diesen Lektionen den Umgang mit Schleifen und Folgen."
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "Erstellen Sie einen Pin-Extraktor",
+ "intro": [
+ "In diesem Workshop erstellen Sie eine Funktion, um geheime Pins zu extrahieren, die in Gedichten versteckt sind."
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "Erstellen Sie einen Zahlenmuster-Generator",
+ "intro": ["In diesem Labor erstellen Sie einen Zahlenmuster-Generator."]
+ },
+ "review-loops-and-sequences": {
+ "title": "Überblick zu Schleifen und Folgen",
+ "intro": [
+ "Bevor Sie im Quiz zu Schleifen und Folgen geprüft werden, sollten Sie das Gelernte noch einmal überprüfen.",
+ "Öffnen Sie diese Seite, um Konzepte zu Schleifen, Listen, Tuples und einigen ihrer gängigen Methoden zu wiederholen."
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "Quiz zu Schleifen und Folgen",
+ "intro": [
+ "Testen Sie Ihr Wissen zu Schleifen und Folgen in Python mit diesem Quiz."
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "Arbeiten mit Wörterbüchern und Sets",
+ "intro": [
+ "Lernen Sie in diesen Lektionen den Umgang mit Wörterbüchern und Sets."
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "Arbeiten mit Modulen",
+ "intro": ["Lernen Sie in diesen Lektionen, wie Sie mit Modulen arbeiten."]
+ },
+ "workshop-medical-data-validator": {
+ "title": "Erstellen Sie einen Validator für medizinische Daten",
+ "intro": [
+ "In diesem Workshop üben Sie den Umgang mit Dictionaries und Sets, während Sie eine Sammlung medizinischer Daten validieren."
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "Überblick über Dictionaries und Sets",
+ "intro": [
+ "Bevor Sie im Quiz zu Dictionaries und Sets geprüft werden, sollten Sie das Gelernte noch einmal überprüfen.",
+ "Öffnen Sie diese Seite, um Konzepte zu Dictionaries, Sets und dem Importieren von Modulen zu wiederholen."
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "Quiz zu Dictionaries und Sets",
+ "intro": [
+ "Testen Sie Ihr Wissen über Dictionaries und Sets in Python mit diesem Quiz."
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "Erstellen Sie einen Benutzerkonfigurationsmanager",
+ "intro": [
+ "In diesem Labor üben Sie den Umgang mit Dictionaries in Python."
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "Fehlerbehandlung verstehen",
+ "intro": [
+ "In diesen Lektionen lernen Sie die Fehlerbehandlung in Python kennen. Sie erfahren etwas über verschiedene Fehlertypen, gute Debugging-Praktiken, was Ausnahmen sind und wie man sie behandelt."
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "Debuggen Sie einen ISBN-Validator",
+ "intro": [
+ "In diesem Labor starten Sie mit einer fehlerhaften Anwendung und müssen die Bugs debuggen und beheben, bis sie richtig funktioniert."
+ ]
+ },
+ "review-error-handling": {
+ "title": "Überblick zur Fehlerbehandlung",
+ "intro": [
+ "Bevor Sie im Quiz zur Fehlerbehandlung geprüft werden, sollten Sie das Gelernte noch einmal überprüfen."
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "Quiz zur Fehlerbehandlung",
+ "intro": [
+ "Testen Sie Ihr Wissen über Fehlerbehandlung in Python mit diesem Quiz."
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "Klassen und Objekte",
+ "intro": ["Lernen Sie in diesen Lektionen Klassen und Objekte kennen."]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "Erstellen Sie ein Inventar für Musikinstrumente",
+ "intro": [
+ "In diesem Workshop lernen Sie Klassen, Objekte und Methoden in Python kennen, indem Sie ein einfaches Inventar für Musikinstrumente erstellen."
+ ]
+ },
+ "lab-planet-class": {
+ "title": "Erstellen Sie eine Planetenklasse",
+ "intro": [
+ "In diesem Labor erstellen Sie eine Klasse, die einen Planeten darstellt."
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "Erstellen Sie einen E-Mail-Simulator",
+ "intro": [
+ "In diesem Workshop implementieren Sie Klassen und Objekte, indem Sie einen E-Mail-Simulator bauen, der das Senden, Empfangen und Verwalten von E-Mails zwischen verschiedenen Nutzenden simuliert."
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "Überblick zu Klassen und Objekten",
+ "intro": [
+ "Bevor Sie im Quiz zu Klassen und Objekten geprüft werden, sollten Sie das Gelernte noch einmal überprüfen.",
+ "Öffnen Sie diese Seite, um Konzepte wie Funktionsweise von Klassen, Objekte, Methoden, Attribute, spezielle Methoden und mehr zu wiederholen."
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "Quiz zu Klassen und Objekten",
+ "intro": [
+ "Testen Sie Ihr Wissen über Klassen und Objekte in Python mit diesem Quiz."
+ ]
+ },
+ "lab-budget-app": {
+ "title": "Erstellen Sie eine Budget-App",
+ "intro": [
+ "In diesem Labor erstellen Sie eine Budget-App und üben das Erstellen einer Klasse und von Methoden für diese Klasse."
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "Objektorientierte Programmierung und Kapselung verstehen",
+ "intro": [
+ "Lernen Sie in diesen Lektionen die objektorientierte Programmierung und Kapselung kennen."
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "Erstellen Sie einen Gehalts-Tracker",
+ "intro": [
+ "In diesem Workshop üben Sie Kapselung, Eigenschaften und andere Konzepte der OOP, indem Sie ein Gehaltsverfolgungssystem für Mitarbeitende erstellen."
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "Erstellen Sie einen Tracker für Spielfigur-Statistiken",
+ "intro": [
+ "In diesem Labor erstellen Sie eine Spielfigur mit verschiedenen Statistiken unter Verwendung objektorientierter Programmierung."
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "Vererbung und Polymorphismus verstehen",
+ "intro": [
+ "Lernen Sie in diesen Lektionen Vererbung und Polymorphismus kennen."
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "Erstellen Sie einen Medienkatalog",
+ "intro": [
+ "In diesem Workshop erstellen Sie eine Medienkatalog-Anwendung unter Verwendung objektorientierter Programmiergrundsätze."
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "Abstraktion verstehen",
+ "intro": ["Lernen Sie in diesen Lektionen die Abstraktion kennen."]
+ },
+ "workshop-discount-calculator": {
+ "title": "Erstellen Sie einen Rabattrechner",
+ "intro": [
+ "In diesem Workshop erstellen Sie einen flexiblen Rabattpreisrechner durch abstrakte Basisklassen, der es ermöglicht, mehrere Rabattalgorithmen austauschbar anzuwenden, ohne die Kernlogik zu verändern."
+ ]
+ },
+ "lab-player-interface": {
+ "title": "Erstellen Sie ein Spieler-Interface",
+ "intro": [
+ "In diesem Labor verwenden Sie das abc-Modul, um ein Spieler-Interface zu erstellen."
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "Überblick zur objektorientierten Programmierung",
+ "intro": [
+ "Bevor Sie im Quiz zur objektorientierten Programmierung geprüft werden, sollten Sie das Gelernte noch einmal überprüfen."
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "Quiz zur objektorientierten Programmierung",
+ "intro": [
+ "Testen Sie Ihr Wissen über objektorientierte Programmierung in Python mit diesem Quiz."
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "Erstellen Sie einen Flächenrechner für Polygone",
+ "intro": [
+ "In diesem Labor verwenden Sie objektorientierte Programmierung, um die Flächen verschiedener Polygone wie Quadrate und Rechtecke zu berechnen."
+ ]
+ },
+ "review-python": {
+ "title": "Überblick zu den Grundlagen der Python-Programmierung",
+ "intro": ["Wiederholen Sie Python-Konzepte, um sich auf die bevorstehende Prüfung vorzubereiten."]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "Zertifizierung für Algorithmen und Datenstruktur",
"intro": [
diff --git a/client/italian/intro.json b/client/italian/intro.json
index 05fedd11cb2..3b63341b551 100644
--- a/client/italian/intro.json
+++ b/client/italian/intro.json
@@ -1221,7 +1221,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "Comprendere la riga di comando e lavorare con Bash",
"intro": [
- "Impara a conoscere la riga di comando e a lavorare con Bash in queste lezioni."
+ "Impara la riga di comando e come lavorare con Bash in queste lezioni."
]
},
"workshop-bash-boilerplate": {
@@ -1517,6 +1517,12 @@
"In questo laboratorio metterai in pratica le basi della manipolazione delle stringhe in Python costruendo uno strumento che genera badge dipendenti formattati e analizza codici dipendenti."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Crea un validatore di profili dipendenti",
+ "intro": [
+ "In questo workshop userai i metodi delle stringhe Python per convalidare e formattare i dati di un profilo dipendente."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Numeri e operazioni matematiche",
"intro": [
@@ -6478,6 +6484,12 @@
"In questo workshop, praticherai le basi della manipolazione delle stringhe in Python costruendo uno strumento che genera badge formattati per dipendenti e analizza codici dipendenti."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Crea un validatore di profili dipendenti",
+ "intro": [
+ "In questo workshop userai i metodi delle stringhe Python per convalidare e formattare i dati di un profilo dipendente."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Numeri e operazioni matematiche",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "Crea un personaggio RPG",
"intro": [
- "In questo laboratorio eserciterai le basi di Python creando un personaggio RPG."
+ "In questo laboratorio praticherai le basi di Python creando un personaggio RPG."
]
},
"review-python-basics": {
@@ -10407,6 +10419,359 @@
"english-only": "I corsi in questa sezione sono disponibili solo in inglese. Al momento possiamo tradurre solo titoli e introduzioni, non le lezioni.",
"exam-english-only": "Nota che l'esame di certificazione è attualmente disponibile solo in inglese. Il resto dei corsi è disponibile in alcune lingue."
},
+ "python-programming-fundamentals": {
+ "title": "Fondamenti di programmazione Python",
+ "intro": [
+ "Questo corso insegna i fondamenti della programmazione Python.",
+ "Completa i progetti richiesti e supera l'esame per ottenere la certificazione Fondamenti di programmazione Python."
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Fondamenti di programmazione Python"
+ },
+ "modules": {
+ "python-basics": "Basi di Python",
+ "python-installation": "Installa Python",
+ "python-loops-and-sequences": "Loop e sequenze",
+ "python-dictionaries-and-sets": "Dizionari e insiemi",
+ "lab-user-configuration-manager": "Crea un gestore di configurazione utente",
+ "python-error-handling": "Gestione degli errori",
+ "python-classes-and-objects": "Classi e oggetti",
+ "lab-budget-app": "Crea un'app per il budget",
+ "python-object-oriented-programming": "Programmazione orientata agli oggetti (OOP)",
+ "lab-polygon-area-calculator": "Crea un calcolatore dell'area di un poligono",
+ "review-python-programming-fundamentals": "Revisione di Python"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "Crea il tuo primo programma Python",
+ "intro": [
+ "Per questo workshop costruirai il tuo primo programma in Python."
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Introduzione a Python",
+ "intro": [
+ "In queste lezioni imparerai cos'è Python e i suoi usi comuni nell'industria."
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "Comprendere variabili e tipi di dati",
+ "intro": [
+ "In queste lezioni imparerai variabili e tipi di dati in Python."
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "Crea una stampante di pagelle",
+ "intro": [
+ "In questo workshop praticherai l'uso dei tipi di dati primitivi in Python creando e stampando dati per una semplice pagella."
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "Introduzione alle stringhe",
+ "intro": ["In queste lezioni imparerai le stringhe in Python."]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "Crea un generatore di profili dipendenti",
+ "intro": [
+ "In questo workshop praticherai i fondamenti della manipolazione delle stringhe in Python costruendo uno strumento che genera badge formattati per dipendenti e analizza codici dipendenti."
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "Crea un validatore di profili dipendenti",
+ "intro": [
+ "In questo workshop userai i metodi delle stringhe Python per convalidare e formattare i dati di un profilo dipendente."
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "Numeri e operazioni matematiche",
+ "intro": [
+ "In queste lezioni imparerai numeri e operazioni matematiche in Python."
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "Crea un divisore del conto",
+ "intro": [
+ "In questo workshop costruirai un divisore del conto per praticare l'uso di numeri e operazioni matematiche in Python."
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "Booleani e condizionali",
+ "intro": [
+ "In queste lezioni imparerai booleani e condizionali in Python."
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "Crea un calcolatore per prenotazione biglietti cinema",
+ "intro": [
+ "In questo workshop praticherai l'uso di booleani e istruzioni condizionali in Python costruendo un calcolatore per prenotazione biglietti cinema."
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "Crea un pianificatore meteo per viaggi",
+ "intro": [
+ "In questo laboratorio costruirai un pianificatore meteo per viaggi usando condizionali."
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "Comprendere funzioni e ambito",
+ "intro": [
+ "In queste lezioni imparerai funzioni e ambito in Python."
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "Crea un tracciatore di inventario cucina",
+ "intro": [
+ "In questo workshop praticherai l'uso di funzioni e ambito in Python costruendo un tracciatore di inventario cucina."
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "Crea una funzione per applicare sconti",
+ "intro": [
+ "In questo laboratorio praticherai le basi di Python costruendo un calcolatore per applicare uno sconto a un prezzo."
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "Crea un cifrario di Cesare",
+ "intro": [
+ "In questo workshop costruirai un cifrario di Cesare usando concetti base di Python come stringhe, condizionali, funzioni e altro."
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "Crea un personaggio RPG",
+ "intro": [
+ "In questo laboratorio praticherai le basi di Python creando un personaggio RPG."
+ ]
+ },
+ "review-python-basics": {
+ "title": "Revisione delle basi di Python",
+ "intro": [
+ "Prima di affrontare il quiz sulle basi di Python, dovresti rivedere ciò che hai imparato.",
+ "In questa pagina di revisione rivedrai l'uso di stringhe, funzioni, operatori di confronto e altro."
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Quiz sulle basi di Python",
+ "intro": [
+ "Metti alla prova ciò che hai imparato sulle basi di Python con questo quiz."
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "Installare Python ed eseguire codice localmente",
+ "intro": [
+ "In queste lezioni imparerai come installare Python sul tuo dispositivo locale ed eseguire codice localmente."
+ ]
+ },
+ "review-python-installation": {
+ "title": "Revisione dell'installazione di Python",
+ "intro": [
+ "Prima di affrontare il quiz sull'uso di Python localmente, dovresti rivedere i concetti trattati nelle lezioni."
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Quiz sull'installazione di Python",
+ "intro": [
+ "Metti alla prova ciò che hai imparato sull'installazione locale di Python con questo quiz."
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "Lavorare con loop e sequenze",
+ "intro": [
+ "Impara a lavorare con loop e sequenze in queste lezioni."
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "Crea un estrattore di pin",
+ "intro": [
+ "In questo workshop costruirai una funzione per estrarre pin segreti nascosti in poesie."
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "Crea un generatore di pattern numerici",
+ "intro": ["In questo laboratorio costruirai un generatore di pattern numerici."]
+ },
+ "review-loops-and-sequences": {
+ "title": "Revisione di loop e sequenze",
+ "intro": [
+ "Prima di affrontare il quiz su loop e sequenze, dovresti rivedere ciò che hai imparato su di essi.",
+ "Apri questa pagina per rivedere i concetti su loop, liste, tuple e alcuni dei loro metodi comuni."
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "Quiz su loop e sequenze",
+ "intro": [
+ "Metti alla prova ciò che hai imparato su loop e sequenze in Python con questo quiz."
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "Lavorare con dizionari e insiemi",
+ "intro": [
+ "Impara a lavorare con dizionari e insiemi in queste lezioni."
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "Lavorare con i moduli",
+ "intro": ["Impara a lavorare con i moduli in queste lezioni."]
+ },
+ "workshop-medical-data-validator": {
+ "title": "Crea un validatore di dati medici",
+ "intro": [
+ "In questo workshop, esercitati a usare dizionari e insiemi mentre convalidi una raccolta di dati medici."
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "Revisione di dizionari e insiemi",
+ "intro": [
+ "Prima di affrontare il quiz su dizionari e insiemi, rivedi ciò che hai imparato su di essi.",
+ "Apri questa pagina per rivedere i concetti su dizionari, insiemi e come importare moduli."
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "Quiz su dizionari e insiemi",
+ "intro": [
+ "Metti alla prova ciò che hai imparato su dizionari e insiemi in Python con questo quiz."
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "Crea un gestore di configurazione utente",
+ "intro": [
+ "In questo laboratorio, esercitati a usare dizionari in Python."
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "Comprendere la gestione degli errori",
+ "intro": [
+ "In queste lezioni, imparerai la gestione degli errori in Python. Scoprirai i diversi tipi di errori, alcune buone pratiche di debugging, cosa sono le eccezioni e come gestirle."
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "Esegui il debug di un validatore ISBN",
+ "intro": [
+ "In questo laboratorio, partirai da un'app con bug e dovrai eseguire il debug e correggere i bug finché non funziona correttamente."
+ ]
+ },
+ "review-error-handling": {
+ "title": "Revisione della gestione degli errori",
+ "intro": [
+ "Prima di affrontare il quiz sulla gestione degli errori, rivedi ciò che hai imparato a riguardo."
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "Quiz sulla gestione degli errori",
+ "intro": [
+ "Metti alla prova ciò che hai imparato sulla gestione degli errori in Python con questo quiz."
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "Classi e oggetti",
+ "intro": ["Impara le classi e gli oggetti in queste lezioni."]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "Crea un inventario di strumenti musicali",
+ "intro": [
+ "In questo workshop, imparerai classi, oggetti e metodi in Python costruendo un semplice inventario di strumenti musicali."
+ ]
+ },
+ "lab-planet-class": {
+ "title": "Crea una classe Pianeta",
+ "intro": [
+ "In questo laboratorio creerai una classe che rappresenta un pianeta."
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "Crea un simulatore di email",
+ "intro": [
+ "In questo workshop implementerai classi e oggetti costruendo un simulatore di email che simula l'invio, la ricezione e la gestione delle email tra diversi utenti."
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "Revisione di classi e oggetti",
+ "intro": [
+ "Prima di affrontare il quiz su classi e oggetti, rivedi ciò che hai imparato su di essi.",
+ "Apri questa pagina per rivedere concetti come il funzionamento delle classi, cosa sono gli oggetti, i metodi, gli attributi, i metodi speciali e altro."
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "Quiz su classi e oggetti",
+ "intro": [
+ "Metti alla prova ciò che hai imparato su classi e oggetti in Python con questo quiz."
+ ]
+ },
+ "lab-budget-app": {
+ "title": "Crea un'app per il budget",
+ "intro": [
+ "In questo laboratorio costruirai un'app per il budget ed eserciterai la creazione di una classe e dei metodi per quella classe."
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "Comprendere la programmazione orientata agli oggetti e l'incapsulamento",
+ "intro": [
+ "Impara a comprendere la programmazione orientata agli oggetti e l'incapsulamento in queste lezioni."
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "Crea un tracciatore di stipendi",
+ "intro": [
+ "In questo workshop eserciterai incapsulamento, proprietà e altri concetti OOP costruendo un sistema di monitoraggio degli stipendi per i dipendenti."
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "Crea un tracciatore di statistiche per personaggi di gioco",
+ "intro": [
+ "In questo laboratorio costruirai un personaggio di gioco con diverse statistiche usando la programmazione orientata agli oggetti."
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "Comprendere ereditarietà e polimorfismo",
+ "intro": [
+ "Impara a comprendere ereditarietà e polimorfismo in queste lezioni."
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "Crea un catalogo multimediale",
+ "intro": [
+ "In questo workshop creerai un'applicazione per catalogo multimediale usando i principi della programmazione orientata agli oggetti."
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "Comprendere l'astrazione",
+ "intro": ["Impara a comprendere l'astrazione in queste lezioni."]
+ },
+ "workshop-discount-calculator": {
+ "title": "Crea un calcolatore di sconti",
+ "intro": [
+ "In questo workshop costruirai un calcolatore di prezzi scontati flessibile tramite classi base astratte, permettendo di applicare più algoritmi di sconto in modo intercambiabile senza modificare la logica centrale."
+ ]
+ },
+ "lab-player-interface": {
+ "title": "Crea un'interfaccia giocatore",
+ "intro": [
+ "In questo laboratorio userai il modulo abc per costruire un'interfaccia giocatore."
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "Revisione della programmazione orientata agli oggetti",
+ "intro": [
+ "Prima di affrontare il quiz sulla programmazione orientata agli oggetti, rivedi ciò che hai imparato a riguardo."
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "Quiz sulla programmazione orientata agli oggetti",
+ "intro": [
+ "Metti alla prova ciò che hai imparato sulla programmazione orientata agli oggetti in Python con questo quiz."
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "Crea un calcolatore di area di poligoni",
+ "intro": [
+ "In questo laboratorio userai la programmazione orientata agli oggetti per calcolare le aree di diversi poligoni come quadrati e rettangoli."
+ ]
+ },
+ "review-python": {
+ "title": "Revisione dei fondamenti di programmazione Python",
+ "intro": ["Rivedi i concetti di Python per prepararti all'esame imminente."]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "Certificazione algoritmi e struttura dati",
"intro": [
diff --git a/client/japanese/intro.json b/client/japanese/intro.json
index 180967737c7..86c1a4e471e 100644
--- a/client/japanese/intro.json
+++ b/client/japanese/intro.json
@@ -1221,7 +1221,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "コマンドラインの理解とBashの操作",
"intro": [
- "これらのレッスンでコマンドラインとBashの操作について学びます。"
+ "これらのレッスンでコマンドラインとBashの使い方を学びましょう。"
]
},
"workshop-bash-boilerplate": {
@@ -1517,6 +1517,12 @@
"このワークショップでは、フォーマットされた従業員バッジを生成し、従業員コードを分析するツールを作りながら、Pythonの文字列操作の基本を練習します。"
]
},
+ "workshop-employee-profile-validator": {
+ "title": "従業員プロフィールバリデーターを作成する",
+ "intro": [
+ "このワークショップでは、Pythonの文字列メソッドを使って従業員プロフィールのデータを検証およびフォーマットします。"
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "数値と数学的演算",
"intro": [
@@ -6478,6 +6484,12 @@
"このワークショップでは、Pythonの文字列操作の基本を練習しながら、フォーマットされた従業員バッジを生成し、従業員コードを分析するツールを作成します。"
]
},
+ "workshop-employee-profile-validator": {
+ "title": "従業員プロフィールバリデーターを作成する",
+ "intro": [
+ "このワークショップでは、Pythonの文字列メソッドを使って従業員プロフィールのデータを検証およびフォーマットします。"
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "数値と数学的演算",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "RPGキャラクターを作成する",
"intro": [
- "このラボでは、RPGキャラクターを作成して基本的なPythonを練習します。"
+ "このラボでは、RPGキャラクターを作成してPythonの基本を練習します。"
]
},
"review-python-basics": {
@@ -7006,7 +7018,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "コマンドラインの理解とBashの操作",
"intro": [
- "このレッスンでコマンドラインとBashの使い方を学びます。"
+ "これらのレッスンでコマンドラインとBashの使い方を学びましょう。"
]
},
"workshop-bash-boilerplate": {
@@ -10407,6 +10419,359 @@
"english-only": "このセクションのコースは英語のみで提供されています。現在、タイトルと紹介文のみ翻訳可能で、レッスン自体は翻訳されていません。",
"exam-english-only": "認定試験は現在英語のみで提供されていることにご注意ください。他のコースは一部の言語で利用可能です。"
},
+ "python-programming-fundamentals": {
+ "title": "Pythonプログラミング基礎",
+ "intro": [
+ "このコースではPythonプログラミングの基礎を学びます。",
+ "必要なプロジェクトを完成させ、試験に合格してPythonプログラミング基礎認定を取得してください。"
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Pythonプログラミング基礎"
+ },
+ "modules": {
+ "python-basics": "Python基礎",
+ "python-installation": "Pythonのインストール",
+ "python-loops-and-sequences": "ループとシーケンス",
+ "python-dictionaries-and-sets": "辞書とセット",
+ "lab-user-configuration-manager": "ユーザー設定マネージャーを作成する",
+ "python-error-handling": "エラー処理",
+ "python-classes-and-objects": "クラスとオブジェクト",
+ "lab-budget-app": "予算アプリを作成する",
+ "python-object-oriented-programming": "オブジェクト指向プログラミング(OOP)",
+ "lab-polygon-area-calculator": "多角形の面積計算機を作成する",
+ "review-python-programming-fundamentals": "Pythonレビュー"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "最初のPythonプログラムを作成する",
+ "intro": [
+ "このワークショップでは、Pythonで最初のプログラムを作成します。"
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Python入門",
+ "intro": [
+ "これらのレッスンでPythonとは何か、業界での一般的な使い方を学びます。"
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "変数とデータ型の理解",
+ "intro": [
+ "これらのレッスンでPythonの変数とデータ型について学びます。"
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "成績表プリンターを作成する",
+ "intro": [
+ "このワークショップでは、Pythonの基本データ型を使って簡単な成績表のデータを作成し、出力する練習をします。"
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "文字列入門",
+ "intro": ["これらのレッスンでPythonの文字列について学びます。"]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "従業員プロフィールジェネレーターを作成する",
+ "intro": [
+ "このワークショップでは、Pythonの文字列操作の基礎を練習し、フォーマットされた従業員バッジを生成し、従業員コードを分析するツールを作成します。"
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "従業員プロフィールバリデーターを作成する",
+ "intro": [
+ "このワークショップでは、Pythonの文字列メソッドを使って従業員プロフィールのデータを検証およびフォーマットします。"
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "数値と数学的演算",
+ "intro": [
+ "これらのレッスンでPythonの数値と数学的演算について学びます。"
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "割り勘計算機を作成する",
+ "intro": [
+ "このワークショップでは、Pythonの数値と数学的演算を使って割り勘計算機を作成します。"
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "ブール値と条件分岐",
+ "intro": [
+ "これらのレッスンでPythonのブール値と条件分岐について学びます。"
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "映画チケット予約計算機を作成する",
+ "intro": [
+ "このワークショップでは、Pythonのブール値と条件文を使って映画チケット予約計算機を作成します。"
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "旅行天気プランナーを作成する",
+ "intro": [
+ "このラボでは、条件分岐を使って旅行天気プランナーを作成します。"
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "関数とスコープの理解",
+ "intro": [
+ "これらのレッスンでPythonの関数とスコープについて学びます。"
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "キッチン在庫トラッカーを作成する",
+ "intro": [
+ "このワークショップでは、Pythonの関数とスコープを使ってキッチン在庫トラッカーを作成します。"
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "割引適用関数を作成する",
+ "intro": [
+ "このラボでは、価格に割引を適用する計算機を作成してPythonの基本を練習します。"
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "シーザー暗号を作成する",
+ "intro": [
+ "このワークショップでは、文字列、条件分岐、関数などの基本的なPythonの概念を使ってシーザー暗号を作成します。"
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "RPGキャラクターを作成する",
+ "intro": [
+ "このラボでは、RPGキャラクターを作成してPythonの基本を練習します。"
+ ]
+ },
+ "review-python-basics": {
+ "title": "Python基礎レビュー",
+ "intro": [
+ "Python基礎のクイズを受ける前に、学んだ内容を復習してください。",
+ "このレビュー画面で、文字列、関数、比較演算子などの扱い方を復習します。"
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Python基礎クイズ",
+ "intro": [
+ "このクイズでPython基礎の理解度を試してください。"
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "Pythonのインストールとローカルでのコード実行",
+ "intro": [
+ "これらのレッスンで、ローカルデバイスにPythonをインストールし、コードを実行する方法を学びます。"
+ ]
+ },
+ "review-python-installation": {
+ "title": "Pythonインストールレビュー",
+ "intro": [
+ "Pythonをローカルで使うクイズを受ける前に、レッスンで学んだ内容を復習してください。"
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Pythonインストールクイズ",
+ "intro": [
+ "このクイズでPythonのローカルインストールについての理解度を試してください。"
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "ループとシーケンスの操作",
+ "intro": [
+ "これらのレッスンでループとシーケンスの操作について学びます。"
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "ピン抽出器を作成する",
+ "intro": [
+ "このワークショップでは、詩に隠された秘密のピンを抽出する関数を作成します。"
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "数字パターンジェネレーターを作成する",
+ "intro": ["このラボでは、数字パターンジェネレーターを作成します。"]
+ },
+ "review-loops-and-sequences": {
+ "title": "ループとシーケンスレビュー",
+ "intro": [
+ "ループとシーケンスのクイズを受ける前に、学んだ内容を復習してください。",
+ "このページを開いて、ループ、リスト、タプル、およびそれらの一般的なメソッドに関する概念を復習します。"
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "ループとシーケンスクイズ",
+ "intro": [
+ "このクイズでPythonのループとシーケンスの理解度を試してください。"
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "辞書とセットの操作",
+ "intro": [
+ "これらのレッスンで辞書とセットの操作について学びます。"
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "モジュールの操作",
+ "intro": ["これらのレッスンでモジュールの操作について学びましょう。"]
+ },
+ "workshop-medical-data-validator": {
+ "title": "医療データバリデーターを作成する",
+ "intro": [
+ "このワークショップでは、辞書とセットを使って医療データのコレクションを検証する練習をします。"
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "辞書とセットの復習",
+ "intro": [
+ "辞書とセットのクイズを受ける前に、学んだ内容を復習してください。",
+ "このページを開いて、辞書、セット、モジュールのインポートに関する概念を復習しましょう。"
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "辞書とセットのクイズ",
+ "intro": [
+ "このクイズでPythonの辞書とセットについて学んだことを試してください。"
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "ユーザー設定マネージャーを作成する",
+ "intro": [
+ "このラボでは、Pythonの辞書を使った操作を練習します。"
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "エラー処理の理解",
+ "intro": [
+ "これらのレッスンでPythonのエラー処理について学びます。さまざまなエラーの種類、良いデバッグの方法、例外とは何か、それらの処理方法を学びます。"
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "ISBNバリデーターのデバッグ",
+ "intro": [
+ "このラボでは、バグのあるアプリから始めて、バグをデバッグして修正し、正常に動作するようにします。"
+ ]
+ },
+ "review-error-handling": {
+ "title": "エラー処理の復習",
+ "intro": [
+ "エラー処理のクイズを受ける前に、学んだ内容を復習してください。"
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "エラー処理のクイズ",
+ "intro": [
+ "このクイズでPythonのエラー処理について学んだことを試してください。"
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "クラスとオブジェクト",
+ "intro": ["これらのレッスンでクラスとオブジェクトについて学びましょう。"]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "楽器在庫管理を作成する",
+ "intro": [
+ "このワークショップでは、Pythonのクラス、オブジェクト、メソッドについて学びながら、簡単な楽器在庫管理を作成します。"
+ ]
+ },
+ "lab-planet-class": {
+ "title": "惑星クラスを作成する",
+ "intro": [
+ "このラボでは、惑星を表すクラスを作成します。"
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "メールシミュレーターを作成する",
+ "intro": [
+ "このワークショップでは、クラスとオブジェクトを実装し、異なるユーザー間でメールの送受信や管理をシミュレートするメールシミュレーターを作成します。"
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "クラスとオブジェクトの復習",
+ "intro": [
+ "クラスとオブジェクトのクイズを受ける前に、学んだ内容を復習してください。",
+ "このページを開いて、クラスの仕組み、オブジェクト、メソッド、属性、特殊メソッドなどの概念を復習しましょう。"
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "クラスとオブジェクトのクイズ",
+ "intro": [
+ "このクイズでPythonのクラスとオブジェクトについて学んだことを試してください。"
+ ]
+ },
+ "lab-budget-app": {
+ "title": "予算アプリを作成する",
+ "intro": [
+ "このラボでは、予算アプリを作成し、そのクラスとメソッドの作成を練習します。"
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "オブジェクト指向プログラミングとカプセル化の理解",
+ "intro": [
+ "これらのレッスンでオブジェクト指向プログラミングとカプセル化の理解を深めましょう。"
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "給与トラッカーを作成する",
+ "intro": [
+ "このワークショップでは、カプセル化、プロパティ、その他のOOP概念を使って従業員の給与追跡システムを作成します。"
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "ゲームキャラクターのステータストラッカーを作成する",
+ "intro": [
+ "このラボでは、オブジェクト指向プログラミングを使って異なるステータスを持つゲームキャラクターを作成します。"
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "継承とポリモーフィズムの理解",
+ "intro": [
+ "これらのレッスンで継承とポリモーフィズムの理解を深めましょう。"
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "メディアカタログを作成する",
+ "intro": [
+ "このワークショップでは、オブジェクト指向プログラミングの原則を使ってメディアカタログアプリケーションを作成します。"
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "抽象化の理解",
+ "intro": ["これらのレッスンで抽象化の理解を深めましょう。"]
+ },
+ "workshop-discount-calculator": {
+ "title": "割引計算機を作成する",
+ "intro": [
+ "このワークショップでは、抽象基底クラスを使って柔軟な割引価格計算機を作成し、コアロジックを変更せずに複数の割引アルゴリズムを切り替えて適用できるようにします。"
+ ]
+ },
+ "lab-player-interface": {
+ "title": "プレイヤーインターフェースを作成する",
+ "intro": [
+ "このラボでは、abcモジュールを使ってプレイヤーインターフェースを作成します。"
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "オブジェクト指向プログラミングの復習",
+ "intro": [
+ "オブジェクト指向プログラミングのクイズを受ける前に、学んだ内容を復習してください。"
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "オブジェクト指向プログラミングのクイズ",
+ "intro": [
+ "このクイズでPythonのオブジェクト指向プログラミングについて学んだことを試してください。"
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "多角形面積計算機を作成する",
+ "intro": [
+ "このラボでは、オブジェクト指向プログラミングを使って正方形や長方形などの多角形の面積を計算します。"
+ ]
+ },
+ "review-python": {
+ "title": "Pythonプログラミング基礎の復習",
+ "intro": ["今後の試験に備えてPythonの概念を復習しましょう。"]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "アルゴリズムとデータ構造認定",
"intro": [
diff --git a/client/korean/intro.json b/client/korean/intro.json
index 3e3cfb9a530..1b027dfcc46 100644
--- a/client/korean/intro.json
+++ b/client/korean/intro.json
@@ -1221,7 +1221,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "명령줄 이해와 Bash 작업",
"intro": [
- "이 수업들에서 명령줄과 Bash 작업에 대해 배우세요."
+ "이 수업에서 명령줄과 Bash 사용법을 배우세요."
]
},
"workshop-bash-boilerplate": {
@@ -1517,6 +1517,12 @@
"이 워크숍에서 형식화된 직원 배지를 생성하고 직원 코드를 분석하는 도구를 만들어 Python 문자열 조작 기초를 연습하세요."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "직원 프로필 검증기 만들기",
+ "intro": [
+ "이 워크숍에서는 Python 문자열 메서드를 사용해 직원 프로필 데이터를 검증하고 형식을 맞추는 방법을 배우세요."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "숫자와 수학 연산",
"intro": [
@@ -6478,6 +6484,12 @@
"이 워크숍에서는 포맷된 직원 배지를 생성하고 직원 코드를 분석하는 도구를 만들어 Python 문자열 조작 기본을 연습합니다."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "직원 프로필 검증기 만들기",
+ "intro": [
+ "이 워크숍에서는 Python 문자열 메서드를 사용해 직원 프로필 데이터를 검증하고 형식을 맞추는 방법을 배우세요."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "숫자와 수학 연산",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "RPG 캐릭터 만들기",
"intro": [
- "이 실습에서는 RPG 캐릭터를 만들어 기본 Python을 연습하세요."
+ "이 실습에서 RPG 캐릭터를 만들어 기본 Python을 연습하세요."
]
},
"review-python-basics": {
@@ -7006,7 +7018,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "명령줄 이해와 배시 사용하기",
"intro": [
- "이 수업들에서 명령줄과 배시 사용법을 배우세요."
+ "이 수업에서 명령줄과 Bash 사용법을 배우세요."
]
},
"workshop-bash-boilerplate": {
@@ -10407,6 +10419,359 @@
"english-only": "이 섹션의 과정들은 영어로만 제공됩니다. 현재 제목과 소개만 번역할 수 있으며 수업 자체는 번역하지 못합니다.",
"exam-english-only": "인증 시험은 현재 영어로만 제공됩니다. 나머지 과정들은 일부 언어로 제공됩니다."
},
+ "python-programming-fundamentals": {
+ "title": "Python 프로그래밍 기초",
+ "intro": [
+ "이 과정에서는 Python 프로그래밍의 기초를 배웁니다.",
+ "필수 프로젝트를 완료하고 시험에 합격하면 Python 프로그래밍 기초 인증서를 받으세요."
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Python 프로그래밍 기초"
+ },
+ "modules": {
+ "python-basics": "Python 기초",
+ "python-installation": "Python 설치",
+ "python-loops-and-sequences": "반복문과 수열",
+ "python-dictionaries-and-sets": "사전과 집합",
+ "lab-user-configuration-manager": "사용자 구성 관리자 만들기",
+ "python-error-handling": "오류 처리",
+ "python-classes-and-objects": "클래스와 객체",
+ "lab-budget-app": "예산 앱 만들기",
+ "python-object-oriented-programming": "객체지향 프로그래밍 (OOP)",
+ "lab-polygon-area-calculator": "다각형 넓이 계산기 만들기",
+ "review-python-programming-fundamentals": "Python 복습"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "첫 Python 프로그램 만들기",
+ "intro": [
+ "이 워크숍에서 첫 Python 프로그램을 만드세요."
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Python 소개",
+ "intro": [
+ "이 수업에서 Python이 무엇인지와 업계에서의 일반적인 용도를 배우세요."
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "변수와 데이터 유형 이해하기",
+ "intro": [
+ "이 수업에서 Python의 변수와 데이터 유형에 대해 배우세요."
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "성적표 출력기 만들기",
+ "intro": [
+ "이 워크숍에서 간단한 성적표 데이터를 만들고 출력하며 Python의 원시 데이터 유형을 연습하세요."
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "문자열 소개",
+ "intro": ["이 수업에서 Python의 문자열에 대해 배우세요."]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "직원 프로필 생성기 만들기",
+ "intro": [
+ "이 워크숍에서 Python 문자열 조작 기초를 연습하며 형식화된 직원 배지를 생성하고 직원 코드를 분석하는 도구를 만드세요."
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "직원 프로필 검증기 만들기",
+ "intro": [
+ "이 워크숍에서는 Python 문자열 메서드를 사용해 직원 프로필 데이터를 검증하고 형식을 맞추는 방법을 배우세요."
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "숫자와 수학 연산",
+ "intro": [
+ "이 수업에서 Python의 숫자와 수학 연산에 대해 배우세요."
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "계산서 분할기 만들기",
+ "intro": [
+ "이 워크숍에서 Python의 숫자와 수학 연산을 연습하기 위해 계산서 분할기를 만드세요."
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "불리언과 조건문",
+ "intro": [
+ "이 수업에서 Python의 불리언과 조건문에 대해 배우세요."
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "영화 티켓 예약 계산기 만들기",
+ "intro": [
+ "이 워크숍에서 불리언과 조건문을 사용해 영화 티켓 예약 계산기를 만드세요."
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "여행 날씨 계획기 만들기",
+ "intro": [
+ "이 실습에서 조건문을 사용해 여행 날씨 계획기를 만드세요."
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "함수와 범위 이해하기",
+ "intro": [
+ "이 수업에서 Python의 함수와 범위에 대해 배우세요."
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "주방 재고 추적기 만들기",
+ "intro": [
+ "이 워크숍에서 함수와 범위를 사용해 주방 재고 추적기를 만드세요."
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "할인 적용 함수 만들기",
+ "intro": [
+ "이 실습에서 가격에 할인을 적용하는 계산기를 만들어 기본 Python을 연습하세요."
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "시저 암호 만들기",
+ "intro": [
+ "이 워크숍에서 문자열, 조건문, 함수 등 기본 Python 개념을 사용해 시저 암호를 만드세요."
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "RPG 캐릭터 만들기",
+ "intro": [
+ "이 실습에서 RPG 캐릭터를 만들어 기본 Python을 연습하세요."
+ ]
+ },
+ "review-python-basics": {
+ "title": "Python 기초 복습",
+ "intro": [
+ "Python 기초 퀴즈 전에 배운 내용을 복습하세요.",
+ "이 복습 페이지에서 문자열, 함수, 비교 연산자 등을 복습하세요."
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Python 기초 퀴즈",
+ "intro": [
+ "이 퀴즈로 Python 기초에 대해 배운 내용을 테스트하세요."
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "Python 설치 및 로컬에서 코드 실행하기",
+ "intro": [
+ "이 수업에서 로컬 장치에 Python을 설치하고 코드를 실행하는 방법을 배우세요."
+ ]
+ },
+ "review-python-installation": {
+ "title": "Python 설치 복습",
+ "intro": [
+ "로컬에서 Python 작업에 대한 퀴즈 전에 수업 내용을 복습하세요."
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Python 설치 퀴즈",
+ "intro": [
+ "이 퀴즈로 로컬에 Python 설치에 대해 배운 내용을 테스트하세요."
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "반복문과 수열 작업하기",
+ "intro": [
+ "이 수업에서 반복문과 수열 작업에 대해 배우세요."
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "핀 추출기 만들기",
+ "intro": [
+ "이 워크숍에서 시에 숨겨진 비밀 핀을 추출하는 함수를 만드세요."
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "숫자 패턴 생성기 만들기",
+ "intro": ["이 실습에서 숫자 패턴 생성기를 만드세요."]
+ },
+ "review-loops-and-sequences": {
+ "title": "반복문과 수열 복습",
+ "intro": [
+ "반복문과 수열 퀴즈 전에 배운 내용을 복습하세요.",
+ "이 페이지를 열어 반복문, 리스트, 튜플과 그 일반 메서드 개념을 복습하세요."
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "반복문과 수열 퀴즈",
+ "intro": [
+ "이 퀴즈로 Python의 반복문과 수열에 대해 배운 내용을 테스트하세요."
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "사전과 집합 작업하기",
+ "intro": [
+ "이 수업에서 사전과 집합 작업에 대해 배우세요."
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "모듈 작업하기",
+ "intro": ["이 수업에서 모듈 작업에 대해 배우세요."]
+ },
+ "workshop-medical-data-validator": {
+ "title": "의료 데이터 검증기 만들기",
+ "intro": [
+ "이 워크숍에서는 의료 데이터 모음을 검증하면서 딕셔너리와 세트를 다루는 연습을 하세요."
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "딕셔너리와 세트 복습",
+ "intro": [
+ "딕셔너리와 세트에 대해 퀴즈를 보기 전에 배운 내용을 복습하세요.",
+ "이 페이지를 열어 딕셔너리, 세트, 모듈 가져오기 개념을 복습하세요."
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "딕셔너리와 세트 퀴즈",
+ "intro": [
+ "이 퀴즈로 Python의 딕셔너리와 세트에 대해 배운 내용을 테스트하세요."
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "사용자 구성 관리자 만들기",
+ "intro": [
+ "이 실습에서 Python의 딕셔너리를 다루는 연습을 하세요."
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "오류 처리 이해하기",
+ "intro": [
+ "이 수업에서 Python의 오류 처리에 대해 배우세요. 다양한 오류 유형, 좋은 디버깅 방법, 예외가 무엇인지, 그리고 예외를 처리하는 방법을 배웁니다."
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "ISBN 검증기 디버그하기",
+ "intro": [
+ "이 실습에서는 버그가 있는 애플리케이션으로 시작해 버그를 디버그하고 수정하여 제대로 작동하게 만드세요."
+ ]
+ },
+ "review-error-handling": {
+ "title": "오류 처리 복습",
+ "intro": [
+ "오류 처리에 대해 퀴즈를 보기 전에 배운 내용을 복습하세요."
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "오류 처리 퀴즈",
+ "intro": [
+ "이 퀴즈로 Python의 오류 처리에 대해 배운 내용을 테스트하세요."
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "클래스와 객체",
+ "intro": ["이 수업에서 클래스와 객체에 대해 배우세요."]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "악기 재고 만들기",
+ "intro": [
+ "이 워크숍에서는 간단한 악기 재고를 만들어 Python의 클래스, 객체, 메서드에 대해 배우세요."
+ ]
+ },
+ "lab-planet-class": {
+ "title": "행성 클래스 만들기",
+ "intro": [
+ "이 실습에서 행성을 나타내는 클래스를 만드세요."
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "이메일 시뮬레이터 만들기",
+ "intro": [
+ "이 워크숍에서는 서로 다른 사용자 간 이메일을 보내고 받고 관리하는 이메일 시뮬레이터를 만들어 클래스와 객체를 구현하세요."
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "클래스와 객체 복습",
+ "intro": [
+ "클래스와 객체에 대해 퀴즈를 보기 전에 배운 내용을 복습하세요.",
+ "이 페이지를 열어 클래스 작동 방식, 객체, 메서드, 속성, 특수 메서드 등 개념을 복습하세요."
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "클래스와 객체 퀴즈",
+ "intro": [
+ "이 퀴즈로 Python의 클래스와 객체에 대해 배운 내용을 테스트하세요."
+ ]
+ },
+ "lab-budget-app": {
+ "title": "예산 앱 만들기",
+ "intro": [
+ "이 실습에서 예산 앱을 만들고 해당 클래스와 메서드를 만드는 연습을 하세요."
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "객체 지향 프로그래밍과 캡슐화 이해하기",
+ "intro": [
+ "이 수업에서 객체 지향 프로그래밍과 캡슐화에 대해 배우세요."
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "급여 추적기 만들기",
+ "intro": [
+ "이 워크숍에서는 캡슐화, 프로퍼티, 기타 OOP 개념을 연습하며 직원 급여 추적 시스템을 만드세요."
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "게임 캐릭터 능력치 추적기 만들기",
+ "intro": [
+ "이 실습에서 객체 지향 프로그래밍을 사용해 다양한 능력치를 가진 게임 캐릭터를 만드세요."
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "상속과 다형성 이해하기",
+ "intro": [
+ "이 수업에서 상속과 다형성에 대해 배우세요."
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "미디어 카탈로그 만들기",
+ "intro": [
+ "이 워크숍에서는 객체 지향 프로그래밍 원칙을 사용해 미디어 카탈로그 애플리케이션을 만드세요."
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "추상화 이해하기",
+ "intro": ["이 수업에서 추상화에 대해 배우세요."]
+ },
+ "workshop-discount-calculator": {
+ "title": "할인 계산기 만들기",
+ "intro": [
+ "이 워크숍에서는 추상 기본 클래스를 통해 유연한 할인 가격 계산기를 만들어 핵심 로직을 수정하지 않고 여러 할인 알고리즘을 교체하며 적용할 수 있게 하세요."
+ ]
+ },
+ "lab-player-interface": {
+ "title": "플레이어 인터페이스 만들기",
+ "intro": [
+ "이 실습에서 abc 모듈을 사용해 플레이어 인터페이스를 만드세요."
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "객체 지향 프로그래밍 복습",
+ "intro": [
+ "객체 지향 프로그래밍에 대해 퀴즈를 보기 전에 배운 내용을 복습하세요."
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "객체 지향 프로그래밍 퀴즈",
+ "intro": [
+ "이 퀴즈로 Python의 객체 지향 프로그래밍에 대해 배운 내용을 테스트하세요."
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "다각형 면적 계산기 만들기",
+ "intro": [
+ "이 실습에서 객체 지향 프로그래밍을 사용해 정사각형, 직사각형 같은 다양한 다각형의 면적을 계산하세요."
+ ]
+ },
+ "review-python": {
+ "title": "Python 프로그래밍 기초 복습",
+ "intro": ["다가오는 시험을 준비하기 위해 Python 개념을 복습하세요."]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "알고리즘과 자료 구조 인증서",
"intro": [
diff --git a/client/portuguese/intro.json b/client/portuguese/intro.json
index fc0334b7ed3..4a9a4daf697 100644
--- a/client/portuguese/intro.json
+++ b/client/portuguese/intro.json
@@ -1221,7 +1221,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "Entendendo a linha de comando e trabalhando com Bash",
"intro": [
- "Aprenda sobre a linha de comando e como trabalhar com Bash nessas lições."
+ "Aprenda sobre a linha de comando e como trabalhar com Bash nestas lições."
]
},
"workshop-bash-boilerplate": {
@@ -1517,6 +1517,12 @@
"Neste laboratório, você praticará os fundamentos da manipulação de strings em Python criando uma ferramenta que gera crachás formatados e analisa códigos de funcionários."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Construa um validador de perfil de funcionário",
+ "intro": [
+ "Nesta oficina, você usará métodos de string do Python para validar e formatar dados de um perfil de funcionário."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Números e operações matemáticas",
"intro": [
@@ -6478,6 +6484,12 @@
"Neste workshop, você vai praticar os fundamentos da manipulação de strings em Python criando uma ferramenta que gera crachás formatados de funcionários e analisa códigos de funcionários."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Construa um validador de perfil de funcionário",
+ "intro": [
+ "Nesta oficina, você usará métodos de string do Python para validar e formatar dados de um perfil de funcionário."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Números e operações matemáticas",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "Criar um personagem de RPG",
"intro": [
- "Neste laboratório, você vai praticar o básico de Python criando um personagem de RPG."
+ "Neste laboratório, você praticará o básico de Python construindo um personagem de RPG."
]
},
"review-python-basics": {
@@ -7006,7 +7018,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "Entendendo a linha de comando e trabalhando com Bash",
"intro": [
- "Aprenda sobre a linha de comando e como trabalhar com Bash nessas lições."
+ "Aprenda sobre a linha de comando e como trabalhar com Bash nestas lições."
]
},
"workshop-bash-boilerplate": {
@@ -10407,6 +10419,359 @@
"english-only": "Os cursos desta seção estão disponíveis apenas em inglês. No momento, só podemos traduzir os títulos e introduções, não as lições.",
"exam-english-only": "Observe que o exame de certificação está disponível atualmente apenas em inglês. O restante dos cursos está disponível em alguns idiomas."
},
+ "python-programming-fundamentals": {
+ "title": "Fundamentos da programação em Python",
+ "intro": [
+ "Este curso ensina os fundamentos da programação em Python.",
+ "Complete os projetos obrigatórios e passe no exame para obter a certificação Fundamentos da programação em Python."
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Fundamentos da programação em Python"
+ },
+ "modules": {
+ "python-basics": "Noções básicas de Python",
+ "python-installation": "Instalar Python",
+ "python-loops-and-sequences": "Loops e sequências",
+ "python-dictionaries-and-sets": "Dicionários e conjuntos",
+ "lab-user-configuration-manager": "Construa um gerenciador de configuração de usuário",
+ "python-error-handling": "Tratamento de erros",
+ "python-classes-and-objects": "Classes e objetos",
+ "lab-budget-app": "Construa um app de orçamento",
+ "python-object-oriented-programming": "Programação orientada a objetos (POO)",
+ "lab-polygon-area-calculator": "Construa uma calculadora de área de polígono",
+ "review-python-programming-fundamentals": "Revisão de Python"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "Construa seu primeiro programa em Python",
+ "intro": [
+ "Para esta oficina, você construirá seu primeiro programa em Python."
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Introdução ao Python",
+ "intro": [
+ "Nestas lições, você aprenderá o que é Python e seus usos comuns na indústria."
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "Entendendo variáveis e tipos de dados",
+ "intro": [
+ "Nestas lições, você aprenderá sobre variáveis e tipos de dados em Python."
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "Construa uma impressora de boletim escolar",
+ "intro": [
+ "Nesta oficina, você praticará trabalhar com tipos de dados primitivos em Python criando e imprimindo dados para um boletim simples."
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "Introdução às strings",
+ "intro": ["Nestas lições, você aprenderá sobre strings em Python."]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "Construa um gerador de perfil de funcionário",
+ "intro": [
+ "Nesta oficina, você praticará os fundamentos da manipulação de strings em Python construindo uma ferramenta que gera crachás formatados de funcionários e analisa códigos de funcionários."
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "Construa um validador de perfil de funcionário",
+ "intro": [
+ "Nesta oficina, você usará métodos de string do Python para validar e formatar dados de um perfil de funcionário."
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "Números e operações matemáticas",
+ "intro": [
+ "Nestas lições, você aprenderá sobre números e operações matemáticas em Python."
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "Construa um divisor de conta",
+ "intro": [
+ "Nesta oficina, você construirá um divisor de conta para praticar trabalhar com números e operações matemáticas em Python."
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "Booleanos e condicionais",
+ "intro": [
+ "Nestas lições, você aprenderá sobre booleanos e condicionais em Python."
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "Construa uma calculadora de reserva de ingressos de cinema",
+ "intro": [
+ "Nesta oficina, você praticará como usar booleanos e declarações condicionais em Python construindo uma calculadora de reserva de ingressos de cinema."
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "Construa um planejador de clima para viagens",
+ "intro": [
+ "Neste laboratório, você construirá um planejador de clima para viagens usando condicionais."
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "Entendendo funções e escopo",
+ "intro": [
+ "Nestas lições, você aprenderá sobre funções e escopo em Python."
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "Construa um rastreador de inventário de cozinha",
+ "intro": [
+ "Nesta oficina, você praticará trabalhar com funções e escopo em Python construindo um rastreador de inventário de cozinha."
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "Construa uma função para aplicar desconto",
+ "intro": [
+ "Neste laboratório, você praticará o básico de Python construindo uma calculadora para aplicar desconto a um preço."
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "Construa uma cifra de César",
+ "intro": [
+ "Nesta oficina, você construirá uma cifra de César usando conceitos básicos de Python como strings, condicionais, funções e mais."
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "Construa um personagem de RPG",
+ "intro": [
+ "Neste laboratório, você praticará o básico de Python construindo um personagem de RPG."
+ ]
+ },
+ "review-python-basics": {
+ "title": "Revisão de noções básicas de Python",
+ "intro": [
+ "Antes de fazer o quiz sobre noções básicas de Python, você deve revisar o que aprendeu.",
+ "Nesta página de revisão, você revisará o trabalho com strings, funções, operadores de comparação e mais."
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Quiz de noções básicas de Python",
+ "intro": [
+ "Teste o que aprendeu sobre noções básicas de Python com este quiz."
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "Instalando Python e executando código localmente",
+ "intro": [
+ "Nestas lições, você aprenderá como instalar Python no seu dispositivo local e executar código localmente."
+ ]
+ },
+ "review-python-installation": {
+ "title": "Revisão da instalação do Python",
+ "intro": [
+ "Antes de fazer o quiz sobre trabalhar com Python localmente, você deve revisar os conceitos abordados nas lições."
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Quiz de instalação do Python",
+ "intro": [
+ "Teste o que aprendeu sobre instalar Python localmente com este quiz."
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "Trabalhando com loops e sequências",
+ "intro": [
+ "Aprenda sobre trabalhar com loops e sequências nestas lições."
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "Construa um extrator de PIN",
+ "intro": [
+ "Nesta oficina, você construirá uma função para extrair PINs secretos escondidos em poemas."
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "Construa um gerador de padrão numérico",
+ "intro": ["Neste laboratório, você construirá um gerador de padrão numérico."]
+ },
+ "review-loops-and-sequences": {
+ "title": "Revisão de loops e sequências",
+ "intro": [
+ "Antes de fazer o quiz sobre loops e sequências, você deve revisar o que aprendeu sobre eles.",
+ "Abra esta página para revisar conceitos sobre loops, listas, tuplas e alguns de seus métodos comuns."
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "Quiz de loops e sequências",
+ "intro": [
+ "Teste o que aprendeu sobre loops e sequências em Python com este quiz."
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "Trabalhando com dicionários e conjuntos",
+ "intro": [
+ "Aprenda sobre trabalhar com dicionários e conjuntos nestas lições."
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "Trabalhando com módulos",
+ "intro": ["Aprenda a trabalhar com módulos nessas lições."]
+ },
+ "workshop-medical-data-validator": {
+ "title": "Construa um validador de dados médicos",
+ "intro": [
+ "Nesta oficina, você praticará o uso de dicionários e conjuntos enquanto valida uma coleção de dados médicos."
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "Revisão de dicionários e conjuntos",
+ "intro": [
+ "Antes de fazer o quiz sobre dicionários e conjuntos, revise o que aprendeu sobre eles.",
+ "Abra esta página para revisar conceitos sobre dicionários, conjuntos e como importar módulos."
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "Quiz de dicionários e conjuntos",
+ "intro": [
+ "Teste o que aprendeu sobre dicionários e conjuntos em Python com este quiz."
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "Construa um gerenciador de configuração de usuário",
+ "intro": [
+ "Neste laboratório, você praticará o uso de dicionários em Python."
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "Entendendo o tratamento de erros",
+ "intro": [
+ "Nessas lições, você aprenderá sobre tratamento de erros em Python. Vai conhecer os diferentes tipos de erros, boas práticas de depuração, o que são exceções e como tratá-las."
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "Depure um validador de ISBN",
+ "intro": [
+ "Neste laboratório, você começará com uma aplicação com bugs e precisará depurar e corrigir os bugs até que funcione adequadamente."
+ ]
+ },
+ "review-error-handling": {
+ "title": "Revisão de tratamento de erros",
+ "intro": [
+ "Antes de fazer o quiz sobre tratamento de erros, revise o que aprendeu sobre o assunto."
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "Quiz de tratamento de erros",
+ "intro": [
+ "Teste o que aprendeu sobre tratamento de erros em Python com este quiz."
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "Classes e objetos",
+ "intro": ["Aprenda sobre classes e objetos nessas lições."]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "Construa um inventário de instrumentos musicais",
+ "intro": [
+ "Nesta oficina, você aprenderá sobre classes, objetos e métodos em Python construindo um inventário simples de instrumentos musicais."
+ ]
+ },
+ "lab-planet-class": {
+ "title": "Construa uma classe planeta",
+ "intro": [
+ "Neste laboratório, você criará uma classe que representa um planeta."
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "Construa um simulador de e-mail",
+ "intro": [
+ "Nesta oficina, você implementará classes e objetos construindo um simulador de e-mail que simula o envio, recebimento e gerenciamento de e-mails entre diferentes usuários."
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "Revisão de classes e objetos",
+ "intro": [
+ "Antes de fazer o quiz sobre classes e objetos, revise o que aprendeu sobre eles.",
+ "Abra esta página para revisar conceitos como funcionamento das classes, o que são objetos, métodos, atributos, métodos especiais e mais."
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "Quiz de classes e objetos",
+ "intro": [
+ "Teste o que aprendeu sobre classes e objetos em Python com este quiz."
+ ]
+ },
+ "lab-budget-app": {
+ "title": "Construa um app de orçamento",
+ "intro": [
+ "Neste laboratório, você construirá um app de orçamento e praticará a criação de uma classe e métodos para essa classe."
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "Entendendo programação orientada a objetos e encapsulamento",
+ "intro": [
+ "Aprenda sobre programação orientada a objetos e encapsulamento nessas lições."
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "Construa um rastreador de salário",
+ "intro": [
+ "Nesta oficina, você praticará encapsulamento, propriedades e outros conceitos de POO construindo um sistema de rastreamento salarial para funcionários."
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "Construa um rastreador de estatísticas de personagem de jogo",
+ "intro": [
+ "Neste laboratório, você construirá um personagem de jogo com diferentes estatísticas usando programação orientada a objetos."
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "Entendendo herança e polimorfismo",
+ "intro": [
+ "Aprenda sobre herança e polimorfismo nessas lições."
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "Construa um catálogo de mídia",
+ "intro": [
+ "Nesta oficina, você criará uma aplicação de catálogo de mídia usando princípios de programação orientada a objetos."
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "Entendendo abstração",
+ "intro": ["Aprenda sobre abstração nessas lições."]
+ },
+ "workshop-discount-calculator": {
+ "title": "Construa uma calculadora de descontos",
+ "intro": [
+ "Nesta oficina, você construirá uma calculadora flexível de preços com desconto usando classes base abstratas, permitindo aplicar múltiplos algoritmos de desconto de forma intercambiável sem modificar a lógica principal."
+ ]
+ },
+ "lab-player-interface": {
+ "title": "Construa uma interface de jogador",
+ "intro": [
+ "Neste laboratório, você usará o módulo abc para construir uma interface de jogador."
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "Revisão de programação orientada a objetos",
+ "intro": [
+ "Antes de fazer o quiz sobre programação orientada a objetos, revise o que aprendeu sobre o assunto."
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "Quiz de programação orientada a objetos",
+ "intro": [
+ "Teste o que aprendeu sobre programação orientada a objetos em Python com este quiz."
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "Construa uma calculadora de área de polígono",
+ "intro": [
+ "Neste laboratório, você usará programação orientada a objetos para calcular as áreas de diferentes polígonos como quadrados e retângulos."
+ ]
+ },
+ "review-python": {
+ "title": "Revisão dos fundamentos de programação em Python",
+ "intro": ["Revise conceitos de Python para se preparar para o próximo exame."]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "Certificação em algoritmos e estrutura de dados",
"intro": [
diff --git a/client/swahili/intro.json b/client/swahili/intro.json
index 1c4c091b16f..c4edb0ed8cf 100644
--- a/client/swahili/intro.json
+++ b/client/swahili/intro.json
@@ -1221,7 +1221,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "Kuelewa Amri za Mstari na Kufanya kazi na Bash",
"intro": [
- "Jifunze kuhusu Amri za Mstari na Kufanya kazi na Bash katika mafundisho haya."
+ "Jifunze kuhusu mstari wa amri na kufanya kazi na Bash katika mafundisho haya."
]
},
"workshop-bash-boilerplate": {
@@ -1517,6 +1517,12 @@
"Katika warsha hii, utatumia misingi ya uendeshaji wa mfuatano wa herufi katika Python kwa kujenga chombo kinachotengeneza beji za mfanyakazi zilizo na muundo na kuchambua misimbo ya wafanyakazi."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Jenga Kithibitishaji cha Wasifu wa Mfanyakazi",
+ "intro": [
+ "Katika warsha hii, utatumia njia za mfuatano wa herufi za Python kuthibitisha na kuunda data kutoka kwa wasifu wa mfanyakazi."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Nambari na shughuli za kihesabu",
"intro": [
@@ -6478,6 +6484,12 @@
"Katika warsha hii, utajifunza misingi ya usindikaji wa mfuatano wa herufi katika Python kwa kujenga chombo kinachozalisha beji za mfanyakazi zilizoandaliwa na kuchambua misimbo ya wafanyakazi."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Jenga Kithibitishaji cha Wasifu wa Mfanyakazi",
+ "intro": [
+ "Katika warsha hii, utatumia njia za mfuatano wa herufi za Python kuthibitisha na kuunda data kutoka kwa wasifu wa mfanyakazi."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Nambari na shughuli za kihesabu",
"intro": [
@@ -6535,7 +6547,7 @@
"lab-rpg-character": {
"title": "Jenga mhusika wa RPG",
"intro": [
- "Katika warsha hii utatumia Python ya msingi kwa kujenga mhusika wa RPG."
+ "Katika maabara hii utatumia Python ya msingi kwa kujenga mhusika wa RPG."
]
},
"review-python-basics": {
@@ -10407,6 +10419,359 @@
"english-only": "Kozi katika sehemu hii zinapatikana kwa Kiingereza tu. Kwa sasa tunaweza kutafsiri vichwa na utangulizi tu, si mafundisho yenyewe.",
"exam-english-only": "Tafadhali kumbuka kuwa mtihani wa vyeti kwa sasa unapatikana kwa Kiingereza tu. Kozi zingine zinapatikana kwa baadhi ya lugha."
},
+ "python-programming-fundamentals": {
+ "title": "Misingi ya programu ya Python",
+ "intro": [
+ "Kozi hii inafundisha misingi ya programu ya Python.",
+ "Kamilisha miradi inayohitajika na pita mtihani ili kupata Cheti cha Misingi ya Programu ya Python."
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Misingi ya programu ya Python"
+ },
+ "modules": {
+ "python-basics": "Misingi ya Python",
+ "python-installation": "Sakinisha Python",
+ "python-loops-and-sequences": "Mizunguko na mfululizo",
+ "python-dictionaries-and-sets": "Kamusi na seti",
+ "lab-user-configuration-manager": "Jenga Meneja wa Usanidi wa Mtumizi",
+ "python-error-handling": "Kushughulikia makosa",
+ "python-classes-and-objects": "Darasa la vitu na vitu",
+ "lab-budget-app": "Jenga Programu ya Bajeti",
+ "python-object-oriented-programming": "Uandishi wa programu unaotegemea vitu (OOP)",
+ "lab-polygon-area-calculator": "Jenga Kihesabu cha Eneo la Mstatili",
+ "review-python-programming-fundamentals": "Kagua Python"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "Jenga Programu Yako ya Kwanza ya Python",
+ "intro": [
+ "Kwa warsha hii, utajenga programu yako ya kwanza kwa Python."
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Utangulizi wa Python",
+ "intro": [
+ "Katika mafundisho haya, utajifunza Python ni nini na matumizi yake ya kawaida katika sekta."
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "Kuelewa vigezo na aina za data",
+ "intro": [
+ "Katika mafundisho haya, utajifunza kuhusu vigezo na aina za data katika Python."
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "Jenga Kifaa cha Kuchapisha Kadi ya Ripoti",
+ "intro": [
+ "Katika warsha hii, utatumia kufanya kazi na aina za data za msingi katika Python kwa kuunda na kuchapisha data kwa kadi rahisi ya ripoti."
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "Utangulizi wa mfuatano wa herufi",
+ "intro": ["Katika mafundisho haya, utajifunza kuhusu mfuatano wa herufi katika Python."]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "Jenga Kizalishaji cha Wasifu wa Mfanyakazi",
+ "intro": [
+ "Katika warsha hii, utatumia misingi ya usindikaji wa mfuatano wa herufi katika Python kwa kujenga chombo kinachozalisha bango za mfanyakazi zilizoandaliwa na kuchambua misimbo ya mfanyakazi."
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "Jenga Kithibitishaji cha Wasifu wa Mfanyakazi",
+ "intro": [
+ "Katika warsha hii, utatumia njia za mfuatano wa herufi za Python kuthibitisha na kuunda data kutoka kwa wasifu wa mfanyakazi."
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "Nambari na shughuli za kihesabu",
+ "intro": [
+ "Katika mafundisho haya, utajifunza kuhusu nambari na shughuli za kihesabu katika Python."
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "Jenga Kifaa cha Kugawanya Bili",
+ "intro": [
+ "Katika warsha hii utajenga kifaa cha kugawanya bili ili kufanya mazoezi ya kufanya kazi na nambari na shughuli za kihesabu katika Python."
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "Thamani ya kweli au siyo kweli na masharti",
+ "intro": [
+ "Katika mafundisho haya, utajifunza kuhusu thamani ya kweli au siyo kweli na masharti katika Python."
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "Jenga Kihesabu cha Kuweka Tiketi ya Sinema",
+ "intro": [
+ "Katika warsha hii, utatumia mazoezi ya jinsi ya kutumia thamani ya kweli au siyo kweli na taarifa za masharti katika Python kwa kujenga kihesabu cha kuweka tiketi ya sinema."
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "Jenga Mpangaji wa Hali ya Hewa ya Safari",
+ "intro": [
+ "Katika maabara hii, utajenga mpangaji wa hali ya hewa ya safari kwa kutumia masharti."
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "Kuelewa kitendakazi na wigo",
+ "intro": [
+ "Katika mafundisho haya, utajifunza kuhusu kitendakazi na wigo katika Python."
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "Jenga Kifuatilia Orodha ya Jikoni",
+ "intro": [
+ "Katika warsha hii, utatumia mazoezi ya kufanya kazi na kitendakazi na wigo katika Python kwa kujenga kifuatilia orodha ya jikoni."
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "Jenga Kitendakazi cha Kutumia Punguzo",
+ "intro": [
+ "Katika maabara hii, utatumia Python ya msingi kwa kujenga kihesabu cha kutumia punguzo kwa bei."
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "Jenga Cipher ya Caesar",
+ "intro": [
+ "Katika warsha hii, utajenga cipher ya Caesar kwa kutumia dhana za msingi za Python kama mfuatano wa herufi, masharti, kitendakazi, na zaidi."
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "Jenga Mhusika wa RPG",
+ "intro": [
+ "Katika maabara hii utatumia Python ya msingi kwa kujenga mhusika wa RPG."
+ ]
+ },
+ "review-python-basics": {
+ "title": "Kagua Misingi ya Python",
+ "intro": [
+ "Kabla ya kujaribiwa kuhusu misingi ya Python, unapaswa kukagua kile ulichojifunza kuhusu hiyo.",
+ "Katika ukurasa huu wa ukaguzi, utakagua kufanya kazi na mfuatano wa herufi, kitendakazi, waendeshaji wa kulinganisha na zaidi."
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Jaribio fupi la misingi ya Python",
+ "intro": [
+ "Jaribu kile ulichojifunza kuhusu misingi ya Python kwa jaribio hili."
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "Kusakinisha Python na kuendesha msimbo kwa ndani",
+ "intro": [
+ "Katika mafundisho haya, utajifunza jinsi ya kusakinisha Python kwenye kifaa chako cha ndani na kuendesha msimbo kwa ndani."
+ ]
+ },
+ "review-python-installation": {
+ "title": "Kagua Usakinishaji wa Python",
+ "intro": [
+ "Kabla ya kujaribiwa kuhusu kufanya kazi na Python kwa ndani, unapaswa kukagua dhana zilizofundishwa katika mafundisho."
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Jaribio fupi la usakinishaji wa Python",
+ "intro": [
+ "Jaribu kile ulichojifunza kuhusu kusakinisha Python kwa ndani kwa jaribio hili."
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "Kufanya kazi na mizunguko na mfululizo",
+ "intro": [
+ "Jifunze kuhusu kufanya kazi na mizunguko na mfululizo katika mafundisho haya."
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "Jenga Kichimbaji cha Pin",
+ "intro": [
+ "Katika warsha hii utajenga kitendakazi cha kuchimba pin za siri zilizofichwa katika mashairi."
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "Jenga Kizalishaji cha Mchoro wa Nambari",
+ "intro": ["Katika maabara hii utajenga kizalishaji cha mchoro wa nambari."]
+ },
+ "review-loops-and-sequences": {
+ "title": "Kagua mizunguko na mfululizo",
+ "intro": [
+ "Kabla ya kujaribiwa kuhusu mizunguko na mfululizo, unapaswa kukagua kile ulichojifunza kuhusu hayo.",
+ "Fungua ukurasa huu kukagua dhana zinazohusu mizunguko, orodha, tuple na baadhi ya njia zao za kawaida."
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "Jaribio fupi la mizunguko na mfululizo",
+ "intro": [
+ "Jaribu kile ulichojifunza kuhusu mizunguko na mfululizo katika Python kwa jaribio hili."
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "Kufanya kazi na kamusi na seti",
+ "intro": [
+ "Jifunze kuhusu kufanya kazi na kamusi na seti katika mafundisho haya."
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "Kufanya kazi na moduli",
+ "intro": ["Jifunze kuhusu kufanya kazi na moduli katika mafundisho haya."]
+ },
+ "workshop-medical-data-validator": {
+ "title": "Jenga kimsingi kinachothibitisha data za matibabu",
+ "intro": [
+ "Katika warsha hii, utatumia kufanya kazi na kamusi na seti huku ukithibitisha mkusanyiko wa data za matibabu."
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "Kagua kamusi na seti",
+ "intro": [
+ "Kabla hujajibu jaribio kuhusu kamusi na seti, unapaswa kukagua kile ulichojifunza kuhusu hizo.",
+ "Fungua ukurasa huu kukagua dhana zinazohusu kamusi, seti, na jinsi ya import moduli."
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "Jaribio la kamusi na seti",
+ "intro": [
+ "Jaribu kile ulichojifunza kuhusu kamusi na seti katika Python kwa jaribio hili."
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "Jenga msimamizi wa usanidi wa mtumizi",
+ "intro": [
+ "Katika maabara hii, utatumia kufanya kazi na kamusi katika Python."
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "Kuelewa jinsi ya kushughulikia makosa",
+ "intro": [
+ "Katika mafundisho haya, utajifunza kuhusu jinsi ya kushughulikia makosa katika Python. Utajifunza aina tofauti za makosa, baadhi ya mbinu nzuri za kurekebisha makosa, ni nini exceptions, na jinsi ya kuzishughulikia."
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "Tafuta hitilafu katika kinathibitisha ISBN",
+ "intro": [
+ "Katika maabara hii, utaanza na programu yenye hitilafu, na utahitaji kutafuta makosa na kuyarekebisha hadi ifanye kazi vizuri."
+ ]
+ },
+ "review-error-handling": {
+ "title": "Kagua jinsi ya kushughulikia makosa",
+ "intro": [
+ "Kabla hujajibu jaribio kuhusu jinsi ya kushughulikia makosa, unapaswa kukagua kile ulichojifunza kuhusu hilo."
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "Jaribio la kushughulikia makosa",
+ "intro": [
+ "Jaribu kile ulichojifunza kuhusu kushughulikia makosa katika Python kwa jaribio hili."
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "Darasa la vitu na vitu",
+ "intro": ["Jifunze kuhusu madarasa ya vitu na vitu katika mafundisho haya."]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "Jenga orodha ya vyombo vya muziki",
+ "intro": [
+ "Katika warsha hii, utajifunza kuhusu madarasa ya vitu, vitu, na njia katika Python kwa kujenga orodha rahisi ya vyombo vya muziki."
+ ]
+ },
+ "lab-planet-class": {
+ "title": "Jenga darasa la sayari",
+ "intro": [
+ "Katika maabara hii utaunda darasa la vitu linalowakilisha sayari."
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "Jenga kielekezi cha barua pepe",
+ "intro": [
+ "Katika warsha hii utatekeleza madarasa ya vitu kwa kujenga kielekezi cha barua pepe kinachofanikisha kutuma, kupokea, na kusimamia barua pepe kati ya watumizi tofauti."
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "Kagua madarasa ya vitu na vitu",
+ "intro": [
+ "Kabla hujajibu jaribio kuhusu madarasa ya vitu na vitu, unapaswa kukagua kile ulichojifunza kuhusu hayo.",
+ "Fungua ukurasa huu kukagua dhana kama jinsi madarasa ya vitu yanavyofanya kazi, ni nini vitu, njia, sifa za vipengele, njia maalum na zaidi."
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "Jaribio la madarasa ya vitu na vitu",
+ "intro": [
+ "Jaribu kile ulichojifunza kuhusu madarasa ya vitu na vitu katika Python kwa jaribio hili."
+ ]
+ },
+ "lab-budget-app": {
+ "title": "Jenga programu ya bajeti",
+ "intro": [
+ "Katika maabara hii utajenga programu ya bajeti na utatumia kuunda darasa la vitu na njia za darasa hilo."
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "Kuelewa uprogramaji unaozingatia vitu na kufunga data",
+ "intro": [
+ "Jifunze kuhusu kuelewa uprogramaji unaozingatia vitu na kufunga data katika mafundisho haya."
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "Jenga kifuatilia mshahara",
+ "intro": [
+ "Katika warsha hii, utatumia kufunga data, mali, na dhana nyingine za uprogramaji unaozingatia vitu kwa kujenga mfumo wa kufuatilia mishahara ya wafanyakazi."
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "Jenga kifuatilia takwimu za mhusika wa mchezo",
+ "intro": [
+ "Katika maabara hii, utajenga mhusika wa mchezo mwenye takwimu tofauti kwa kutumia uprogramaji unaozingatia vitu."
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "Kuelewa urithi na polymorphism",
+ "intro": [
+ "Jifunze kuhusu kuelewa urithi na polymorphism katika mafundisho haya."
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "Jenga orodha ya vyombo vya habari",
+ "intro": [
+ "Katika warsha hii, utaunda programu ya orodha ya vyombo vya habari kwa kutumia kanuni za uprogramaji unaozingatia vitu."
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "Kuelewa ufupishaji",
+ "intro": ["Jifunze kuhusu kuelewa ufupishaji katika mafundisho haya."]
+ },
+ "workshop-discount-calculator": {
+ "title": "Jenga kielekezi cha punguzo",
+ "intro": [
+ "Katika warsha hii utajenga kielekezi cha bei cha punguzo kinachobadilika kwa kutumia madarasa ya msingi ya ufupishaji, kuruhusu algoriti nyingi za punguzo kutumika badilika bila kubadilisha mantiki kuu."
+ ]
+ },
+ "lab-player-interface": {
+ "title": "Jenga kiolesura cha mchezaji",
+ "intro": [
+ "Katika maabara hii, utatumia moduli ya abc kujenga kiolesura cha mchezaji."
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "Kagua uprogramaji unaozingatia vitu",
+ "intro": [
+ "Kabla hujajibu jaribio kuhusu uprogramaji unaozingatia vitu, unapaswa kukagua kile ulichojifunza kuhusu hilo."
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "Jaribio la uprogramaji unaozingatia vitu",
+ "intro": [
+ "Jaribu kile ulichojifunza kuhusu uprogramaji unaozingatia vitu katika Python kwa jaribio hili."
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "Jenga kielekezi cha eneo la mstatili",
+ "intro": [
+ "Katika maabara hii, utatumia uprogramaji unaozingatia vitu kukokotoa maeneo ya mstatili tofauti kama vile mraba na mstatili."
+ ]
+ },
+ "review-python": {
+ "title": "Kagua misingi ya uprogramaji wa Python",
+ "intro": ["Kagua dhana za Python kujiandaa kwa mtihani unaokuja."]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "Cheti cha Algoriti na Muundo wa Data",
"intro": [
diff --git a/client/ukrainian/intro.json b/client/ukrainian/intro.json
index 4ab9ea953a5..62e9a9b5971 100644
--- a/client/ukrainian/intro.json
+++ b/client/ukrainian/intro.json
@@ -1221,7 +1221,7 @@
"lecture-understanding-the-command-line-and-working-with-bash": {
"title": "Розуміння командного рядка та робота з Bash",
"intro": [
- "Вивчайте командний рядок і роботу з Bash у цих уроках."
+ "Дізнайтеся про командний рядок і роботу з Bash у цих уроках."
]
},
"workshop-bash-boilerplate": {
@@ -1517,6 +1517,12 @@
"У цій лабораторній роботі ви попрактикуєтеся з основами маніпуляції рядками в Python, створюючи інструмент для генерації форматованих бейджів співробітників і аналізу кодів співробітників."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Створіть валідатор профілю працівника",
+ "intro": [
+ "На цьому практичному занятті ви використаєте методи рядків Python для перевірки та форматування даних профілю працівника."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Числа та математичні операції",
"intro": [
@@ -6478,6 +6484,12 @@
"У цьому практичному занятті ви попрактикуєтеся з основами маніпуляції рядками в Python, створюючи інструмент для генерації форматованих бейджів співробітників і аналізу кодів співробітників."
]
},
+ "workshop-employee-profile-validator": {
+ "title": "Створіть валідатор профілю працівника",
+ "intro": [
+ "На цьому практичному занятті ви використаєте методи рядків Python для перевірки та форматування даних профілю працівника."
+ ]
+ },
"lecture-numbers-and-mathematical-operations": {
"title": "Числа та математичні операції",
"intro": [
@@ -10407,6 +10419,359 @@
"english-only": "Курси в цьому розділі доступні лише англійською. Наразі ми можемо перекладати лише назви та вступи, а не самі уроки.",
"exam-english-only": "Зверніть увагу, що екзамен на сертифікацію наразі доступний лише англійською. Решта курсів доступні деякими мовами."
},
+ "python-programming-fundamentals": {
+ "title": "Основи програмування на Python",
+ "intro": [
+ "Цей курс навчає основам програмування на Python.",
+ "Виконайте необхідні проєкти та складіть екзамен, щоб отримати сертифікацію з основ програмування на Python."
+ ],
+ "chapters": {
+ "python-programming-fundamentals": "Основи програмування на Python"
+ },
+ "modules": {
+ "python-basics": "Основи Python",
+ "python-installation": "Встановлення Python",
+ "python-loops-and-sequences": "Цикли та послідовності",
+ "python-dictionaries-and-sets": "Словники та множини",
+ "lab-user-configuration-manager": "Створіть менеджер конфігурації користувача",
+ "python-error-handling": "Обробка помилок",
+ "python-classes-and-objects": "Класи та об’єкти",
+ "lab-budget-app": "Створіть додаток для бюджету",
+ "python-object-oriented-programming": "Об’єктно-орієнтоване програмування (ООП)",
+ "lab-polygon-area-calculator": "Створіть калькулятор площі багатокутника",
+ "review-python-programming-fundamentals": "Повторення Python"
+ },
+ "blocks": {
+ "workshop-first-python-program": {
+ "title": "Створіть свою першу програму на Python",
+ "intro": [
+ "На цьому практичному занятті ви створите свою першу програму на Python."
+ ]
+ },
+ "lecture-introduction-to-python": {
+ "title": "Вступ до Python",
+ "intro": [
+ "У цих уроках ви дізнаєтеся, що таке Python і як його зазвичай використовують у галузі."
+ ]
+ },
+ "lecture-understanding-variables-and-data-types": {
+ "title": "Розуміння змінних і типів даних",
+ "intro": [
+ "У цих уроках ви дізнаєтеся про змінні та типи даних у Python."
+ ]
+ },
+ "workshop-report-card-printer": {
+ "title": "Створіть принтер табеля успішності",
+ "intro": [
+ "На цьому практичному занятті ви попрактикуєтеся з примітивними типами даних у Python, створюючи та виводячи дані для простого табеля успішності."
+ ]
+ },
+ "lecture-introduction-to-python-strings": {
+ "title": "Вступ до рядків",
+ "intro": ["У цих уроках ви дізнаєтеся про рядки в Python."]
+ },
+ "workshop-employee-profile-generator": {
+ "title": "Створіть генератор профілю працівника",
+ "intro": [
+ "На цьому практичному занятті ви попрактикуєтеся з основами маніпуляції рядками в Python, створюючи інструмент для генерації форматованих бейджів працівників і аналізу кодів працівників."
+ ]
+ },
+ "workshop-employee-profile-validator": {
+ "title": "Створіть валідатор профілю працівника",
+ "intro": [
+ "На цьому практичному занятті ви використаєте методи рядків Python для перевірки та форматування даних профілю працівника."
+ ]
+ },
+ "lecture-numbers-and-mathematical-operations": {
+ "title": "Числа та математичні операції",
+ "intro": [
+ "У цих уроках ви дізнаєтеся про числа та математичні операції в Python."
+ ]
+ },
+ "workshop-bill-splitter": {
+ "title": "Створіть калькулятор розподілу рахунку",
+ "intro": [
+ "На цьому практичному занятті ви створите калькулятор розподілу рахунку, щоб попрактикуватися з числами та математичними операціями в Python."
+ ]
+ },
+ "lecture-booleans-and-conditionals": {
+ "title": "Булеві значення та умовні оператори",
+ "intro": [
+ "У цих уроках ви дізнаєтеся про булеві значення та умовні оператори в Python."
+ ]
+ },
+ "workshop-movie-ticket-booking-calculator": {
+ "title": "Створіть калькулятор бронювання квитків у кіно",
+ "intro": [
+ "На цьому практичному занятті ви попрактикуєтеся у використанні булевих значень та умовних інструкцій у Python, створюючи калькулятор бронювання квитків у кіно."
+ ]
+ },
+ "lab-travel-weather-planner": {
+ "title": "Створіть планувальник погоди для подорожей",
+ "intro": [
+ "У цій лабораторній роботі ви створите планувальник погоди для подорожей, використовуючи умовні оператори."
+ ]
+ },
+ "lecture-understanding-functions-and-scope": {
+ "title": "Розуміння функцій і області видимості",
+ "intro": [
+ "У цих уроках ви дізнаєтеся про функції та область видимості в Python."
+ ]
+ },
+ "workshop-kitchen-inventory-tracker": {
+ "title": "Створіть трекер кухонних запасів",
+ "intro": [
+ "На цьому практичному занятті ви попрактикуєтеся з функціями та областю видимості в Python, створюючи трекер кухонних запасів."
+ ]
+ },
+ "lab-discount-calculator": {
+ "title": "Створіть функцію застосування знижки",
+ "intro": [
+ "У цій лабораторній роботі ви попрактикуєтеся у базовому Python, створюючи калькулятор для застосування знижки до ціни."
+ ]
+ },
+ "workshop-caesar-cipher": {
+ "title": "Створіть шифр Цезаря",
+ "intro": [
+ "На цьому практичному занятті ви створите шифр Цезаря, використовуючи базові концепції Python, такі як рядки, умовні оператори, функції та інше."
+ ]
+ },
+ "lab-rpg-character": {
+ "title": "Створіть персонажа RPG",
+ "intro": [
+ "У цій лабораторній роботі ви попрактикуєтеся у базовому Python, створюючи персонажа RPG."
+ ]
+ },
+ "review-python-basics": {
+ "title": "Повторення основ Python",
+ "intro": [
+ "Перед тестуванням з основ Python варто повторити вивчене.",
+ "На цій сторінці повторення ви переглянете роботу з рядками, функціями, операторами порівняння та іншим."
+ ]
+ },
+ "quiz-python-basics": {
+ "title": "Тест з основ Python",
+ "intro": [
+ "Перевірте свої знання з основ Python за допомогою цього тесту."
+ ]
+ },
+ "lecture-python-installation": {
+ "title": "Встановлення Python і запуск коду локально",
+ "intro": [
+ "У цих уроках ви дізнаєтеся, як встановити Python на свій локальний пристрій і запускати код локально."
+ ]
+ },
+ "review-python-installation": {
+ "title": "Повторення встановлення Python",
+ "intro": [
+ "Перед тестуванням з роботи з Python локально варто повторити поняття, розглянуті в уроках."
+ ]
+ },
+ "quiz-python-installation": {
+ "title": "Тест з встановлення Python",
+ "intro": [
+ "Перевірте свої знання про встановлення Python локально за допомогою цього тесту."
+ ]
+ },
+ "lecture-working-with-loops-and-sequences": {
+ "title": "Робота з циклами та послідовностями",
+ "intro": [
+ "Дізнайтеся про роботу з циклами та послідовностями у цих уроках."
+ ]
+ },
+ "workshop-pin-extractor": {
+ "title": "Створіть екстрактор PIN-кодів",
+ "intro": [
+ "На цьому практичному занятті ви створите функцію для вилучення секретних PIN-кодів, захованих у віршах."
+ ]
+ },
+ "lab-number-pattern-generator": {
+ "title": "Створіть генератор числових шаблонів",
+ "intro": ["У цій лабораторній роботі ви створите генератор числових шаблонів."]
+ },
+ "review-loops-and-sequences": {
+ "title": "Повторення циклів і послідовностей",
+ "intro": [
+ "Перед тестуванням з циклів і послідовностей варто повторити вивчене.",
+ "Відкрийте цю сторінку, щоб повторити поняття про цикли, списки, кортежі та деякі їхні загальні методи."
+ ]
+ },
+ "quiz-loops-and-sequences": {
+ "title": "Тест з циклів і послідовностей",
+ "intro": [
+ "Перевірте свої знання про цикли та послідовності в Python за допомогою цього тесту."
+ ]
+ },
+ "lecture-working-with-dictionaries-and-sets": {
+ "title": "Робота зі словниками та множинами",
+ "intro": [
+ "Дізнайтеся про роботу зі словниками та множинами у цих уроках."
+ ]
+ },
+ "lecture-working-with-modules": {
+ "title": "Робота з модулями",
+ "intro": ["Дізнайтеся про роботу з модулями в цих уроках."]
+ },
+ "workshop-medical-data-validator": {
+ "title": "Створіть валідатор медичних даних",
+ "intro": [
+ "На цьому практичному занятті ви попрактикуєтеся з роботою зі словниками та множинами, перевіряючи колекцію медичних даних."
+ ]
+ },
+ "review-dictionaries-and-sets": {
+ "title": "Повторення словників і множин",
+ "intro": [
+ "Перед тестом зі словників і множин варто повторити вивчене про них.",
+ "Відкрийте цю сторінку, щоб повторити поняття словників, множин і імпорту модулів."
+ ]
+ },
+ "quiz-dictionaries-and-sets": {
+ "title": "Тест зі словників і множин",
+ "intro": [
+ "Перевірте свої знання про словники і множини в Python за допомогою цього тесту."
+ ]
+ },
+ "lab-user-configuration-manager": {
+ "title": "Створіть менеджер конфігурації користувача",
+ "intro": [
+ "У цій лабораторній роботі ви попрактикуєтеся з роботою зі словниками в Python."
+ ]
+ },
+ "lecture-understanding-error-handling": {
+ "title": "Розуміння обробки помилок",
+ "intro": [
+ "У цих уроках ви дізнаєтеся про обробку помилок у Python. Ви вивчите різні типи помилок, хороші практики налагодження, що таке виключення та як їх обробляти."
+ ]
+ },
+ "lab-isbn-validator": {
+ "title": "Налагодьте валідатор ISBN",
+ "intro": [
+ "У цій лабораторній роботі ви почнете з застосунку з помилками, які потрібно налагодити та виправити, щоб він працював правильно."
+ ]
+ },
+ "review-error-handling": {
+ "title": "Повторення обробки помилок",
+ "intro": [
+ "Перед тестом з обробки помилок варто повторити вивчене про неї."
+ ]
+ },
+ "quiz-error-handling": {
+ "title": "Тест з обробки помилок",
+ "intro": [
+ "Перевірте свої знання про обробку помилок у Python за допомогою цього тесту."
+ ]
+ },
+ "lecture-classes-and-objects": {
+ "title": "Класи та об’єкти",
+ "intro": ["Дізнайтеся про класи та об’єкти в цих уроках."]
+ },
+ "workshop-musical-instrument-inventory": {
+ "title": "Створіть інвентар музичних інструментів",
+ "intro": [
+ "На цьому практичному занятті ви вивчите класи, об’єкти та методи в Python, створюючи простий інвентар музичних інструментів."
+ ]
+ },
+ "lab-planet-class": {
+ "title": "Створіть клас планети",
+ "intro": [
+ "У цій лабораторній роботі ви створите клас, який представляє планету."
+ ]
+ },
+ "workshop-email-simulator": {
+ "title": "Створіть симулятор е-пошти",
+ "intro": [
+ "На цьому практичному занятті ви реалізуєте класи та об’єкти, створюючи симулятор е-пошти, який імітує надсилання, отримання та керування листами між різними користувачами."
+ ]
+ },
+ "review-classes-and-objects": {
+ "title": "Повторення класів і об’єктів",
+ "intro": [
+ "Перед тестом з класів і об’єктів варто повторити вивчене про них.",
+ "Відкрийте цю сторінку, щоб повторити поняття про роботу класів, що таке об’єкти, методи, атрибути, спеціальні методи та інше."
+ ]
+ },
+ "quiz-classes-and-objects": {
+ "title": "Тест з класів і об’єктів",
+ "intro": [
+ "Перевірте свої знання про класи та об’єкти в Python за допомогою цього тесту."
+ ]
+ },
+ "lab-budget-app": {
+ "title": "Створіть застосунок для бюджету",
+ "intro": [
+ "У цій лабораторній роботі ви створите застосунок для бюджету та попрактикуєтеся у створенні класу та методів для нього."
+ ]
+ },
+ "lecture-understanding-object-oriented-programming-and-encapsulation": {
+ "title": "Розуміння об’єктно-орієнтованого програмування та інкапсуляції",
+ "intro": [
+ "Дізнайтеся про об’єктно-орієнтоване програмування та інкапсуляцію в цих уроках."
+ ]
+ },
+ "workshop-salary-tracker": {
+ "title": "Створіть трекер зарплат",
+ "intro": [
+ "На цьому практичному занятті ви попрактикуєтеся з інкапсуляцією, властивостями та іншими концепціями ООП, створюючи систему відстеження зарплат працівників."
+ ]
+ },
+ "lab-game-character-stats": {
+ "title": "Створіть трекер характеристик ігрового персонажа",
+ "intro": [
+ "У цій лабораторній роботі ви створите ігрового персонажа з різними характеристиками, використовуючи об’єктно-орієнтоване програмування."
+ ]
+ },
+ "lecture-understanding-inheritance-and-polymorphism": {
+ "title": "Розуміння успадкування та поліморфізму",
+ "intro": [
+ "Дізнайтеся про успадкування та поліморфізм у цих уроках."
+ ]
+ },
+ "workshop-media-catalogue": {
+ "title": "Створіть каталог медіаконтенту",
+ "intro": [
+ "На цьому практичному занятті ви створите застосунок каталогу медіаконтенту, використовуючи принципи об’єктно-орієнтованого програмування."
+ ]
+ },
+ "lecture-understanding-abstraction": {
+ "title": "Розуміння абстракції",
+ "intro": ["Дізнайтеся про абстракцію в цих уроках."]
+ },
+ "workshop-discount-calculator": {
+ "title": "Створіть калькулятор знижок",
+ "intro": [
+ "На цьому практичному занятті ви створите гнучкий калькулятор цін зі знижками через абстрактні базові класи, що дозволить застосовувати різні алгоритми знижок без змін основної логіки."
+ ]
+ },
+ "lab-player-interface": {
+ "title": "Створіть інтерфейс гравця",
+ "intro": [
+ "У цій лабораторній роботі ви використаєте модуль abc для створення інтерфейсу гравця."
+ ]
+ },
+ "review-object-oriented-programming": {
+ "title": "Повторення об’єктно-орієнтованого програмування",
+ "intro": [
+ "Перед тестом з об’єктно-орієнтованого програмування варто повторити вивчене про нього."
+ ]
+ },
+ "quiz-object-oriented-programming": {
+ "title": "Тест з об’єктно-орієнтованого програмування",
+ "intro": [
+ "Перевірте свої знання про об’єктно-орієнтоване програмування в Python за допомогою цього тесту."
+ ]
+ },
+ "lab-polygon-area-calculator": {
+ "title": "Створіть калькулятор площі багатокутника",
+ "intro": [
+ "У цій лабораторній роботі ви використаєте об’єктно-орієнтоване програмування для обчислення площ різних багатокутників, таких як квадрати та прямокутники."
+ ]
+ },
+ "review-python": {
+ "title": "Повторення основ програмування на Python",
+ "intro": ["Повторіть концепції Python, щоб підготуватися до майбутнього екзамену."]
+ }
+ }
+ },
"algorithms-and-data-structure": {
"title": "Сертифікація з алгоритмів і структур даних",
"intro": [
diff --git a/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b0e.md b/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b0e.md
index 0b83dccb607..afc45f71190 100644
--- a/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b0e.md
+++ b/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b0e.md
@@ -1,6 +1,6 @@
---
id: 587d78b2367417b2b2512b0e
-title: إضافة عناصر إلى مصفوفة باستخدام push() و unshift()
+title: إضافة عناصر إلى مصفوفة باستخدام push() و unshift()
challengeType: 1
forumTopicId: 301151
dashedName: add-items-to-an-array-with-push-and-unshift
diff --git a/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b0f.md b/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b0f.md
index 58d3cfaeb10..11aa94a97b2 100644
--- a/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b0f.md
+++ b/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b0f.md
@@ -1,6 +1,6 @@
---
id: 587d78b2367417b2b2512b0f
-title: إزالة عناصر من مصفوفة باستخدام pop() و shift()
+title: إزالة عناصر من مصفوفة باستخدام pop() و shift()
challengeType: 1
forumTopicId: 301165
dashedName: remove-items-from-an-array-with-pop-and-shift
diff --git a/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b10.md b/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b10.md
index 0fcc495bca7..fc6c20d11ad 100644
--- a/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b10.md
+++ b/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b2367417b2b2512b10.md
@@ -1,6 +1,6 @@
---
id: 587d78b2367417b2b2512b10
-title: إزالة عناصر باستخدام splice()
+title: إزالة عناصر باستخدام splice()
challengeType: 1
forumTopicId: 301166
dashedName: remove-items-using-splice
diff --git a/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b3367417b2b2512b11.md b/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b3367417b2b2512b11.md
index 5e54f7a23eb..e9deb3a8967 100644
--- a/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b3367417b2b2512b11.md
+++ b/curriculum/challenges/arabic/blocks/basic-data-structures/587d78b3367417b2b2512b11.md
@@ -1,6 +1,6 @@
---
id: 587d78b3367417b2b2512b11
-title: إضافة عناصر باستخدام splice()
+title: إضافة عناصر باستخدام splice()
challengeType: 1
forumTopicId: 301152
dashedName: add-items-using-splice
diff --git a/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7a367417b2b2512b12.md b/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7a367417b2b2512b12.md
index a9a53d14ec5..b372f670e97 100644
--- a/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7a367417b2b2512b12.md
+++ b/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7a367417b2b2512b12.md
@@ -1,6 +1,6 @@
---
id: 587d7b7a367417b2b2512b12
-title: نسخ عناصر المصفوفة باستخدام slice()
+title: نسخ عناصر المصفوفة باستخدام slice()
challengeType: 1
forumTopicId: 301158
dashedName: copy-array-items-using-slice
diff --git a/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7b367417b2b2512b14.md b/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7b367417b2b2512b14.md
index d6aa0b2c0ab..dff2afa214b 100644
--- a/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7b367417b2b2512b14.md
+++ b/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7b367417b2b2512b14.md
@@ -1,6 +1,6 @@
---
id: 587d7b7b367417b2b2512b14
-title: التحقق من وجود عنصر باستخدام indexOf()
+title: التحقق من وجود عنصر باستخدام indexOf()
challengeType: 1
forumTopicId: 301154
dashedName: check-for-the-presence-of-an-element-with-indexof
diff --git a/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7d367417b2b2512b1e.md b/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7d367417b2b2512b1e.md
index 11d20a56853..803af3e6d88 100644
--- a/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7d367417b2b2512b1e.md
+++ b/curriculum/challenges/arabic/blocks/basic-data-structures/587d7b7d367417b2b2512b1e.md
@@ -1,6 +1,6 @@
---
id: 587d7b7d367417b2b2512b1e
-title: توليد مصفوفة بكل مفاتيح الكائن باستخدام Object.keys()
+title: توليد مصفوفة بكل مفاتيح الكائن باستخدام Object.keys()
challengeType: 1
forumTopicId: 301160
dashedName: generate-an-array-of-all-object-keys-with-object-keys
diff --git a/curriculum/challenges/arabic/blocks/bootstrap/bad87fee1348bd9aedf08845.md b/curriculum/challenges/arabic/blocks/bootstrap/bad87fee1348bd9aedf08845.md
index 793e481245e..d5bd7401b48 100644
--- a/curriculum/challenges/arabic/blocks/bootstrap/bad87fee1348bd9aedf08845.md
+++ b/curriculum/challenges/arabic/blocks/bootstrap/bad87fee1348bd9aedf08845.md
@@ -11,9 +11,9 @@ dashedName: use-a-span-to-target-inline-elements
يمكنك استخدام عناصر span لإنشاء عناصر مضمَّنة. هل تذكر عندما استخدمنا صنف `btn-block` لجعل الزر يملأ الصف بأكمله؟
```html
-
+
-
+
```
هذا يوضح الفرق بين عنصر "مضمَّن" وعنصر "كتلة".
diff --git a/curriculum/challenges/arabic/blocks/bootstrap/bad87fee1348cd8acef08812.md b/curriculum/challenges/arabic/blocks/bootstrap/bad87fee1348cd8acef08812.md
index e7771d76593..9b834a8297e 100644
--- a/curriculum/challenges/arabic/blocks/bootstrap/bad87fee1348cd8acef08812.md
+++ b/curriculum/challenges/arabic/blocks/bootstrap/bad87fee1348cd8acef08812.md
@@ -43,7 +43,7 @@ assert.isTrue(document.querySelector('button')?.classList?.contains('btn-default
assert.isTrue(document.querySelector('button')?.classList?.contains('btn-block'));
```
-يجب أن تحتوي جميع عناصر `button` على وسم الإغلاق.
+يجب أن تحتوي كل عناصر `button` الخاصة بك على وسم الإغلاق.
```js
assert.match(code,/<\/button>/g);
diff --git a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21c48acb466c97ccbee7.md b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21c48acb466c97ccbee7.md
deleted file mode 100644
index 6702d1867d5..00000000000
--- a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21c48acb466c97ccbee7.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-id: 647e21c48acb466c97ccbee7
-title: استدعاء الطرق من مكتبة أصناف .NET باستخدام C#
-challengeType: 19
-dashedName: call-methods-from-the-dot-net-class-library-using-c-sharp
----
-
-# --description--
-
-سيُنجز هذا التحدي جزئيًا على منصة Microsoft Learn. اتبع هذه التعليمات لإكمال التحدي:
-
-1. انتقل إلى https://learn.microsoft.com/training/modules/csharp-call-methods/ وأكمل جميع المهام في وحدة "استدعاء الطرق من مكتبة أصناف .NET باستخدام C#". هذا **مطلوب** للحصول على جائزة "إنشاء وتشغيل تطبيقات وحدة تحكم C# بسيطة" على Microsoft Learn، والتأهل لاختبار الشهادة.
-1. عند الانتهاء، عد وأجب عن السؤال أدناه بشكل صحيح.
-
-# --assignment--
-
-أكمل وحدة استدعاء الطرق من مكتبة أصناف .NET باستخدام C# على Microsoft Learn. ثم أجب عن السؤال أدناه.
-
-# --questions--
-
-## --text--
-
-ما هو الكائن؟
-
-## --answers--
-
-عنوان ذاكرة.
-
----
-
-صنف عديم الحالة.
-
----
-
-مثيل من صنف.
-
-## --video-solution--
-
-3
diff --git a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21d08acb466c97ccbee8.md b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21d08acb466c97ccbee8.md
deleted file mode 100644
index 522c12f3d9b..00000000000
--- a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21d08acb466c97ccbee8.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-id: 647e21d08acb466c97ccbee8
-title: مشروع تحدٍّ - تطوير تراكيب foreach و if-elseif-else لمعالجة بيانات المصفوفة في C#
-challengeType: 19
-dashedName: challenge-project-develop-foreach-and-if-elseif-else-structures-to-process-array-data-in-c-sharp
----
-
-# --description--
-
-سيُنجز هذا التحدي جزئيًا على منصة Microsoft Learn. اتبع هذه التعليمات لإكمال التحدي:
-
-1. انتقل إلى https://learn.microsoft.com/training/modules/challenge-project-arrays-iteration-selection/ وأكمل جميع المهام في وحدة "مشروع تحدٍّ - تطوير تراكيب foreach و if-elseif-else لمعالجة بيانات المصفوفة في C#". هذا ضروري للحصول على جائزة "إنشاء وتشغيل تطبيقات وحدة تحكم C# بسيطة" على Microsoft Learn، وللتأهل لاختبار الشهادة.
-1. عند الانتهاء، عد وأجب عن السؤال أدناه بشكل صحيح.
-
-# --assignment--
-
-أكمل مشروع التحدي تطوير تراكيب `foreach` و `if`-`elseif`-`else` لمعالجة بيانات المصفوفة في C# على Microsoft Learn. ثم أجب عن السؤال أدناه.
-
-# --questions--
-
-## --text--
-
-يعمل مطوِّر مع مطوِّرين آخرين لتحديث مجموعة من التطبيقات. سيستخدم المطوِّرون تعليقات الكود أثناء عملية التحديث. أي مما يلي يصف استخدامًا مناسبًا لتعليقات الكود؟
-
-## --answers--
-
-عند إجراء التحديثات، يستخدم المطوِّرون تعليقات سطرية وكتلية لتحديد كل تحديث كود فردي.
-
----
-
-عند إجراء التحديثات، يترك المطوِّرون جميع تعليقات الكود الموجودة كما هي. تُضاف تعليقات جديدة لتوضيح متى لم تعد التعليقات القديمة صالحة.
-
----
-
-عند إجراء التحديثات، يلخص المطوِّرون التغييرات باستخدام تعليقات كتلية.
-
-## --video-solution--
-
-3
diff --git a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21df8acb466c97ccbee9.md b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21df8acb466c97ccbee9.md
deleted file mode 100644
index 6e01e2b09f5..00000000000
--- a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21df8acb466c97ccbee9.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-id: 647e21df8acb466c97ccbee9
-title: إنشاء كود قابل للقراءة باستخدام الاصطلاحات، والمسافات البيضاء، والتعليقات في C#
-challengeType: 19
-dashedName: create-readable-code-with-conventions-whitespace-and-comments-in-c-sharp
----
-
-# --description--
-
-سيُنجز هذا التحدي جزئيًا على منصة Microsoft Learn. اتبع هذه التعليمات لإكمال التحدي:
-
-1. اذهب إلى https://learn.microsoft.com/training/modules/csharp-readable-code/ وأكمل جميع المهام في وحدة "إنشاء كود قابل للقراءة باستخدام الاصطلاحات، والمسافات البيضاء، والتعليقات في C#". هذا **مطلوب** للحصول على جائزة "إنشاء وتشغيل تطبيقات C# بسيطة في وحدة التحكم" على Microsoft Learn، وللتأهل لاختبار الشهادة.
-1. عند الانتهاء، عد وأجب عن السؤال أدناه بشكل صحيح.
-
-# --assignment--
-
-أكمل وحدة إنشاء كود قابل للقراءة باستخدام الاصطلاحات، والمسافات البيضاء، والتعليقات في C# على Microsoft Learn. ثم أجب عن السؤال أدناه.
-
-# --questions--
-
-## --text--
-
-أي من الأسباب التالية يعتبر سببًا سيئًا لاستخدام تعليق في الكود؟
-
-## --answers--
-
-لوصف الهدف العام للكود.
-
----
-
-لإضافة تعليق للكود مؤقتًا على سطر أثناء تقييم ميزة بطريقة مختلفة.
-
----
-
-لشرح كيفية عمل كلمة مفتاحية جديدة في C#.
-
-## --video-solution--
-
-3
diff --git a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21eb8acb466c97ccbeea.md b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21eb8acb466c97ccbeea.md
deleted file mode 100644
index 90f07ee66c8..00000000000
--- a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e21eb8acb466c97ccbeea.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-id: 647e21eb8acb466c97ccbeea
-title: مشروع موجه - تطوير تراكيب foreach و if-elseif-else لمعالجة بيانات المصفوفة في C#
-challengeType: 19
-dashedName: guided-project-develop-foreach-and-if-elseif-else-structures-to-process-array-data-in-c-sharp
----
-
-# --description--
-
-سيُنجز هذا التحدي جزئيًا على منصة Microsoft Learn. اتبع هذه التعليمات لإكمال التحدي:
-
-1. انتقل إلى https://learn.microsoft.com/training/modules/guided-project-arrays-iteration-selection/ وأكمل جميع المهام في وحدة "مشروع موجه - تطوير تراكيب foreach و if-elseif-else لمعالجة بيانات المصفوفة في C#". هذا مطلوب للحصول على جائزة "إنشاء وتشغيل تطبيقات وحدة تحكم C# بسيطة" على Microsoft Learn، والتأهل لاختبار الشهادة.
-1. عند الانتهاء، عد وأجب عن السؤال أدناه بشكل صحيح.
-
-# --assignment--
-
-أكمل مشروعًا موجهًا لتطوير تراكيب `foreach` و `if`-`elseif`-`else` لمعالجة بيانات المصفوفة في C# على Microsoft Learn. ثم أجب عن السؤال أدناه.
-
-# --questions--
-
-## --text--
-
-يكتب مطوِّر تطبيقًا يستخدم حلقة `foreach` للتكرار خلال مصفوفة تحتوي على 20 عنصرًا. بعد إكمال التطبيق، يكتشف المطوِّر أن المصفوفة يجب تحديثها لتشمل 40 عنصرًا. يحتاج التطبيق إلى فحص جميع عناصر المصفوفة الـ 40. أي من الخيارات التالية يصف التحديث المطلوب للكود؟
-
-## --answers--
-
-أنشئ حلقة `foreach` ثانية تتكرر خلال العناصر الإضافية.
-
----
-
-لا يلزم إجراء أي تغييرات على حلقة `foreach`.
-
----
-
-ضع حلقة `foreach` الأصلية داخل كتلة الكود لحلقة `foreach` ثانية تتكرر مرتين.
-
-## --video-solution--
-
-2
diff --git a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e22058acb466c97ccbeec.md b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e22058acb466c97ccbeec.md
deleted file mode 100644
index 1087ac1c94b..00000000000
--- a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/647e22058acb466c97ccbeec.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-id: 647e22058acb466c97ccbeec
-title: تخزين وتكرار متتاليات البيانات باستخدام المصفوفات وعبارة foreach في C#
-challengeType: 19
-dashedName: store-and-iterate-through-sequences-of-data-using-arrays-and-the-foreach-statement-in-c-sharp
----
-
-# --description--
-
-سيُنجز هذا التحدي جزئيًا على منصة Microsoft Learn. اتبع هذه التعليمات لإكمال التحدي:
-
-1. انتقل إلى https://learn.microsoft.com/training/modules/csharp-arrays/ وأكمل جميع المهام في وحدة "تخزين وتكرار متتاليات البيانات باستخدام المصفوفات وعبارة foreach في C#". هذا مطلوب للحصول على جائزة "إنشاء وتشغيل تطبيقات وحدة تحكم C# بسيطة" على Microsoft Learn، وللتأهل لاختبار الشهادة.
-1. عند الانتهاء، عد وأجب عن السؤال أدناه بشكل صحيح.
-
-# --assignment--
-
-أكمل وحدة تخزين وتكرار متتاليات البيانات باستخدام المصفوفات وعبارة `foreach` في C# على Microsoft Learn. ثم أجب عن السؤال أدناه.
-
-# --questions--
-
-## --text--
-
-أي من عبارات foreach التالية صحيحة نحويًا؟
-
-## --answers--
-
-`foreach (int value of values)`
-
----
-
-`foreach (int value with values)`
-
----
-
-`foreach (int value in values)`
-
-
-## --video-solution--
-
-3
diff --git a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/6ac3f7679fd5ceb2af42aa67.md b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/6ac3f7679fd5ceb2af42aa67.md
new file mode 100644
index 00000000000..4b35991cc03
--- /dev/null
+++ b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/6ac3f7679fd5ceb2af42aa67.md
@@ -0,0 +1,39 @@
+---
+id: 6ac3f7679fd5ceb2af42aa67
+title: تكرار الإجراءات باستخدام الحلقات في C#
+challengeType: 19
+dashedName: repeat-actions-with-loops-in-c-sharp
+---
+
+# --description--
+
+سيُنجز هذا التحدي جزئيًا على منصة Microsoft Learn. اتبع هذه التعليمات لإكمال التحدي:
+
+1. انتقل إلى https://learn.microsoft.com/en-us/training/modules/csharp-repeat-actions-loops/ وأكمل جميع المهام في وحدة "تكرار الإجراءات باستخدام الحلقات في C#". هذا **مطلوب** للحصول على جائزة "إنشاء وتشغيل تطبيقات وحدة تحكم C# بسيطة" على Microsoft Learn، والتأهل لاختبار الشهادة.
+1. عند الانتهاء، عد وأجب عن السؤال أدناه بشكل صحيح.
+
+# --assignment--
+
+أكمل وحدة تكرار الإجراءات باستخدام الحلقات في C# على Microsoft Learn. ثم أجب عن السؤال أدناه.
+
+# --questions--
+
+## --text--
+
+أي حلقة تناسب أفضل عندما تعرف مسبقًا عدد المرات التي تريد تكرار الإجراء فيها؟
+
+## --answers--
+
+حلقة `while`.
+
+---
+
+حلقة `for`.
+
+---
+
+جملة `if`.
+
+## --video-solution--
+
+2
diff --git a/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/6ac3f76d9fd5ceb2af42aa68.md b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/6ac3f76d9fd5ceb2af42aa68.md
new file mode 100644
index 00000000000..81c40bc520e
--- /dev/null
+++ b/curriculum/challenges/arabic/blocks/create-and-run-simple-c-sharp-console-applications/6ac3f76d9fd5ceb2af42aa68.md
@@ -0,0 +1,39 @@
+---
+id: 6ac3f76d9fd5ceb2af42aa68
+title: تنظيم البيانات باستخدام المصفوفات والقوائم في C#
+challengeType: 19
+dashedName: organize-data-with-arrays-and-lists-in-c-sharp
+---
+
+# --description--
+
+سيُنجز هذا التحدي جزئيًا على منصة Microsoft Learn. اتبع هذه التعليمات لإكمال التحدي:
+
+1. انتقل إلى https://learn.microsoft.com/en-us/training/modules/csharp-arrays-lists/ وأكمل جميع المهام في وحدة "تنظيم البيانات باستخدام المصفوفات والقوائم في C#". هذا **مطلوب** للحصول على جائزة "إنشاء وتشغيل تطبيقات وحدة تحكم C# بسيطة" على Microsoft Learn، وللتأهل لاختبار الشهادة.
+1. عند الانتهاء، عد وأجب عن السؤال أدناه بشكل صحيح.
+
+# --assignment--
+
+أكمل وحدة تنظيم البيانات باستخدام المصفوفات والقوائم في C# على Microsoft Learn. ثم أجب عن السؤال أدناه.
+
+# --questions--
+
+## --text--
+
+أي طريقة تضيف عنصرًا جديدًا إلى نهاية `List
+
عندما تبحث عن `freecodecamp curriculum`، سيُرجع محرك البحث نتائج تطابق *أي* من هذه الكلمات المفتاحية – عادةً مرتبة حسب الصلة (مدى احتمال تطابقها أو ارتباطها بمعظم استعلامك).
لكن ماذا لو أردت نتائج تطابق كلا الكلمتين المفتاحيتين فقط؟ ربما سمعت أنه يمكنك وضع الاستعلام بين علامات اقتباس، مثل `"freecodecamp curriculum"`.
+
+
مع ذلك، هذا الاستعلام يطابق *العبارة* `freecodecamp curriculum` تحديدًا. هذا يعني أن النتائج التي سترىها ستقتصر على المواقع التي تقول `freecodecamp curriculum` معًا، وليس المواقع التي تقول `freecodecamp` وَ `curriculum`.
إذا أردت مطابقة المواقع التي تحتوي على كلا المصطلحين، لكن ليس بالضرورة متجاورين كعبارة، يمكنك وضع بادئة علامة زائد لكل مصطلح هكذا: `+freecodecamp +curriculum`
+
+
بدلاً من ذلك، ربما تهتم بمبادرات freeCodeCamp خارج المنهج. في هذه الحالة، يمكنك وضع بادئة علامة ناقص على المصطلح `curriculum` هكذا: `+freecodecamp -curriculum`.
+
+
هذا سيُرجع نتائج تذكر `freecodecamp`، لكنه يستبعد النتائج التي تذكر أيضًا `curriculum`.
أو ربما لديك موقع محدد تريد البحث فيه، مثل منصتنا الإخبارية؟ يمكنك استخدام `site:` متبوعًا بعنوان URL للموقع الذي تريد البحث فيه: `site:freecodecamp.org/news curriculum`.
+
+
هذا الاستعلام يُرجع كل النتائج من `freecodecamp.org/news` التي تحتوي على كلمة `curriculum`.
بدمج هذه الأدوات، يمكنك صياغة استعلامات محددة جدًا للحصول على المعلومات التي تحتاجها بالضبط.
على سبيل المثال، الاستعلام `site:freecodecamp.org/news +python -curriculum` سيبحث عن مقالات بايثون في موقع الأخبار الخاص بنا، مستبعدًا المقالات التي قد تتحدث عن المنهج.
+
+
قد تختلف عوامل البحث، لذا من المهم دائمًا مراجعة الوثائق الخاصة بمحرك البحث الذي تفضله.
لكن يجب أن تكون الآن قادرًا على الحصول على النتائج الدقيقة التي تريدها من عمليات البحث على الويب.
diff --git a/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/68420bd261d0d35f61922d4b.md b/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/68420bd261d0d35f61922d4b.md
index 3d273ab0f15..a3563a621f7 100644
--- a/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/68420bd261d0d35f61922d4b.md
+++ b/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/68420bd261d0d35f61922d4b.md
@@ -13,6 +13,8 @@ dashedName: how-do-classes-work-and-how-do-they-differ-from-objects
لنلقِ نظرة على ما هي الأصناف، وكيف تستخدمها لإنشاء الكائنات.
+## إنشاء صنف
+
لإنشاء صنف، تستخدم الكلمة المفتاحية `class` متبوعة باسم الصنف ونقطتين. ثم داخل الصنف، يمكنك إضافة مُهيئ، بالإضافة إلى أي خصائص وطرق.
الخصائص تشبه المتغيرات داخل الصنف، وتُستخدم لتخزين البيانات. الطرق هي دوال معرفة داخل الصنف، وهي الأفعال التي يمكن للكائنات التي تُنشأ من الصنف تنفيذها.
@@ -42,6 +44,8 @@ class ClassName:
* `print(self.name.upper())` هو ما ستفعله طريقة `sample_method`، في هذه الحالة، تطبع الاسم بأحرف كبيرة.
+## مثال على صنف `Dog`
+
إذا بدا لك كل هذا كثيرًا، لا تقلق. لنلقِ نظرة على مثال مشابه لصنف `Dog`، وكيف يمكنك إنشاء كائنات منه:
```python
@@ -54,6 +58,8 @@ class Dog:
print(f"{self.name.upper()} says woof woof!")
```
+## إنشاء كائنات من صنف
+
مع هذا الصنف `Dog`، يمكنك إنشاء كائن. إليك الصيغة النحوية الأساسية لإنشاء كائنات من صنف:
```python
@@ -91,6 +97,8 @@ dog_2.bark() # THATCHER says woof woof! I'm 5 years old!
ثم عند استدعاء طريقة `.bark()` على `dog_1` و `dog_2`، يمكنك رؤية كيف تختلف المخرجات، وتستخدم الخصائص الفريدة `name` و `age` التي مررتها عند إنشاء كل كائن.
+## الفروقات بين الأصناف والكائنات
+
باختصار، الفرق بين الصنف والكائن هو أن الصنف هو القالب أو المخطط، والكائن هو ما يُنشأ باستخدام ذلك القالب.
أيضًا، يحدد الصنف البيانات والسلوك الذي يجب أن يمتلكه الكائن، والكائن يحمل البيانات الفعلية ويستخدم ذلك السلوك. تكتب الصنف مرة واحدة، ويمكنك إنشاء العديد من الكائنات منه، كل منها ببيانات مختلفة.
diff --git a/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/6874b7d3b286c538b39d0c25.md b/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/6874b7d3b286c538b39d0c25.md
index 5c8d0a2c21c..0c8efb6144a 100644
--- a/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/6874b7d3b286c538b39d0c25.md
+++ b/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/6874b7d3b286c538b39d0c25.md
@@ -7,6 +7,8 @@ dashedName: what-are-special-methods-and-what-are-they-used-for
# --description--
+## ما هي الطرق الخاصة؟
+
الطرق الخاصة في Python، المعروفة أيضًا باسم "الطرق السحرية" أو "طرق dunder"، هي طرق Python خاصة تبدأ وتنتهي بشرطتين سفليتين مزدوجتين (`__`). كلمة "dunder" نفسها مشتقة من الشرطتين السفليتين المزدوجتين (**d** من double، **under** من underscores).
ربما استخدمت الطرق الخاصة بالفعل دون أن تعرف ذلك. في كل مرة تكتب شيئًا مثل `3 + 4`، يقوم Python بهدوء بتنفيذ `3.__add__(4)` خلف الكواليس. هذه طريقة خاصة تعمل. لذلك، رغم أنه يمكنك *استدعاء* الطرق الخاصة مباشرة، إلا أنك نادرًا ما تفعل ذلك. شيء مثل `3 + 4` أوضح وأسهل في القراءة من استدعاء `3.__add__(4)` بنفسك.
@@ -15,6 +17,8 @@ dashedName: what-are-special-methods-and-what-are-they-used-for
فكر في الطرق الخاصة كمخرجين للأنشطة بين المبرمج ومفسر لغة Python نفسه.
+## متى يستدعي Python الطرق الخاصة
+
تذكر، لا تحتاج إلى استدعاء الطرق الخاصة مباشرة. بدلاً من ذلك، يستدعيها Python تلقائيًا عند حدوث إجراءات معينة. تشمل هذه العمليات:
- **العمليات الحسابية مثل الجمع والطرح والضرب والقسمة وغيرها**. للجمع، تُستدعى `__add__()`، وللطرح `__sub__()`، وللضرب `__mul__()`، وللقسمة `__truediv__()`.
@@ -26,6 +30,8 @@ dashedName: what-are-special-methods-and-what-are-they-used-for
- **عمليات التكرار مثل جعل الكائن قابلًا للتكرار والتقدم عبر العناصر**. تُستدعى `__iter__()` لإرجاع مكرر و `__next__()` لجلب العنصر التالي.
+## لماذا تحتاج الأصناف المخصصة إلى طرق خاصة
+
عادةً، أنواع بيانات Python مثل السلاسل النصية والأرقام تعرف بالفعل كيف تضيف الأشياء، وتربط السلاسل، وتقارن للتساوي، وتُستخدم في الحلقات، وغيرها.
لكن عندما تنشئ صنفك الخاص، لن يعرف Python كيف يتعامل مع الأشياء تلقائيًا.
@@ -57,6 +63,8 @@ print(book1 == book2) # False even though they have the same number of pages
- كانت نتيجة `book1 == book2` هي `False` لأن Python فقط يتحقق مما إذا كان الكائنان نفسهما في الذاكرة، وليس بالمحتوى.
+## تعريف طرقك الخاصة
+
إليك كيف يمكنك تعريف طرق خاصة خاصة بك مثل `__len__()` و `__str__()` و `__eq__()` لتسهيل العمل مع الكائنات التي تُنشأ من صنف `Book`:
```python
@@ -84,6 +92,8 @@ print(str(book2)) # 'Be Your Own Start' has 420 pages
print(book1 == book2) # True
```
+## مثال على عربة التسوق
+
مثال آخر هو عربة التسوق حيث تقوم بما يلي:
- إضافة عناصر إلى العربة
diff --git a/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/6908d38f7cccc31602743340.md b/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/6908d38f7cccc31602743340.md
index 824e69a8701..3e00bb46a4e 100644
--- a/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/6908d38f7cccc31602743340.md
+++ b/curriculum/challenges/arabic/blocks/lecture-classes-and-objects/6908d38f7cccc31602743340.md
@@ -30,6 +30,8 @@ print(my_car.model) # Gallardo
تتيح لك هذه الدوال الوصول إلى الخصائص، إنشاؤها، التحقق منها، وحذفها باستخدام أسماء متغيرة. دعنا نلقي نظرة على كل واحدة منها أثناء العمل.
+## `getattr()`
+
تجعل `getattr()` من الممكن قراءة خاصية من كائن عندما لا تعرف اسمها حتى وقت التشغيل. إذا لم تكن الخاصية موجودة، ترفع استثناء `AttributeError`، إلا إذا وفرت قيمة افتراضية.
لاستخدامها، تمرر الكائن، اسم الخاصية، وقيمة افتراضية اختيارية:
@@ -75,6 +77,8 @@ print(getattr(person, attr_name, 'Attribute not found'))
هنا بالضبط يتألق التعامل الديناميكي مع الخصائص. فهو يسمح لكودك بالاستجابة للمُدخلات والبيانات التي لم يسبق له رؤيتها.
+## عرض الخصائص باستخدام `dir()`
+
بالإضافة إلى ذلك، قد ترغب في استعراض كل الخصائص التي يمتلكها كائن، وليس فقط التي تعرفها مسبقًا. الدالة المدمجة `dir()` تتيح لك ذلك. تعيد قائمة بكل أسماء الخصائص على الكائن. إليك كيفية استخدامها:
```python
@@ -99,6 +103,8 @@ for attr in dir(person):
في الحلقة أعلاه، `callable()` هي دالة مدمجة تعيد `True` إذا كان الكائن الممرر إليها يمكن استدعاؤه كدالة أو طريقة، و `False` خلاف ذلك. بفحص `not callable(getattr(person, attr))`، تتخطى الحلقة الطرق وتطبع فقط خصائص البيانات مثل `name` و `age`.
+## `setattr()`
+
تتيح لك دالة `setattr()` إنشاء خاصية جديدة أو تحديث خاصية موجودة بشكل ديناميكي. الصيغة تبدو هكذا:
```python
@@ -128,6 +134,8 @@ print(config_obj.server_url) # https://api.example.com
print(config_obj.timeout_sec) # 30
```
+## `hasattr()`
+
هناك أيضًا `hasattr()`. قبل أن تفعل شيئًا مع خاصية أو تحذفها، من الممارسات الجيدة التحقق من وجودها. هذا ما تفعله `hasattr()`. تتحقق من وجود الخاصية وتعيد `True` أو `False` بناءً على النتيجة.
إليك الصيغة النحوية الأساسية:
@@ -163,6 +171,8 @@ for attr in required_attributes:
حدث خطأ ERROR لأن `inventory_id` مفقودة من صنف `Product` ومن نسخته.
+## `delattr()`
+
أخيرًا، تتيح لك `delattr()` حذف خاصية بشكل ديناميكي:
```python
diff --git a/curriculum/challenges/arabic/blocks/lecture-introduction-to-git-and-github/6882904fd7063f7258c0aef3.md b/curriculum/challenges/arabic/blocks/lecture-introduction-to-git-and-github/6882904fd7063f7258c0aef3.md
index 11dbb628d7b..62f2ea2cdbe 100644
--- a/curriculum/challenges/arabic/blocks/lecture-introduction-to-git-and-github/6882904fd7063f7258c0aef3.md
+++ b/curriculum/challenges/arabic/blocks/lecture-introduction-to-git-and-github/6882904fd7063f7258c0aef3.md
@@ -7,10 +7,14 @@ dashedName: how-do-you-handle-security-requirements-like-ssh-and-gpg-keys
# --description--
+## ما هي مفاتيح SSH و GPG؟
+
قبل أن تدفع المستودع الخاص بك إلى GitHub، يجب أن تكون مُوثَّقًا. تستخدم مفاتيح SSH و GPG زوجًا من المفتاح العام والخاص. هذا يعني أنك تحتفظ بمفتاح خاص على جهازك المحلي، تستخدمه للمصادقة على نفسك. تشارك مفتاحًا عامًا مع الأشخاص أو الخدمات التي تحتاج إلى التحقق من مصادقتك. بعبارة أخرى، المفتاح الخاص مطلوب لأداء إجراء، والمفتاح العام يُستخدم للتحقق من هذا الإجراء.
مفاتيح GPG، أو GNU Privacy Guard، تُستخدم عادةً لتوقيع الملفات أو الاستدعاءات. يمكن لأي شخص بعد ذلك استخدام مفتاح GPG العام الخاص بك للتحقق من أن توقيع الملف صادر عن مفتاحك وأن محتويات الملف لم تُعدّل أو تُعبث بها. مفاتيح SSH، أو Secure SHell، تُستخدم عادةً للمصادقة على اتصال بعيد بخادم عبر أداة `ssh`. ومع ذلك، كما ستتعلم في هذا الدرس، يمكنك أيضًا استخدام مفتاح SSH لتوقيع الاستدعاءات.
+## توليد مفاتيح SSH و GPG
+
لتوليد مفتاح GPG، ستحتاج إلى تشغيل:
```sh
@@ -27,6 +31,8 @@ ssh-keygen -t ed25519 -C "your_email@example.com"
يجب أن تطلب كلا الأمرين عبارة مرور لتأمين المفتاح. هذه العبارة اختيارية، لكنها موصى بها بشدة.
+## العثور على مفاتيحك العامة
+
بالنسبة لمفاتيح SSH، ستحصل على ملفين - واحد لمفتاحك الخاص، وآخر لمفتاحك العام. أسماء ملفات المفتاح العام تنتهي بـ `.pub`، حتى لا تشارك مفتاحك الخاص عن طريق الخطأ. ستكون هذه الملفات في `~/.ssh`.
أما مفاتيح GPG فستكون في مجلد مخفي ومشفر. بدلاً من ذلك، لعرض مفاتيحك العامة، ستشغل:
@@ -41,6 +47,8 @@ gpg --list-secret-keys --keyid-format=long
gpg --armor --export "| Linux، macOS، وPowerShell | |||||||||||||||||
| إكمال اقتراح (الإكمال التلقائي باستخدام Tab) | +إكمال اقتراح (الإكمال باستخدام Tab) | Tab | -Linux، macOS، وPowerShell (مصدر الاقتراح يختلف حسب الصدع - على سبيل المثال، يستخدم zsh سجل الأوامر الأخير، بينما يستخدم PowerShell الأوامر والمتغيرات والمعلمات المتاحة) | +Linux و macOS و PowerShell (تعتمد الاقتراحات على الصدفة، والأمر الذي تكتبه، وتكوينك) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| مسح الطرفية | @@ -58,12 +70,12 @@ dashedName: what-are-some-shortcuts-you-can-use-in-the-command-line-to-speed-up-|||||||||||||||||
| مقاطعة عملية جارية | Control + C | -Linux، macOS، وPowerShell (في PowerShell يُستخدم أيضًا لنسخ النص، وينهي العملية فقط عندما لا يكون هناك نص محدد للنسخ) | +Linux و macOS و PowerShell (في PowerShell يُستخدم أيضًا لنسخ النص، ويقاطع الأمر فقط عندما لا يكون هناك نص محدد للنسخ) | ||||||||||||||
| نقل عملية إلى الخلفية | +تعليق العملية في المقدمة | Control + Z | -Linux وmacOS فقط، لا يوجد بديل في PowerShell | +Linux و macOS فقط، لا يوجد بديل في PowerShell (استخدم bg لاستئنافها في الخلفية أو fg لاستئنافها في المقدمة) |
|||||||||||||
| إعادة تشغيل الأمر السابق | @@ -123,11 +135,11 @@ dashedName: what-are-some-shortcuts-you-can-use-in-the-command-line-to-speed-up- ### --feedback-- -هذا الاختصار يسمح لك بتعدد المهام أثناء تشغيل عملية. +يتيح لك هذا الاختصار إيقاف أمر مؤقتًا والعودة إليه لاحقًا. --- -يضع العملية الحالية في الخلفية. +يعلق العملية الحالية في المقدمة. --- @@ -135,7 +147,7 @@ dashedName: what-are-some-shortcuts-you-can-use-in-the-command-line-to-speed-up- ### --feedback-- -هذا الاختصار يسمح لك بتعدد المهام أثناء تشغيل عملية. +يتيح لك هذا الاختصار إيقاف أمر مؤقتًا والعودة إليه لاحقًا. --- @@ -143,7 +155,7 @@ dashedName: what-are-some-shortcuts-you-can-use-in-the-command-line-to-speed-up- ### --feedback-- -هذا الاختصار يسمح لك بتعدد المهام أثناء تشغيل عملية. +يتيح لك هذا الاختصار إيقاف أمر مؤقتًا والعودة إليه لاحقًا. ## --video-solution-- diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e944b821130283dc83b2e.md b/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e944b821130283dc83b2e.md index 47678ad266b..f555e15e041 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e944b821130283dc83b2e.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e944b821130283dc83b2e.md @@ -9,14 +9,20 @@ dashedName: what-is-bash-and-what-are-some-bash-commands دعنا نتعلم عن Bash وبعض أوامره الأساسية. +## ما هو Bash؟ + Bash تعني Bourne Again SHell، وهي على الأرجح أكثر واجهات الأوامر شيوعًا التي ستواجهها في بيئات شبيهة بـ Unix. لذلك، من المفيد جدًا أن تفهم كيفية التنقل في هذه الواجهة واستخدام الأوامر الشائعة. +## أوامر التنقل في نظام الملفات + الأمر الأول هو `pwd`، الذي يطبع الدليل الحالي للعمل في الطرفية. يشير "الدليل الحالي للعمل" إلى الدليل الذي تشير إليه الطرفية حاليًا، وهو أمر مهم معرفته للعديد من هذه الأوامر الأخرى. من الممكن تمامًا أن تكون الطرفية تشير إلى دليل خاطئ. يسمح لك الأمر `cd` بتغيير الأدلة. يمكنك تحديد مسار مطلق يبدأ بشرطة مائلة للأمام (`/`)، أو مسار نسبي بدون بادئة، واستخدام صيغة النقطتين (`..`) للصعود إلى الدليل الأب. الأمر التالي هو `ls`، الذي يعرض محتويات الدليل الحالي للعمل. هذا مفيد لمعرفة ما إذا كان هناك ملف أو مجلد في دليلك. يأخذ أمر `ls` أيضًا علامات لعرض الملفات المخفية (العلامة `-a`)، أذونات الملفات (العلامة `-l`)، وميزات أخرى. ستتعلم المزيد عن علامات الأوامر في الدرس التالي. يمكنك أيضًا استخدام `less` أو `cat` لعرض محتويات ملف. +## أوامر إدارة الملفات + ماذا لو لم يحتوي الدليل على الملف أو المجلد الذي تحتاجه؟ هناك أوامر تسمى `mkdir` و `touch` تسمح لك بإنشائها. ينشئ `mkdir` دليلًا جديدًا أو مجلدًا، و`touch` ينشئ ملفًا جديدًا. كلا الأمرين يقبلان اسم الملف أو المجلد الذي تريد إنشاؤه. على سبيل المثال، `touch readme.md` ينشئ ملف Markdown جديد باسم `readme.md`. ربما لم يكن يجب تسمية ملفك الجديد `readme.md`، بل يجب أن يكون `readthis.md`. لحسن الحظ، يسمح لك الأمر `mv` بنقل (أو إعادة تسمية) ملف. يأخذ اسم الملف القديم واسم الملف الجديد. @@ -25,8 +31,12 @@ Bash تعني Bourne Again SHell، وهي على الأرجح أكثر واجه يمكن استخدام الأمر `cp` لنسخ ملف أو مجلد إلى موقع جديد. على عكس الأمر `mv`، لا يحذف الأمر `cp` الملف الأصلي - ولنسخ مجلد، ستحتاج إلى تمرير العلامة `-r`. +## إخراج النص في وحدة التحكم + يمكن اعتبار الأمر `echo` معادل Bash لدالة `console.log()` أو `print()`. يأخذ `echo` معلمة سلسلة نصية، ملفوفة بين علامات اقتباس، ويطبعها في الطرفية. قد يبدو هذا سخيفًا لتشغيله في الطرفية فقط للحصول على نص في الطرفية، لكن يمكنك ربط `echo` برمز تحكم. يسمح الرمز `>` بتحديد اسم ملف لإنشائه أو استبداله بالسلسلة الجديدة، مثل `echo "Naomi was here." > readme.md`، والرمز `>>` يضيف إلى الملف. +## أوامر Bash الأخرى + هناك العديد من أوامر Bash الأخرى المتاحة لك، مثل `head`، `tail`، `chown`، و `chmod`. سيكون من المستحيل تغطيتها جميعًا في هذا الدرس. لكن يمكنك استخدام الأمر `man` لرؤية الدليل أو صفحة المساعدة لأي أمر تقريبًا. من المحتمل أن تتذكر الأوامر التي تستخدمها بشكل متكرر. وللباقي، يمكنك دائمًا مراجعة صفحة الدليل. diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e947ae3ea7d2867c3d0e1.md b/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e947ae3ea7d2867c3d0e1.md index a495cecebcc..e5fb2beca7e 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e947ae3ea7d2867c3d0e1.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e947ae3ea7d2867c3d0e1.md @@ -21,25 +21,31 @@ dashedName: what-are-some-command-options-and-flags ميزة هذه الخيارات القصيرة هي أنه يمكنك ربط عدة أعلام معًا. بدلًا من `ls --all --human-readable --size` يمكنك استخدام الحروف المفردة كلها مرة واحدة مع `ls -ahs`. -بعض الخيارات تتوقع تمرير قيمة لها. +بعض الخيارات تتوقع تمرير قيمة لها. طريقة تمرير هذه القيمة تعتمد على ما إذا كان الخيار يتطلب قيمة أم يقبلها بشكل اختياري فقط. -عند استخدام الخيارات بصيغة طويلة، عادةً تحتاج إلى استخدام علامة المساواة. في هذه الصيغة، تُلصق القيمة مباشرةً بالخيار باستخدام رمز المساواة (`=`). إليك مثالًا لتعديل سلوك `ls` ليشمل أو يستبعد الألوان: +عندما يتطلب الخيار بصيغة قصيرة قيمة، عادةً تفصل القيمة بمسافة. على سبيل المثال، هذا هو الخيار بصيغة قصيرة لتعيين `width` لنتيجة `ls`: ```bash -ls --color=never +ls -w 50 ``` -عند استخدام الخيارات بصيغة قصيرة، عادةً تفصل القيمة بمسافة. على سبيل المثال، هذه هي الخيارات بصيغتيها الطويلة والقصيرة لتعيين `width` لنتيجة `ls`: +عندما يتطلب الخيار بصيغة طويلة قيمة، تقبل أدوات GNU مثل `ls` القيمة إما بعد رمز يساوي (`=`) أو مفصولة بمسافة. كلا الأمرين يضبطان نفس العرض: ```bash -ls -w 50 +ls --width=50 ``` ```bash -ls --width=50 +ls --width 50 +``` + +بعض الخيارات بصيغة طويلة تقبل القيمة بشكل اختياري فقط. في هذه الحالة، يجب إرفاق القيمة بالخيار باستخدام رمز يساوي (`=`). على سبيل المثال، خيار `--color` في `ls` يمكن استخدامه بمفرده، أو مع قيمة تشمل أو تستثني الألوان: + +```bash +ls --color=never ``` -لاحظ كيف تستخدم الصيغة القصيرة `-w 50`، بينما تستخدم الصيغة الطويلة `--width=50`. هذا التمييز مهم لتجنب تمرير قيمة الخيار كمعلمة موضعية بدلًا من ذلك. +إذا كتبت `ls --color never` بدلاً من ذلك، سيعامل `ls` كلمة `never` كمعلمة موضعية، أي اسم ملف ليتم عرضه، بدلاً من أن تكون قيمة لخيار `--color`. من المهم معرفة هذا التمييز لتجنب تمرير قيمة الخيار كمعلمة موضعية عن طريق الخطأ. لكن إذا لم تكن متأكدًا، تذكر أنه يمكنك عادةً استخدام علم `--help` لرؤية الصيغة النحوية المتوقعة للخيارات! @@ -119,7 +125,7 @@ ls --width=50 ## --text-- -عند استخدام خيار بصيغة طويلة يتطلب قيمة، ما الصيغة النحوية التي تُستخدم عادةً؟ +عندما يقبل الخيار بصيغة طويلة القيمة بشكل اختياري فقط، مثل `--color` مع `ls`، ما الصيغة التي يجب استخدامها لتمرير القيمة؟ ## --answers-- @@ -127,7 +133,7 @@ ls --width=50 ### --feedback-- -تذكر مثال تعيين `width` باستخدام الخيار بصيغة طويلة. +تذكر ماذا يحدث للقيمة في الأمر `ls --color never`. --- @@ -139,7 +145,7 @@ ls --width=50 ### --feedback-- -تذكر مثال تعيين `width` باستخدام الخيار بصيغة طويلة. +تذكر المثال الخاص بإيقاف الألوان باستخدام خيار `--color`. --- @@ -147,7 +153,7 @@ ls --width=50 ### --feedback-- -تذكر مثال تعيين `width` باستخدام الخيار بصيغة طويلة. +تذكر المثال الخاص بإيقاف الألوان باستخدام خيار `--color`. ## --video-solution-- diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687f0a1d5b7c4f21a9d8e123.md b/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687f0a1d5b7c4f21a9d8e123.md index 99d9de7d0f2..7b96c14910c 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687f0a1d5b7c4f21a9d8e123.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-the-command-line-and-working-with-bash/687f0a1d5b7c4f21a9d8e123.md @@ -7,12 +7,16 @@ dashedName: how-do-you-configure-your-system-language-for-bash-and-postgresql-wo # --description-- +## لماذا يهم تخطيط لوحة المفاتيح لديك؟ + تعلم كيف تؤثر لغة النظام وإعدادات لوحة المفاتيح على ورش عمل Bash وPostgreSQL. تتوقع العديد من أدوات البرمجة أن تستخدم الأوامر أحرف لوحة مفاتيح إنجليزية قياسية. في ورش عمل Bash وPostgreSQL، هذا مهم جدًا للرموز مثل الفواصل المنقوطة (`;`)، وعلامات الاقتباس، والشرط المائلة، وغيرها من الأحرف الخاصة. إذا كان نظام التشغيل أو تخطيط لوحة المفاتيح لديك يستخدم لغة غير الإنجليزية، فقد تتصرف بعض الأحرف بشكل مختلف عن المتوقع. هذا قد يؤدي إلى أخطاء مربكة عند إدخال أوامر SQL أو أوامر الطرفية. +## التبديل إلى تخطيط لوحة مفاتيح الولايات المتحدة + للحصول على أفضل تجربة أثناء العمل في هذه الورش، يُنصح بالتبديل مؤقتًا إلى تخطيط لوحة مفاتيح الإنجليزية (الولايات المتحدة) أثناء إكمال الدورة. هذا مفيد خصوصًا إذا كانت أوامر Bash أو PostgreSQL تُنتج أحرفًا غير متوقعة أو أخطاء صيغة نحوية عند كتابة رموز مثل `;` أو `\`. يستخدم GitHub Codespaces تخطيط لوحة المفاتيح المحلي لديك، لذا فإن تغيير التخطيط على جهازك سيؤثر أيضًا على الكتابة داخل Codespaces. @@ -48,6 +52,8 @@ setxkbmap -query setxkbmap us ``` +## اختبار تخطيط لوحة المفاتيح لديك + بعد التبديل بين التخطيطات، اختبر الأحرف التالية في مربع نص أو الطرفية: ```md @@ -58,7 +64,9 @@ setxkbmap us تعامل بعض التخطيطات غير الإنجليزية مع أحرف مثل `'` و`"` كأحرف ميتة، أي أنها تنتظر ضغطة مفتاح تالية بدلاً من الكتابة فورًا. بعد التبديل إلى تخطيط US، يجب أن تُكتب هذه الأحرف فورًا. إذا لم يظهر الحرف فورًا، فهذا دليل على أن التخطيط لم يتبدل بالكامل. -إذا كنت تستخدم تخطيط لوحة مفاتيح مادي غير US مثل AZERTY أو QWERTZ أو متغيرات QWERTY إقليمية، فقد تكون مفاتيح الرموز في مواقع فيزيائية مختلفة. في هذه الحالة، استخدم لوحة المفاتيح على الشاشة أو عارض لوحة المفاتيح في نظام التشغيل لتحديد مواقع مفاتيح مثل `;`، `/`، `\`، `|`، `'`، و`"` بعد التبديل إلى تخطيط US. +## استخدام لوحة مفاتيح فعلية غير أمريكية + +إذا كنت تستخدم تخطيط لوحة مفاتيح فعلية غير أمريكية مثل AZERTY أو QWERTZ أو نسخ QWERTY الإقليمية، فقد تكون مفاتيح الرموز في مواقع فعلية مختلفة. في هذه الحالة، استخدم لوحة المفاتيح على الشاشة أو عارض لوحة المفاتيح في نظام التشغيل لتحديد مواقع مفاتيح مثل ;، /، \\، |، '، و" بعد التبديل إلى تخطيط الولايات المتحدة. يساعد استخدام تخطيط لوحة مفاتيح الإنجليزية (الولايات المتحدة) على ضمان أن أوامر Bash وPostgreSQL تعمل تمامًا كما هو متوقع طوال الورشة. diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67d2ff1996e4ae9e67170502.md b/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67d2ff1996e4ae9e67170502.md index 8c630cf620d..dde4503cc7e 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67d2ff1996e4ae9e67170502.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67d2ff1996e4ae9e67170502.md @@ -9,6 +9,8 @@ dashedName: what-is-unit-testing أثناء تصميم تطبيقاتك، غالبًا ما يكون لديك سلسلة من الدوال الصغيرة المسؤولة عن شيء واحد. يُعرف هذا بمبدأ "المسؤولية الواحدة". عندما يكون لديك سلسلة من الدوال الصغيرة، من الأفضل اختبار هذه الدوال للتأكد من أن كل شيء يعمل كما هو متوقع. في هذا الدرس، سنلقي نظرة على كيفية إنشاء اختبار وحدة باستخدام إطار العمل الشائع Jest. +## الدالة التي يجب اختبارها + في هذا المثال، سننشئ دالة مسؤولة عن إرجاع سلسلة نصية مُنسقة حديثًا: ```js @@ -20,6 +22,8 @@ export function getFormattedWord(str) { تحتوي دالة `getFormattedWord` على معلمة تسمى `str` وستتحقق أولًا مما إذا كانت `str` فارغة. إذا كانت كذلك، فستُرجع سلسلة نصية فارغة. وإلا، فستُرجع سلسلة جديدة حيث تُكتب الحرف الأول بحرف كبير. نحن نصدر هذه الدالة حتى نتمكن من استخدامها في ملف اختبار. +## كتابة اختبارك الأول + في ملف منفصل باسم `getFormattedWord.test.js`، يمكننا كتابة بعض الاختبارات للتحقق من أن الدالة تقوم بما يُفترض بها القيام به. في أعلى ملف `getFormattedWord.test.js`، نحتاج أولًا إلى استيراد الدالة بهذه الطريقة: @@ -38,6 +42,8 @@ test('capitalizes the first letter of a word', () => { تُستخدم دالة `expect` لاختبار قيمة. تُدمج مع matcher، وهي دالة تتحقق مما إذا كانت القيمة تتصرف كما هو متوقع. في هذه الحالة، الـ matcher هو `toBe()`. لدى Jest مجموعة متنوعة من matchers لمساعدتك في اختبار القيم الحقيقية، والسلاسل النصية، والأرقام، والمزيد. +## تشغيل اختباراتك + إحدى الطرق لتشغيل اختباراتك هي إضافة سكربت npm إلى ملف `package.json` الخاص بك. إليك مثالًا على سكربت لإطار العمل Jest: ```js @@ -59,6 +65,8 @@ Time: 0.103 s, estimated 1 s Ran all test suites. ``` +## كيف يبدو الاختبار الفاشل + لرؤية كيف يبدو اختبار فاشل، يمكننا عمدًا كسر الاختبار بتحديث الدالة إلى ما يلي: ```js @@ -97,6 +105,8 @@ Time: 0.121 s, estimated 1 s Ran all test suites. ``` +## إضافة اختبار آخر + الآن يمكننا تحديث دالتنا مرة أخرى إلى الأصلية هنا: ```js @@ -116,6 +126,8 @@ test("returns an empty string when no argument is provided", () => { هناك اختبارات أخرى يمكنك إضافتها لجعل الأمور أكثر متانة، لكن هذين الاختبارين الأولين مقدمة جيدة لاختبار الوحدة. +## أُطُر العمل الشائعة للاختبار + عندما يتعلق الأمر باختبار تطبيقات JavaScript، تشمل أطر العمل الشائعة للاختبار Jest وMocha وVitest. اختبار الوحدة مهم لأنه يساعدك على اكتشاف المزيد من الأخطاء البرمجية في برامجك، ويضمن أن كل شيء يعمل كما هو متوقع. كما يمكن أن يكون شكلًا من أشكال التوثيق لتطبيقك لأنه يهدف إلى تمثيل السلوك المتوقع لكودك. diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67db30fedfa0b22a1a2a570c.md b/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67db30fedfa0b22a1a2a570c.md index bd56eda22ed..085192bed9a 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67db30fedfa0b22a1a2a570c.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67db30fedfa0b22a1a2a570c.md @@ -27,18 +27,32 @@ dashedName: what-is-the-software-development-life-cycle-and-how-does-it-relate-t لنلقِ نظرة أقرب على كل هذه المراحل بتفصيل أكبر. +## مرحلة التخطيط + في مرحلة التخطيط، يجمع فريق التطوير المتطلبات للعمل المقترح من أصحاب المصلحة. صاحب المصلحة هو شخص له مصلحة مباشرة في نجاح المنتج أو الخدمة. من أمثلة أصحاب المصلحة المستثمرون، المالكون، أو حتى الموظفون الآخرون. تشمل مرحلة التخطيط أيضًا تقدير تكاليف العمل وإنشاء جدول زمني لإنجاز العمل. +## مرحلة التصميم + المرحلة التالية هي مرحلة التصميم. في هذه المرحلة، يقوم فريق البرمجيات بتفصيل المتطلبات وتحديد أفضل الطرق للحلول. يشمل ذلك تحديد الأدوات الخارجية التي يمكن استخدامها للمساعدة، وما هي الأدوات الداخلية التي يجب بناؤها لإنجاز المهمة. +## مرحلة التنفيذ + بعد مرحلة التصميم، تأتي مرحلة التنفيذ. تتضمن هذه المرحلة تقسيم المتطلبات إلى مهام قابلة للإدارة يوزعها الفريق فيما بينهم ويبنونها. +## مرحلة الاختبار + عند الانتهاء من مرحلة التنفيذ، ينتقل فريق البرمجيات إلى مرحلة الاختبار. تشمل هذه المرحلة الاختبار اليدوي والآلي للعمل الجديد. أحيانًا يختبر الفريق التطبيق طوال مرحلة التطوير بأكملها لاكتشاف وإصلاح أي مشكلات تظهر. +## مرحلة التشغيل + المرحلة التالية هي مرحلة التشغيل. هنا ينشر الفريق التغييرات الجديدة إلى بيئة بناء أو اختبار. يسمح ذلك للفريق باختبار التطبيق أكثر وإصلاح أي مشكلات قبل أن تذهب التغييرات إلى الإنتاج. التطبيق الإنتاجي هو التطبيق الذي يستخدمه المستخدمون النهائيون. +## مرحلة الصيانة + المرحلة الأخيرة هي مرحلة الصيانة. تتضمن إصلاح أي مشكلات تظهر من العملاء في التطبيق الإنتاجي. كما تشمل مراقبة النظام لأي تحسينات محتملة على البرمجيات. +## نماذج الشلال والمرنة + أخيرًا، هناك نماذج مختلفة لدورة حياة تطوير البرمجيات تُستخدم في الصناعة، مثل نموذج الشلال (Waterfall) ونموذج أجايل (Agile). نموذج الشلال يتطلب إكمال كل مرحلة من مراحل الدورة قبل بدء المرحلة التالية. بالمقابل، يركز نموذج أجايل على التطوير التكراري بتقسيم العمل إلى دفعات (sprints) ليتمكن الفريق من إجراء تغييرات سريعة وتسليم العمل تدريجيًا. من خلال المرور بدورة حياة تطوير البرمجيات، يمكن لفريق التطوير وأصحاب المصلحة أن يكونوا على نفس الصفحة فيما يتعلق بالمتطلبات، تقديرات التكاليف، والجداول الزمنية. هذا يعزز التعاون والتواصل بشكل أكثر كفاءة. diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67db31349f3ace2c5c803c33.md b/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67db31349f3ace2c5c803c33.md index 1d79cc7e017..4b40094e82c 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67db31349f3ace2c5c803c33.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-the-different-types-of-testing/67db31349f3ace2c5c803c33.md @@ -9,6 +9,8 @@ dashedName: what-are-bdd-and-tdd هناك نوعان من أساليب الاختبار يجب أن تعرفهما في تطوير البرمجيات. هذان الأسلوبان هما TDD (التطوير المدفوع بالاختبار) و BDD (التطوير المدفوع بالسلوك). +## التطوير الموجه بالاختبار (TDD) + لنلقِ نظرة أولاً على TDD. التطوير المدفوع بالاختبار هو منهجية تركز على كتابة الاختبارات أولاً قبل بناء الميزات في التطبيق. إليك العملية النموذجية لـ TDD: @@ -29,8 +31,12 @@ dashedName: what-are-bdd-and-tdd بينما تختار بعض فرق البرمجيات اتباع نهج TDD، يُعد TDD موضوعًا مثيرًا للجدل في الصناعة. ستجد العديد من المقالات والفيديوهات التي تدافع عنه وتعارضه في الوقت نفسه. بغض النظر عن رأيك في هذا النهج، من المهم أن تكون على دراية به لأنك قد تواجهه في سيناريوهات واقعية. +## التطوير الموجه بالسلوك (BDD) + الأسلوب الثاني للاختبار الذي سنستعرضه هو التطوير المدفوع بالسلوك (BDD). التطوير المدفوع بالسلوك هو أسلوب يربط سلسلة من الاختبارات بأهداف العمل. يجب كتابة هذه الاختبارات بلغة يفهمها كل من الفنيين وغير الفنيين. +### لغة Gherkin + عند اختبار سلوكيات محددة في تطبيق برمجي، يستخدم BDD عادة لغة Gherkin، التي تُستخدم في الأعمال لوصف السلوكيات والسيناريوهات. تستخدم لغة Gherkin عبارات Given و When و Then عند وصف السيناريوهات. إليك مثال: @@ -43,12 +49,16 @@ dashedName: what-are-bdd-and-tdd **Then** يجب حفظ منشور المدونة وعرضه على الصفحة الرئيسية بالعنوان والمحتوى والطابع الزمني الصحيح. +### كتابة سيناريوهات BDD + أولاً، تريد تعريف سيناريو. تشمل السيناريوهات مثالاً تسجيل المستخدم الدخول إلى تطبيق أو تقديم طلب على موقع ويب. في هذا المثال، السيناريو هو لمستخدم ينشئ منشور مدونة جديد على موقع. بعد تعريف السيناريو، يجب أن تبدأ بعبارة Given. هذه توفر سياقًا لمكان بدء المستخدم قبل تنفيذ الإجراء. تُستخدم عبارة When لتمثيل الإجراء الذي يقوم به المستخدم. أخيرًا، تُستخدم عبارة Then لتمثيل النتيجة المرجوة من الإجراء السابق الذي قام به المستخدم. بمجرد تعريف جميع السيناريوهات، يمكنك كتابة اختبارات لكل سيناريو. +### أُطُر اختبار + أمثلة على أُطُر اختبار BDD تشمل Cucumber و JBehave و SpecFlow. # --questions-- diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-the-http-request-response-model/68dd97fbd18ede5ae983e342.md b/curriculum/challenges/arabic/blocks/lecture-understanding-the-http-request-response-model/68dd97fbd18ede5ae983e342.md index eddf5af7ff7..0a380fa29bd 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-the-http-request-response-model/68dd97fbd18ede5ae983e342.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-the-http-request-response-model/68dd97fbd18ede5ae983e342.md @@ -37,7 +37,7 @@ dashedName: what-are-the-different-kinds-of-assets-that-are-returned-in-an-http- | --- | --- | | HTML | text/html | | CSS | text/css | -| JavaScript | application/javascript | +| JavaScript | text/javascript | | JPEG | image/jpeg | | PNG | image/png | | GIF | image/gif | diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-the-web-standards-model/69fc757399f4066e674a5161.md b/curriculum/challenges/arabic/blocks/lecture-understanding-the-web-standards-model/69fc757399f4066e674a5161.md index 7615a09c4f2..adaccb0938e 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-the-web-standards-model/69fc757399f4066e674a5161.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-the-web-standards-model/69fc757399f4066e674a5161.md @@ -7,29 +7,37 @@ dashedName: what-does-the-lifecycle-of-web-standards-features-look-like # --description-- +## ما هو دورة حياة الميزة؟ + في الدرس السابق، استعرضنا عملية إنشاء معايير الويب: كيف تُكتب المقترحات، وتُراجع، وفي النهاية تُعتمد. دورة حياة ميزة معيار الويب مرتبطة بذلك، لكنها على مستوى أكثر تفصيلاً. تتبع ميزة واحدة منذ لحظة تحديد شخص ما لمشكلة وحتى إصدارها في كل متصفح رئيسي (وربما إهمالها في النهاية). فكر في العملية كدليل القواعد، ودورة الحياة كالأحداث الفعلية التي تحدث أثناء لعب اللعبة. -1. ## الاقتراح - تبدأ كل ميزة بمشكلة اهتم بها شخص ما بما يكفي ليكتبها. يقدم مطوِّر أو مهندس متصفح أو شركة مشكلة على GitHub أو شرحًا يصف ما لا يستطيع الويب فعله حاليًا ولماذا يجب أن يفعل ذلك. في هذه المرحلة، تكون الفكرة غير محددة، مع وجود أسئلة أكثر من الإجابات. الهدف ببساطة هو معرفة ما إذا كان هناك من يشارك نفس المشكلة. +## 1. الاقتراح + +تبدأ كل ميزة بمشكلة اهتم بها شخص ما بما يكفي ليكتبها. يقدم مطوِّر، مهندس متصفح، أو شركة مشكلة على GitHub أو شرحًا يصف ما لا يستطيع الويب فعله حاليًا ولماذا يجب أن يفعل ذلك. في هذه المرحلة، تكون الفكرة غير محددة، مع وجود أسئلة أكثر من الأجوبة. الهدف ببساطة هو معرفة ما إذا كان هناك من يشارك نفس المشكلة. + +## 2. الحضانة + +إذا لاقى الاقتراح صدى، يدخل فترة من النقاش المفتوح والتصميم المبكر. تُرسم الطرق المتنافسة، تُجمع حالات الاستخدام، ويختبر المجتمع الفكرة تحت الضغط. تموت العديد من الاقتراحات هنا، ربما لأن المشكلة ضيقة جدًا، أو لا يوجد حل يرضي الجميع. الناجون يظهرون بشكل أوضح ويحصلون على اهتمام بعض بائعي المتصفحات. + +## 3. المواصفة + +يُكتب الاقتراح الناجح كمواصفة رسمية. يجب تعريف كل حالة حافة، حالة خطأ، وتفاعل مع الميزات الحالية بوضوح. هذه هي النقطة التي تلتقي فيها الفكرة الجيدة بالواقع الصعب. يجب أن تتحول المفاهيم الغامضة إلى قواعد دقيقة يمكن لمهندسين مستقلين قراءتها وتنفيذها بشكل مطابق. + +## 4. اختبار التوافقية -1. ## الحضانة - إذا لاقى الاقتراح صدى، يدخل فترة من النقاش المفتوح والتصميم المبكر. تُرسم الطرق المتنافسة، وتُجمع حالات الاستخدام، ويختبر المجتمع الفكرة تحت الضغط. تموت العديد من الاقتراحات هنا، ربما لأن المشكلة ضيقة جدًا أو لا يوجد حل يرضي الجميع. الناجون يظهرون بشكل أوضح ويحظون على الأقل ببعض اهتمام بائعي المتصفحات. +قبل اعتبار الميزة مستقرة، يجب أن تتصرف بنفس الطريقة في كل متصفح. مجموعة اختبارات منصة الويب من W3C هي الأداة الرئيسية للتحقق من ذلك. هي مجموعة مشتركة من الاختبارات التي يشغلها Chrome وFirefox وSafari وغيرهم على تطبيقاتهم. تعني النتائج المتباينة إما أن المواصفة غامضة، أو أن هناك خطأ برمجي. يجب حل أي منهما قبل تقدم الميزة. -1. ## المواصفة - يُكتب الاقتراح الناجح كمواصفة رسمية. يجب تعريف كل حالة طرفية، وحالة خطأ، وتفاعل مع الميزات الحالية بوضوح. هذه هي النقطة التي تلتقي فيها الفكرة الجيدة بالواقع الصعب. يجب أن تتحول المفاهيم الغامضة إلى قواعد دقيقة يمكن لمهندسين مستقلين قراءتها وتنفيذها بشكل متطابق. +## 5. الإنهاء -1. ## اختبار التوافقية - قبل اعتبار الميزة مستقرة، يجب أن تتصرف بنفس الطريقة في كل متصفح. مجموعة اختبارات منصة الويب الخاصة بـ W3C هي الأداة الرئيسية للتحقق من ذلك. هي مجموعة مشتركة من الاختبارات التي يشغلها Chrome وFirefox وSafari وغيرهم ضد تطبيقاتهم. تعني النتائج المتباينة إما أن المواصفة غامضة أو أن هناك خطأ برمجي. يجب حل أي منهما قبل تقدم الميزة. +بمجرد أن تجتاز عدة تطبيقات مستقلة الاختبارات، تُنهى الميزة. بالنسبة لـ W3C، تصبح توصية، وبالنسبة لـ TC39، تصل للمرحلة 4، وتُدرج بشكل مستقر في المعيار الحي لـ WHATWG. تُرفع الأعلام وتُطرح الميزة للمستخدمين. في هذه المرحلة، تصبح جزءًا من منصة الويب الأساسية، يمكن لكل مطوِّر الاعتماد عليها إلى أجل غير مسمى. -1. ## الإنهاء - بمجرد أن تجتاز عدة تطبيقات مستقلة الاختبارات، تُنهى الميزة. بالنسبة لـ W3C، تصبح توصية، ولـ TC39، تصل إلى المرحلة 4، وتُدرج بشكل مستقر في المعيار الحي لـ WHATWG. تُرفع الأعلام وتُطرح الميزة للمستخدمين. في هذه المرحلة، تصبح جزءًا من منصة الويب الأساسية، يمكن لكل مطوِّر الاعتماد عليها إلى أجل غير مسمى. +## 6. الإهمال -1. ## الإهمال - لا يشيخ كل معيار بشكل جيد. تحل بعض الميزات محلها ميزات أفضل، ويتبين أن بعضها له آثار أمنية أو خصوصية لم تكن واضحة في البداية. عندما تحتاج ميزة إلى الإزالة، تُهمل رسميًا. أي تُدعم لكنها تُعلَن كشيء يجب على المطوِّرين التوقف عن استخدامه. في النهاية، تُزال من المواصفة. الإزالة من المتصفحات بطيئة وحذرة، لأن الوعد الأساسي للويب هو استمرار عمل الصفحات القديمة. تبقى بعض الميزات المهملة في المتصفحات لعقود فقط من أجل التوافقية مع الإصدارات السابقة. +لا يشيخ كل معيار بشكل جيد. تحل ميزات أفضل محل بعضها، ويكتشف أن بعضها له آثار أمنية أو خصوصية لم تكن واضحة في البداية. عندما تحتاج ميزة إلى الإزالة، تُهمل رسميًا. أي تُدعم لكنها تُعلَّم على أنها شيء يجب على المطوِّرين التوقف عن استخدامه. في النهاية، تُزال من المواصفة. الإزالة من المتصفحات بطيئة وحذرة، لأن الوعد الأساسي للويب هو استمرار عمل الصفحات القديمة. تبقى بعض الميزات المهملة في المتصفحات لعقود فقط من أجل التوافقية العكسية. # --questions-- diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-variables-and-data-types/67fe8597975ea634042cad8f.md b/curriculum/challenges/arabic/blocks/lecture-understanding-variables-and-data-types/67fe8597975ea634042cad8f.md index 9774ebd74a3..ec998de2683 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-variables-and-data-types/67fe8597975ea634042cad8f.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-variables-and-data-types/67fe8597975ea634042cad8f.md @@ -7,6 +7,8 @@ dashedName: how-do-you-declare-variables-and-what-are-naming-conventions-to-name # --description-- +## إعلان المتغيرات + في بايثون، المتغيرات تشبه صناديق معنونة لتخزين البيانات من أنواع مختلفة والإشارة إليها. لإنشاء متغير، اكتب اسمه على اليسار، متبوعًا بمعامل التعيين (`=`) والقيمة التي تريد تخزينها على اليمين. إليك مثالًا على كيفية إنشاء متغيري `name` و `age`: ```python @@ -16,6 +18,8 @@ age = 25 في المثال أعلاه، المتغير `name` يحمل القيمة `'John Doe'`. هذه القيمة هي سلسلة نصية، وهي مجموعة من الأحرف تُستخدم لتمثيل النص. تُكتب السلاسل النصية بعلامات اقتباس مفردة أو مزدوجة، مثل `'Hello'` أو `"Hello"`. في الدروس القادمة، ستتعلم المزيد عن التعامل مع السلاسل النصية في بايثون. +## اتباع قواعد التسمية + عند تسمية المتغيرات في بايثون، هناك بعض القواعد المهمة التي يجب أن تضعها في اعتبارك: - يجب أن تبدأ أسماء المتغيرات بحرف أو بشرطة سفلية (`_`) فقط، وليس برقم. @@ -31,6 +35,8 @@ age = 25 SyntaxError: invalid syntax ``` +## اتباع اصطلاحات التسمية + الآن دعنا نستعرض بعض اصطلاحات التسمية الشائعة للمتغيرات في بايثون. أولًا، يجب أن تكون أسماء المتغيرات بأحرف صغيرة، مع فصل الكلمات بشرطة سفلية. هذا يُسمى نمط snake case: @@ -53,6 +59,8 @@ user_age = 30 x = 56 # What do you mean by x? ``` +## كتابة التعليقات + رمز الشباك (`#`) والنص الذي يليه يشكلان تعليقًا. التعليقات تتيح لك إضافة ملاحظات وتوضيحات إلى كودك. في بايثون، تبدأ التعليقات برمز الباوند (`#`)، وتتجاهل اللغة كل شيء بعد رمز `#` في ذلك السطر: diff --git a/curriculum/challenges/arabic/blocks/lecture-understanding-variables-and-data-types/6a03f5d143c8688a9265c0a0.md b/curriculum/challenges/arabic/blocks/lecture-understanding-variables-and-data-types/6a03f5d143c8688a9265c0a0.md index e392ca4fbbc..317f0aab414 100644 --- a/curriculum/challenges/arabic/blocks/lecture-understanding-variables-and-data-types/6a03f5d143c8688a9265c0a0.md +++ b/curriculum/challenges/arabic/blocks/lecture-understanding-variables-and-data-types/6a03f5d143c8688a9265c0a0.md @@ -1,6 +1,6 @@ --- id: 6a03f5d143c8688a9265c0a0 -title: كيف تعمل الدالتان type() و isinstance()؟ +title: كيف تعمل الدالتان type() و isinstance()؟ challengeType: 19 dashedName: how-do-the-type-and-isinstance-functions-work --- diff --git a/curriculum/challenges/arabic/blocks/lecture-what-is-css/672acc03c257524d6a5151e8.md b/curriculum/challenges/arabic/blocks/lecture-what-is-css/672acc03c257524d6a5151e8.md index 9591a97ac90..792f2863a4a 100644 --- a/curriculum/challenges/arabic/blocks/lecture-what-is-css/672acc03c257524d6a5151e8.md +++ b/curriculum/challenges/arabic/blocks/lecture-what-is-css/672acc03c257524d6a5151e8.md @@ -7,10 +7,14 @@ dashedName: how-do-width-and-height-work # --interactive-- +## مقدمة إلى العرض والارتفاع + في CSS، تُستخدم الخاصيتان `width` و`height` للتحكم في أبعاد العناصر على صفحة الويب. يمكن تعريف هذه الخصائص بوحدات مختلفة مثل البكسل (`px`)، النسب المئوية (`%`)، وحدات إطار العرض (`vw`، `vh`)، والمزيد. +## الخاصيتان `width` و `height` + تحدد الخاصية `width` عرض العنصر. إذا لم تحدد عرضًا، فالقيمة الافتراضية تكون `auto`. هذا يسمح للمتصفح بتحديد عرض العنصر بناءً على محتواه، والوالد، ونوع العرض. بالنسبة لعنصر `div`، تجعل `width: auto` العنصر يتمدد ليملأ العرض الكامل لحاويته الوالد. تحدد الخاصية `height` ارتفاع العنصر. بالمثل، يكون الارتفاع `auto` افتراضيًا، مما يعني أنه سيتكيف مع المحتوى الموجود بداخله. @@ -40,6 +44,8 @@ dashedName: how-do-width-and-height-work البكسل هو وحدة قياس ثابتة الحجم في CSS، توفر تحكمًا دقيقًا في الأبعاد. +## الخاصيتان `min-width` و `min-height` + تحدد خاصية `min-width` الحد الأدنى لعرض العنصر. حتى لو كان المحتوى بداخله أصغر، لن ينكمش العنصر إلى أقل من هذه القيمة. تحدد الخاصية `min-height` الحد الأدنى لارتفاع العنصر. تضمن ألا يصبح العنصر أقصر من القيمة المحددة. @@ -73,6 +79,8 @@ dashedName: how-do-width-and-height-work تذكر، إذا كانت `min-width` أو `min-height` أكبر من `width` أو `height`، فإنها تتجاوز القيم الأصغر. هذا يضمن ألا تصبح العناصر صغيرة جدًا، وهو أمر مهم للحفاظ على تصميم متسق وسهل الاستخدام. +## الخاصيتان `max-width` و `max-height` + تحدد الخاصية `max-width` الحد الأقصى لعرض العنصر، حتى إذا كان هناك مساحة كافية ليكون أعرض. تحدد الخاصية `max-height` الحد الأقصى لارتفاع العنصر، بغض النظر عن حجم المحتوى. @@ -104,6 +112,8 @@ dashedName: how-do-width-and-height-work تذكر، عندما تكون `max-width` أو `max-height` أصغر من `width` أو `height`، فإنها تأخذ الأسبقية. هذا مهم للتحكم في الحد الأقصى لحجم العناصر في تخطيطاتك. +## أسبقية الخاصيات + تعطي CSS أولوية للخاصيتين `min-width` و`min-height` على `width` و`height`. بينما تحدد `max-width` و`max-height` الأبعاد إذا تجاوزت القيم الحدود المحددة. على سبيل المثال، إذا عرّفت `width` بقيمة `600px` و`max-width` بقيمة `500px`، فسيقتصر عرض العنصر على `500px`. حيث يتجاوز `max-width` القيمة الأكبر، مما يحافظ على العنصر ضمن الحد الأقصى المحدد. diff --git a/curriculum/challenges/arabic/blocks/lecture-working-with-backgrounds-and-borders/672aa669960f6a596081fcad.md b/curriculum/challenges/arabic/blocks/lecture-working-with-backgrounds-and-borders/672aa669960f6a596081fcad.md index 3562f7d4287..1f53dc34acc 100644 --- a/curriculum/challenges/arabic/blocks/lecture-working-with-backgrounds-and-borders/672aa669960f6a596081fcad.md +++ b/curriculum/challenges/arabic/blocks/lecture-working-with-backgrounds-and-borders/672aa669960f6a596081fcad.md @@ -7,6 +7,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen # --interactive-- +## مقدمة إلى خصائص الخلفية + عند العمل مع صور الخلفية في CSS، لديك عدة خصائص للتحكم في كيفية عرض هذه الصور. الخصائص الرئيسية التي سنركز عليها هي `background-size`، و`background-repeat`، و`background-position`، و`background-attachment`. @@ -27,6 +29,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen يُعيّن كود CSS أعلاه صورة خلفية لقطة لعنصر `body`. +## خاصية `background-size` + إذا أردت تحديد حجم صورة الخلفية، يمكنك استخدام خاصية `background-size`. يمكنك استخدام القيمة `contain` لتكبير الصورة إلى أكبر حجم ممكن دون قص أو تمديد. @@ -65,6 +69,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen ::: +## خاصية `background-repeat` + في الأمثلة السابقة، ربما لاحظت أن صورة الخلفية كانت تتكرر باستمرار. افتراضيًا، تتكرر صور الخلفية أفقيًا وعموديًا لملء العنصر بالكامل. لكن يمكنك التحكم في هذا السلوك. @@ -122,6 +128,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen ::: +## خاصية `background-position` + لوضع صورة خلفية على الشاشة، يمكنك استخدام خاصية `background-position`. تسمح خاصية `background-position` بتحديد مكان ظهور صورة الخلفية داخل العنصر. يمكنك استخدام كلمات مفتاحية مثل `top`، `bottom`، `left`، `right`، و`center`، أو قيم بكسل أو نسب مئوية محددة. @@ -146,6 +154,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen يضع كود CSS هذا صورة الخلفية في مركز العنصر أفقيًا وفي الأعلى عموديًا. +## خاصية `background-attachment` + أخيرًا، تحدد خاصية `background-attachment` ما إذا كانت صورة الخلفية تتحرك مع المحتوى عند التمرير أو تبقى ثابتة عند التمرير. القيم الرئيسية هي `scroll` (افتراضيًا)، حيث تتحرك صورة الخلفية مع المحتوى، و`fixed`، حيث تبقى صورة الخلفية في نفس الموضع على الشاشة. @@ -168,6 +178,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen يُعيّن كود CSS هذا صورة الخلفية لتبقى ثابتة في مكانها حتى عند تمرير الصفحة. +## الخاصية المختصرة `background` + إذا أردت دمج بعض الخصائص في سطر واحد، يمكنك فعل ذلك باستخدام خاصية الاختصار `background`. إليك مثال: diff --git a/curriculum/challenges/arabic/blocks/lecture-working-with-code-editors-and-ides/672d26269456511aa3db614d.md b/curriculum/challenges/arabic/blocks/lecture-working-with-code-editors-and-ides/672d26269456511aa3db614d.md index 9ec632a9b7c..f148fa9e28a 100644 --- a/curriculum/challenges/arabic/blocks/lecture-working-with-code-editors-and-ides/672d26269456511aa3db614d.md +++ b/curriculum/challenges/arabic/blocks/lecture-working-with-code-editors-and-ides/672d26269456511aa3db614d.md @@ -7,8 +7,12 @@ dashedName: what-is-a-code-editor-and-ide # --description-- +## ما هي محررات الكود وبيئات التطوير المتكاملة؟ + قد تظن أنهما نفس الشيء، لكن ليس تمامًا. محرر الكود هو أي تطبيق يسمح لك بتحرير ملفات الكود. أما بيئة التطوير المتكاملة (IDE) فهي تطبيق كامل يسمح لك بترجمة الكود، وتشغيله، وتصحيح الأخطاء أثناء تحريره. +## استكشاف بيئات التطوير المتكاملة الشهيرة + بعض الأمثلة ستساعد في التوضيح. أولًا، دعنا نلقي نظرة على بعض بيئات التطوير المتكاملة الشهيرة. Visual Studio هي بيئة تطوير متكاملة من مايكروسوفت توفر مجموعة شاملة من الأدوات لبناء التطبيقات وتصحيح أخطائها ونشرها عبر منصات مختلفة. @@ -17,6 +21,8 @@ dashedName: what-is-a-code-editor-and-ide Android Studio، الذي طورته Google، هو بيئة تطوير متكاملة مصممة خصيصًا لبناء، وتصحيح الأخطاء، واختبار تطبيقات Android. +## استكشاف محررات الكود الشهيرة + هذه مجرد أمثلة قليلة على بيئات التطوير المتكاملة. الآن، لنلقِ نظرة على بعض محررات الكود الشهيرة. Visual Studio Code هو محرر كود مفتوح المصدر وخفيف الوزن من مايكروسوفت يدعم مجموعة واسعة من لغات البرمجة ويوفر ميزات مثل تصحيح الأخطاء، تمييز الصيغة النحوية، والتحكم في الإصدارات عبر الإضافات. @@ -27,6 +33,8 @@ Visual Studio Code هو محرر كود مفتوح المصدر وخفيف ال قد لاحظت كيف يركز محررو الكود بشكل أساسي على محتوى النص في الملف، بينما تتيح بيئات التطوير المتكاملة أدوات مختلفة لإدارة الكود الخاص بك. +## استكشاف المحررات السحابية + كل هذه الأمثلة برامج محلية يمكنك تشغيلها على جهاز الكمبيوتر الخاص بك، لكن هناك أيضًا محررات قائمة على السحابة يمكنك استخدامها. المحرر المستند إلى السحابة هو أداة عبر الإنترنت تسمح للمستخدمين بكتابة وتحرير وإدارة الكود أو النص مباشرة من خلال متصفح الويب دون الحاجة إلى تثبيت برامج محليًا. @@ -39,6 +47,8 @@ Replit هو منصة عبر الإنترنت توفر بيئة تعاونية ل StackBlitz هو محرر آخر قائم على السحابة. يعمل مباشرة في المتصفح ويتيح لك بناء واختبار ومشاركة مشاريع الويب دون الحاجة إلى إعداد محلي. +## اختيار المحرر المناسب + وهناك العديد من الخيارات الأخرى. بعض الخيارات، مثل Visual Studio Code، قابلة للتوسيع بشكل كبير ويمكنها العمل مع العديد من أنواع المشاريع واللغات. خيارات أخرى قد تكون مخصصة لمجموعة جزئية صغيرة من اللغات أو أنواع المشاريع. التطبيق الذي تستخدمه قد يختلف حسب المشروع المحدد. يجب أن تستكشف الخيارات لترى ما يناسب احتياجاتك أفضل. diff --git a/curriculum/challenges/arabic/blocks/lecture-working-with-code-editors-and-ides/672d456f4ac35950b300e93f.md b/curriculum/challenges/arabic/blocks/lecture-working-with-code-editors-and-ides/672d456f4ac35950b300e93f.md index a3de3305e2e..af74ebb0c95 100644 --- a/curriculum/challenges/arabic/blocks/lecture-working-with-code-editors-and-ides/672d456f4ac35950b300e93f.md +++ b/curriculum/challenges/arabic/blocks/lecture-working-with-code-editors-and-ides/672d456f4ac35950b300e93f.md @@ -7,8 +7,12 @@ dashedName: what-are-several-useful-keyboard-shortcuts-for-maximizing-productivi # --description-- +## اختصارات موروثة من نظام التشغيل + من المحتمل أنك تعرف بالفعل بعض الاختصارات الأساسية، التي ترثها من نظام التشغيل الخاص بك. اختصارات مثل Ctrl + S (ويندوز/لينكس) أو Cmd + S (ماك) للحفظ، وCtrl + C أو Cmd + C للنسخ، وCtrl + V أو Cmd + V للصق تعمل كلها في VS Code. +## اختصارات خاصة بالتطبيق + لكن هناك بعض الاختصارات الخاصة بالتطبيق والتي يمكنها رفع إنتاجيتك. يجدر بالذكر أن بعض هذه الاختصارات قد تختلف حسب نظام التشغيل. على سبيل المثال، Shift + Alt + F يشغّل أداة التنسيق المهيأة لديك (مثل Prettier لمشروع جافاسكريبت) على الملف المفتوح حاليًا. @@ -21,8 +25,12 @@ dashedName: what-are-several-useful-keyboard-shortcuts-for-maximizing-productivi أو ربما لا ترى كودك؟ Ctrl + Plus (ويندوز/لينكس)، أو Cmd + Plus (ماك)، يزيد تكبير المحرر، وCtrl + Minus (ويندوز/لينكس)، أو Cmd + Minus (ماك)، يقلل التكبير. +## اختصار التحرير متعدد الأسطر + ميزة مفيدة أخرى في VS Code هي التحرير متعدد الأسطر، الذي يسمح بإجراء تغييرات عبر عدة أسطر دفعة واحدة. على سبيل المثال، يمكنك وضع عدة مؤشرات باستخدام Ctrl + Alt + Down وCtrl + Alt + Up (ويندوز)، Shift + Alt + Down وShift + Alt + Up (لينكس)، أو Option + Cmd + Down وOption + Cmd + Up (ماك)، لتمديد المؤشر إلى أسطر متتالية. يمكنك أيضًا الضغط مع الاستمرار على Alt (ويندوز/لينكس) أو Option (ماك) والنقر لإضافة مؤشرات على أسطر منفصلة حيثما تحتاجها. بمجرد وضع المؤشرات، أي شيء تكتبه أو تحذفه سيطبق على كل تلك المواقع في نفس الوقت، مما يوفر الكثير من الوقت عند العمل مع كود متكرر. +## لوحة الأوامر ومرجع اختصارات لوحة المفاتيح + أخيرًا، إذا نسيت أيًا من هذه الاختصارات، لديك دائمًا Ctrl + Shift + P (ويندوز/لينكس) أو Cmd + Shift + P (ماك)، التي تفتح لوحة الأوامر لتختار ما تحتاجه.
| Linux、macOS 和 PowerShell | ||||
| 完成建議(Tab 補全) | +完成建議(Tab 自動完成) | Tab | -Linux、macOS 和 PowerShell(建議來源依 shell 而異 — 例如 zsh 使用最近的指令歷史,而 PowerShell 使用可用的指令、變數和引數) | +Linux、macOS 和 PowerShell(建議內容取決於 shell、你正在輸入的命令,以及你的組態) |
|---|---|---|---|---|
| 清除終端機 | @@ -58,12 +70,12 @@ dashedName: what-are-some-shortcuts-you-can-use-in-the-command-line-to-speed-up-||||
| 中斷正在執行的行程 | Control + C | -Linux、macOS 和 PowerShell(在 PowerShell 中此組合鍵也用於複製文字,且只有在沒有選取文字時才會終止行程) | +Linux、macOS 和 PowerShell(在 PowerShell 中此快捷鍵也用於複製文字,且只有在沒有選取文字時才會中斷命令) | |
| 將行程移到背景 | +暫停前景行程 | Control + Z | -僅限 Linux 和 macOS,PowerShell 無對應功能 | +僅限 Linux 和 macOS,PowerShell 無對應快捷鍵(使用 bg 讓它在背景繼續執行,或使用 fg 讓它回到前景) |
| 重新執行先前的指令 | @@ -123,11 +135,11 @@ dashedName: what-are-some-shortcuts-you-can-use-in-the-command-line-to-speed-up- ### --feedback-- -此捷徑允許你在一個處理程序執行時同時多工處理。 +此快捷鍵讓你暫停命令,稍後再回來繼續。 --- -它將目前的行程放到背景。 +它會暫停目前的前景行程。 --- @@ -135,7 +147,7 @@ dashedName: what-are-some-shortcuts-you-can-use-in-the-command-line-to-speed-up- ### --feedback-- -此捷徑允許你在一個處理程序執行時同時多工處理。 +此快捷鍵讓你暫停命令,稍後再回來繼續。 --- @@ -143,7 +155,7 @@ dashedName: what-are-some-shortcuts-you-can-use-in-the-command-line-to-speed-up- ### --feedback-- -此捷徑允許你在一個處理程序執行時同時多工處理。 +此快捷鍵讓你暫停命令,稍後再回來繼續。 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e944b821130283dc83b2e.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e944b821130283dc83b2e.md index 093dce2e548..16562b2afb2 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e944b821130283dc83b2e.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e944b821130283dc83b2e.md @@ -9,14 +9,20 @@ dashedName: what-is-bash-and-what-are-some-bash-commands 讓我們來了解 Bash 及其一些基本指令。 +## 什麼是 Bash? + Bash 代表 Bourne Again SHell,可以說是在類 Unix 環境中你最常遇到的 shell。因此,了解如何操作這個 shell 並使用常見指令會非常有幫助。 +## 檔案系統導覽指令 + 第一個指令是 `pwd`,它會將目前的工作目錄列印到終端機。所謂「工作目錄」是指終端機目前指向的目錄,這對許多其他指令來說是非常重要的資訊。 你的終端機很可能指向錯誤的目錄。`cd` 指令允許你更改目錄。你可以指定以斜線(`/`)為前置式的絕對路徑、沒有前置式的相對路徑,並使用雙點(`..`)語法移動到父目錄。 下一個指令是 `ls`,它會列出你目前工作目錄的內容。這有助於查看你的目錄中是否存在某個檔案或資料夾。`ls` 指令也接受旗標來顯示隱藏檔案(`-a` 旗標)、檔案權限(`-l` 旗標)以及其他特性。你將在下一課中學習更多關於指令旗標的內容。你也可以使用 `less` 或 `cat` 來查看檔案的內容。 +## 檔案管理指令 + 如果目錄中不包含你需要的檔案或資料夾怎麼辦?有一些稱為 `mkdir` 和 `touch` 的指令可以讓你創建它們。`mkdir` 創建一個新的目錄或資料夾,而 `touch` 創建一個新的檔案。這兩個指令都接受你想要創建的檔案或資料夾名稱。例如,`touch readme.md` 創建一個名為 `readme.md` 的新的 Markdown 檔案。 也許你的新檔案不應該命名為 `readme.md`,而應該是 `readthis.md`。幸運的是,`mv` 指令允許你移動(或重新命名)檔案。它接受舊檔案名稱和新檔案名稱。 @@ -25,8 +31,12 @@ Bash 代表 Bourne Again SHell,可以說是在類 Unix 環境中你最常遇 `cp` 指令可用來將檔案或目錄複製到新位置。與 `mv` 指令不同,`cp` 指令不會移除原始檔案-而且若要複製目錄,你需要傳入 `-r` 旗標。 +## 在主控台輸出文字 + `echo` 指令可以被視為 Bash 中等同於 `console.log()` 或 `print()` 函式(程式)。`echo` 接受一個用引號包住的字串引數,並將其列印到終端機。這看起來在終端機執行只是為了在終端機中取得文字似乎很愚蠢,但你其實可以將 `echo` 串鏈到控制符號。`>` 符號允許你指定一個檔案名稱來創建或覆寫該檔案,並寫入新的字串,例如 `echo "Naomi was here." > readme.md`,而 `>>` 符號則會將內容附加到該檔案。 +## 其他 Bash 指令 + 還有許多 Bash 指令可供你使用,例如 `head`、`tail`、`chown` 和 `chmod`。在本課程中涵蓋所有指令是不可能的。但你可以使用 `man` 指令來查看幾乎任何指令的手冊或說明頁。 你很可能會記住你最常使用的指令。至於其他指令,你隨時都可以查看說明頁。 diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e947ae3ea7d2867c3d0e1.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e947ae3ea7d2867c3d0e1.md index c839d2183a7..55cfa994dd5 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e947ae3ea7d2867c3d0e1.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687e947ae3ea7d2867c3d0e1.md @@ -21,25 +21,31 @@ dashedName: what-are-some-command-options-and-flags 這些短選項的優點是你可以將多個旗標串鏈在一起。你可以使用 `ls -ahs` 一次性使用所有單個字母,而不是 `ls --all --human-readable --size`。 -某些選項可選方案需要傳遞一個值給它們。 +有些選項期望傳入一個值。你如何傳入該值取決於該選項是必須要值還是選用接受值。 -當使用長格式選項時,通常需要使用等號。在此語法中,值會直接與選項使用等號(`=`)符號連接。以下是修改 `ls` 行為以包含或排除顏色的範例: +當短格式選項需要值時,通常會用空格分隔該值。舉例來說,以下是設定 `ls` 結果中 `width` 的短格式選項: ```bash -ls --color=never +ls -w 50 ``` -使用短格式選項時,通常會用空格分隔值。例如,以下是設定 `ls` 結果中 `width` 的長格式和短格式選項: +當長格式選項需要值時,像 `ls` 這類 GNU 工具接受值放在等號(`=`)符號之後,或用空格分隔。這兩個指令都設定相同的寬度: ```bash -ls -w 50 +ls --width=50 ``` ```bash -ls --width=50 +ls --width 50 +``` + +有些長格式選項只選用接受值。對這些選項,值必須用等號(`=`)符號附加在選項後面。舉例來說,`ls` 的 `--color` 選項可以單獨使用,或帶有包含或排除顏色的值: + +```bash +ls --color=never ``` -請注意簡短形式使用 `-w 50`,而完整形式使用 `--width=50`。了解這個區別很重要,以避免將選項值誤傳為位置引數。 +如果你寫成 `ls --color never`,`ls` 會把 `never` 當作位置引數,也就是要列出的檔案名稱,而不是 `--color` 的值。這個區別很重要,避免誤把選項值當成位置引數傳入。 但如果你不確定,請記得你通常可以使用 `--help` 旗標來查看選項的預期語法! @@ -119,7 +125,7 @@ ls --width=50 ## --text-- -當使用需要值的長格式選項時,通常使用什麼語法? +當長格式選項只選用接受值時,像 `ls` 的 `--color`,你應該用什麼語法來傳入值? ## --answers-- @@ -127,7 +133,7 @@ ls --width=50 ### --feedback-- -請記住使用長格式選項設定 `width` 的範例。 +記住 `ls --color never` 中值會發生什麼事。 --- @@ -139,7 +145,7 @@ ls --width=50 ### --feedback-- -請記住使用長格式選項設定 `width` 的範例。 +記住關閉顏色的 `--color` 選項範例。 --- @@ -147,7 +153,7 @@ ls --width=50 ### --feedback-- -請記住使用長格式選項設定 `width` 的範例。 +記住關閉顏色的 `--color` 選項範例。 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687f0a1d5b7c4f21a9d8e123.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687f0a1d5b7c4f21a9d8e123.md index 462735b66cb..4aa74692cc2 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687f0a1d5b7c4f21a9d8e123.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-command-line-and-working-with-bash/687f0a1d5b7c4f21a9d8e123.md @@ -7,12 +7,16 @@ dashedName: how-do-you-configure-your-system-language-for-bash-and-postgresql-wo # --description-- +## 為什麼你的鍵盤配置很重要? + 讓我們來了解你的系統語言和鍵盤設定如何影響 Bash 和 PostgreSQL 工作坊。 許多程式設計工具期望命令使用標準英文鍵盤字元。在 Bash 和 PostgreSQL 工作坊中,這對於分號(`;`)、引號、斜線和其他特殊字元尤其重要。 如果你的作業系統或鍵盤配置使用非英文語言設定,有些字元可能會與預期不同,這可能導致輸入 SQL 命令或終端機命令時出現令人困惑的錯誤。 +## 切換到美式鍵盤配置 + 為了在進行這些工作坊時獲得最佳體驗,建議在完成課程期間暫時切換到英文(美國)鍵盤配置。當 Bash 或 PostgreSQL 的命令在輸入像 `;` 或 `\` 這類符號時產生意外字元或語法錯誤,這尤其有幫助。 GitHub Codespaces 使用你本地的鍵盤配置,因此在你自己的電腦上更改配置也會影響 Codespaces 中的輸入。 @@ -48,6 +52,8 @@ setxkbmap -query setxkbmap us ``` +## 測試你的鍵盤配置 + 切換配置後,在文字框或終端機中測試以下字元: ```md @@ -58,7 +64,9 @@ setxkbmap us 某些非英文配置將像 `'` 和 `"` 這類字元視為死鍵,意即它們會等待後續按鍵而非立即輸入。切換到 US 配置後,這些字元應該會立即輸入。如果字元仍無法立即出現,表示你的配置尚未完全切換。 -如果你使用非美式實體鍵盤配置,例如 AZERTY、QWERTZ 或區域性 QWERTY 變體,符號鍵可能位於不同的實體位置。在這種情況下,切換到 US 配置後,請使用作業系統的螢幕鍵盤或鍵盤檢視器來尋找像 `;`、`/`、`\`、`|`、`'` 和 `"` 這些鍵。 +## 使用非美式實體鍵盤 + +如果你使用非美式實體鍵盤配置,例如 AZERTY、QWERTZ 或區域性 QWERTY 變體,符號鍵可能位於不同的實體位置。這種情況下,切換到美式配置後,請使用你的作業系統的螢幕鍵盤或鍵盤檢視器來找到像是 ;、/、\\、|、' 和 " 這些鍵。 使用英文(美國)鍵盤配置有助於確保 Bash 和 PostgreSQL 命令在整個工作坊中完全符合預期行為。 diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67d2ff1996e4ae9e67170502.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67d2ff1996e4ae9e67170502.md index e5d329a9384..ba34e508340 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67d2ff1996e4ae9e67170502.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67d2ff1996e4ae9e67170502.md @@ -9,6 +9,8 @@ dashedName: what-is-unit-testing 當你設計你的應用程式時,你經常會有一系列負責單一任務的小函式(程式)。這被稱為「單一職責原則」。當你有一系列小函式時,最好測試這些函式以確保一切如預期運作。在本課程中,我們將探討如何使用流行的 Jest 測試框架來創建單元測試。 +## 要測試的函式 + 在此範例中,我們將創建一個負責傳回新格式化字串的函式(程式): ```js @@ -20,6 +22,8 @@ export function getFormattedWord(str) { 這個 `getFormattedWord` 函式有一個名為 `str` 的參數,並且會先檢查 `str` 是否為空。如果是,則傳回一個空字串。否則,會傳回一個新的字串,其中第一個字母已大寫。我們正在匯出這個函式,以便在測試檔案中使用它。 +## 撰寫你的第一個測試 + 在一個獨立的 `getFormattedWord.test.js` 檔案中,我們可以撰寫一些測試來驗證該函式是否如預期般運作。 在 `getFormattedWord.test.js` 檔案的頂部,我們需要先這樣匯入函式(程式): @@ -38,6 +42,8 @@ test('capitalizes the first letter of a word', () => { `expect` 函式用來測試一個值。它會與一個 matcher 結合,matcher 是一個函式,用來檢查該值是否如預期般運作。在這個例子中,matcher 是 `toBe()`。Jest 有各種 matcher 幫助你測試真值、字串、數字等等。 +## 執行你的測試 + 執行測試的一種方法是為你的 `package.json` 檔案添加 npm 腳本。以下是 Jest 框架的範例腳本: ```js @@ -59,6 +65,8 @@ Time: 0.103 s, estimated 1 s Ran all test suites. ``` +## 失敗測試的樣子 + 要查看失敗測試的樣子,我們可以故意將函式更新為以下內容來破壞測試: ```js @@ -97,6 +105,8 @@ Time: 0.121 s, estimated 1 s Ran all test suites. ``` +## 新增另一個測試 + 現在我們可以將我們的函式(程式)更新回原本的內容: ```js @@ -116,6 +126,8 @@ test("returns an empty string when no argument is provided", () => { 你可以添加其他測試來使事情更強固,但這前幾個測試是單元測試的良好入門。 +## 常見的測試框架 + 在測試 JavaScript 應用程式時,一些常見的測試框架包括 Jest、Mocha 和 Vitest。 單元測試很重要,因為它能幫助你在你的程式中捕捉更多錯誤,並確保一切如預期般運作。它也可以作為你的應用程式的一種文件形式,因為它旨在表述你的程式的預期行為。 diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67db30fedfa0b22a1a2a570c.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67db30fedfa0b22a1a2a570c.md index c510ed80a5f..79b146acb5e 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67db30fedfa0b22a1a2a570c.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67db30fedfa0b22a1a2a570c.md @@ -27,18 +27,32 @@ dashedName: what-is-the-software-development-life-cycle-and-how-does-it-relate-t 讓我們更詳細地仔細看看所有那些階段。 +## 規劃階段 + 在規劃階段,開發團隊會從利害關係人收集對擬議工作的需求。利害關係人是對產品或服務的成功有既得利益的人。利害關係人的範例可能是投資者、擁有者,甚至是其他員工。規劃階段還包括估算工作的成本以及建立工作的完成排程。 +## 設計階段 + 下一個階段是設計階段。在此階段,軟體團隊會拆解需求並決定最佳的解決方案方法。這包括決定可以使用哪些外部工具來協助進行,以及需要建立哪些內部工具來完成工作。 +## 實作階段 + 在設計階段之後,你有實作階段。這涉及軟體團隊將需求拆解成可管理的任務,然後彼此分配並建置完成。 +## 測試階段 + 一旦實作階段完成,軟體團隊便進入測試階段。這包括對新工作進行手動和自動測試。有時團隊會在整個開發階段中測試應用程式,以便發現並修正任何出現的問題。 +## 部署階段 + 下一個階段是部署階段。這是團隊將新變更部署到建置或測試環境的地方。這讓團隊能夠進一步測試應用程式並在變更進入生產環境之前修正任何問題。生產環境中的應用程式是終端用戶將會使用的應用程式。 +## 維護階段 + 最後階段是維護階段。這包括修正生產應用程式中客戶反映的任何問題。這也包括監控系統,以尋找軟體可能的改進。 +## 瀑布模型與敏捷模型 + 最後,業界中使用不同的軟體開發生命週期模型,例如 Waterfall 和 Agile。Waterfall 模型要求生命週期的每個階段必須在下一階段開始之前完成。相反地,Agile 模型則專注於透過將工作拆分為衝刺來進行反覆的開發,使團隊能夠快速進行變更並隨時間交付工作。 透過軟體開發生命週期,開發團隊和利害關係人可以在需求、成本估算和排程方面達成共識。這使得整體的協作和通訊更加高效。 diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67db31349f3ace2c5c803c33.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67db31349f3ace2c5c803c33.md index 397e0432679..e8a5fa6dcdd 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67db31349f3ace2c5c803c33.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-different-types-of-testing/67db31349f3ace2c5c803c33.md @@ -9,6 +9,8 @@ dashedName: what-are-bdd-and-tdd 在軟體開發中,你應該了解兩種測試方法。這些方法是 TDD(Test-Driven Development)和 BDD(Behavior-Driven Development)。 +## 測試驅動開發(TDD) + 讓我們先來看看 TDD。測試驅動開發是一種強調先撰寫測試,再建置應用程式特性的開發方法。 以下是 TDD 的典型處理程序: @@ -29,8 +31,12 @@ dashedName: what-are-bdd-and-tdd 雖然有些軟體團隊會選擇遵循 TDD 方法,但 TDD 在業界是一個具爭議性的話題。你會發現有許多文章和影片同時支持和反對 TDD。不論你對這種方法的看法如何,了解它仍然很重要,因為你可能會在實際情境中遇到它。 +## 行為驅動開發(BDD) + 第二種我們將探討的測試方法是行為驅動開發(BDD)。行為驅動開發是一種將一系列測試與商務目標對齊的方法。這些測試應該以技術人員和非技術人員都能理解的語言撰寫。 +### Gherkin 語言 + 在測試軟體應用程式中的特定行為時,BDD 通常使用 Gherkin 語言,該語言用於商務中描述行為和情境。Gherkin 語言在描述情境時使用 Given、When 和 Then 述語。 以下是一個範例: @@ -43,12 +49,16 @@ dashedName: what-are-bdd-and-tdd **然後** 部落格文章應該被存檔並以正確的標題、內容和時間戳記顯示在首頁。 +### 撰寫 BDD 場景 + 你首先要定義一個情境。範例情境包括使用者登入應用程式或在網站上下訂單。在此範例中,情境是使用者在網站上建立新的部落格文章。 在定義情境後,你應該從 Given 述語開始。這提供使用者在執行動作前的背景關係。When 述語用來表述使用者所採取的動作。 最後,Then 述語用來表述使用者先前採取動作所期望的結果。當你定義完所有情境後,你可以為每個情境撰寫測試。 +### 測試框架 + BDD 測試框架的範例包括 Cucumber、JBehave 和 SpecFlow。 # --questions-- diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-http-request-response-model/68dd97fbd18ede5ae983e342.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-http-request-response-model/68dd97fbd18ede5ae983e342.md index fd4a143ed71..a4f8ab73603 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-http-request-response-model/68dd97fbd18ede5ae983e342.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-http-request-response-model/68dd97fbd18ede5ae983e342.md @@ -33,11 +33,11 @@ HTTP 回應傳回的資產包括基於文字的資產、多媒體資產、字型 以下是這些常見資產及其內容型別的表格: -| Asset Type | Content-Type Header | +| 資產類型 | Content-Type 標頭 | | --- | --- | | HTML | text/html | | CSS | text/css | -| JavaScript | application/javascript | +| JavaScript | text/javascript | | JPEG | image/jpeg | | PNG | image/png | | GIF | image/gif | @@ -49,11 +49,11 @@ HTTP 回應傳回的資產包括基於文字的資產、多媒體資產、字型 | OTF | font/otf | | MP4 | video/mp4 | | WebM | video/webm | -| Ogg (Video) | video/ogg | +| Ogg (影片) | video/ogg | | MP3 | audio/mpeg | | AAC | audio/aac | | WAV | audio/wav | -| Ogg (Audio) | audio/ogg | +| Ogg (音訊) | audio/ogg | | JSON | application/json | | XML | application/xml | | PDF | application/pdf | diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-web-standards-model/69fc757399f4066e674a5161.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-web-standards-model/69fc757399f4066e674a5161.md index 2186db215b2..fea5a2a4c95 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-web-standards-model/69fc757399f4066e674a5161.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-the-web-standards-model/69fc757399f4066e674a5161.md @@ -7,29 +7,37 @@ dashedName: what-does-the-lifecycle-of-web-standards-features-look-like # --description-- +## 什麼是特性生命週期? + 在上一課,我們探討了建立網頁標準的流程:提案如何撰寫、審查,並最終定案。 網頁標準特性的生命週期相關,但更細緻。它追蹤一個特性從有人發現問題開始,一直到它在所有主要瀏覽器中發布(甚至最後可能被淘汰)。 把這個流程想成規則書,而生命週期則是你實際玩遊戲時發生的事情。 -1. ## 提案 - 每個特性都始於有人在意到一個問題並願意將其寫下。開發者、瀏覽器工程師或公司會在 GitHub 提出議題或說明,描述目前網路無法做到的事以及為何應該做到。在這個階段,想法還很模糊,問題多於答案。目標只是要確認是否有人也認同這個痛點。 +## 1. 提案 + +每個特性都始於有人在意並寫下的一個問題。開發者、瀏覽器工程師或公司會在 GitHub 提出議題或說明,描述目前網路無法做到的事以及為什麼應該做到。在這個階段,想法還很模糊,問題多於答案。目標只是想知道是否有人也認同這個痛點。 + +## 2. 孵育期 + +如果提案引起共鳴,它會進入公開討論和早期設計階段。會草擬出競爭方案、收集使用案例,社群會對這個想法進行壓力測試。許多提案會在這裡夭折,可能是因為問題太冷門,或沒有解法能滿足所有人。存活下來的提案會有更清晰的輪廓,並至少獲得部分瀏覽器廠商的興趣。 + +## 3. 規格 + +存活的提案會被寫成正式的規格。每個邊緣案例、錯誤狀況和與現有特性的互動都必須明確定義。這是好點子遇上現實的時刻。模糊的概念必須變成兩位獨立工程師都能讀懂並一模一樣實作的精確規則。 + +## 4. 互通性測試 -1. ## 孵育 - 如果提案引起共鳴,它會進入公開討論和早期設計階段。會草擬出競爭方案、收集使用案例,社群會對這個想法進行壓力測試。許多提案會在此階段夭折,可能是因為問題太過小眾,或沒有解法能滿足所有人。存活下來的提案會有更清晰的輪廓,並至少獲得部分瀏覽器廠商的關注。 +在特性被視為穩定之前,它必須在每個瀏覽器中表現一致。W3C Web Platform Tests 套件是驗證這點的主要工具。這是一套由 Chrome、Firefox、Safari 等瀏覽器共同執行的測試。若結果不一致,代表規格有歧義或有人有錯誤。這兩者都必須解決後,特性才能繼續推進。 -1. ## 規格 - 存活的提案會被寫成正式的規格。每個邊緣案例、錯誤狀況,以及與現有特性的互動都必須明確定義。這是好點子面對現實的時刻。模糊的概念必須變成兩位獨立工程師都能讀懂並完全相同實作的精確規則。 +## 5. 最終定案 -1. ## 互通性測試 - 在特性被視為穩定之前,它必須在每個瀏覽器中表現一致。W3C Web Platform Tests 套件是驗證這點的主要工具。這是一套由 Chrome、Firefox、Safari 等瀏覽器共同執行的測試集合。測試結果若有差異,代表規格不夠明確,或有人實作有錯誤。這兩者都必須解決,特性才能繼續推進。 +當多個獨立實作通過測試後,特性就會被最終定案。對 W3C 來說是推薦標準,對 TC39 是第 4 階段,對 WHATWG 是穩定的活文件標準。旗標會被移除,特性會正式推送給使用者。此時,它成為基礎網路平台的一部分,每個開發者都能永遠依賴它。 -1. ## 定案 - 一旦多個獨立實作通過測試,該特性就會被定案。對 W3C 來說是推薦標準,對 TC39 是第 4 階段,對 WHATWG 是穩定的活文件標準。旗標會被移除,特性會正式發佈給使用者。此時,它成為基礎網路平台的一部分,每個開發者都能永久依賴它。 +## 6. 棄用 -1. ## 棄用 - 並非每個標準都能隨時間保持良好。有些特性被更好的取代,有些則發現當初未察覺的安全或隱私問題。當特性需要被淘汰時,它會被正式標記為棄用,也就是仍被支援但建議開發者停止使用。最終它會從規格中移除。瀏覽器移除這些特性時非常謹慎且緩慢,因為網路的核心承諾是舊網頁能繼續運作。有些棄用特性會因向後相容義務而在瀏覽器中存在數十年。 +並非每個標準都能隨時間保持良好。有些特性被更好的取代,有些則發現當初沒有察覺的安全或隱私問題。當特性需要被淘汰時,它會被正式棄用,也就是仍然支援但標記為開發者應該停止使用。最終會從規格中移除。瀏覽器移除特性是緩慢且謹慎的,因為網路的核心承諾是舊網頁能繼續運作。有些棄用的特性會因為向後相容義務,在瀏覽器中存在數十年。 # --questions-- diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-variables-and-data-types/67fe8597975ea634042cad8f.md b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-variables-and-data-types/67fe8597975ea634042cad8f.md index 4859a3ce610..2db5230eb34 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-variables-and-data-types/67fe8597975ea634042cad8f.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-understanding-variables-and-data-types/67fe8597975ea634042cad8f.md @@ -7,6 +7,8 @@ dashedName: how-do-you-declare-variables-and-what-are-naming-conventions-to-name # --description-- +## 宣告變數 + 在 Python 中,變數就像帶有標籤的盒子,用來儲存和取用不同型別的資料。要創建變數,請先在左邊寫變數名稱,接著是指定運算子(`=`),然後在右邊寫你想儲存的值。以下是如何創建 `name` 和 `age` 變數的範例: ```python @@ -16,6 +18,8 @@ age = 25 在上述範例中,變數 `name` 儲存的值是 `'John Doe'`。這個值是一個字串,字串是一系列用來表述文字的字元。字串以單引號或雙引號書寫,例如 `'Hello'` 或 `"Hello"`。在未來的課程中,你將學習更多關於在 Python 中操作字串的方法。 +## 遵守命名規則 + 在 Python 中命名變數時,有一些重要規則你應該記住: - 變數名稱只能以字母或底線(`_`)開頭,不能以數字開頭。 @@ -31,6 +35,8 @@ age = 25 SyntaxError: invalid syntax ``` +## 遵守命名慣例 + 現在讓我們來看看 Python 中變數的一些常見命名慣例。 首先,變數名稱應該全部小寫,並用底線分隔字詞。這稱為蛇底式命名法(snake case): @@ -53,6 +59,8 @@ user_age = 30 x = 56 # What do you mean by x? ``` +## 撰寫註解 + 井字號符號(`#`)和其後的文字組成註解。註解讓你可以在程式碼中添加筆記和說明。 在 Python 中,註解以井字號符號(`#`)開始,語言會忽略該行中 `#` 符號後的所有內容: diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-what-is-css/672acc03c257524d6a5151e8.md b/curriculum/challenges/chinese-traditional/blocks/lecture-what-is-css/672acc03c257524d6a5151e8.md index 01ea7ba93a0..3af6fb2d8e8 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-what-is-css/672acc03c257524d6a5151e8.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-what-is-css/672acc03c257524d6a5151e8.md @@ -7,10 +7,14 @@ dashedName: how-do-width-and-height-work # --interactive-- +## 寬度和高度介紹 + 在 CSS 中,`width` 和 `height` 屬性用於控制網頁元素的尺寸。 這些屬性可以用不同的單位定義,例如像素(`px`)、百分比(`%`)、視窗單位(`vw`、`vh`)等。 +## `width` 和 `height` 屬性 + `width` 屬性指定元素的寬度。如果你沒有指定寬度,則預設值會設定為 `auto`。這讓瀏覽器根據元素的內容、父容器和顯示型別來決定元素的寬度。對於 `div` 元素,`width: auto` 會使其擴展以填滿父容器的整個寬度。 `height` 屬性指定元素的高度。同樣地,高度的預設值是 `auto`,這表示它會根據內部內容進行調整。 @@ -40,6 +44,8 @@ dashedName: how-do-width-and-height-work 像素是 CSS 中固定大小的測量單位,提供對尺寸的精確控制。 +## `min-width` 和 `min-height` 屬性 + `min-width` 屬性指定元素可以擁有的最小寬度。即使內部內容較小,元素也不會縮小到低於此值。 `min-height` 指定元素的最小高度。它確保元素不會比設定的值更矮。 @@ -73,6 +79,8 @@ dashedName: how-do-width-and-height-work 請記住,如果 `min-width` 或 `min-height` 大於 `width` 或 `height`,它們將會改寫較小的值。這確保元素不會變得過小,這對於維護一致且可用的設計非常重要。 +## `max-width` 和 `max-height` 屬性 + `max-width` 指定元素可以擴展到的最大寬度,即使有足夠的空間讓它更寬。 `max-height` 指定元素可以增長到的最大高度,無論內容大小為何。 @@ -104,6 +112,8 @@ dashedName: how-do-width-and-height-work 請記住,當 `max-width` 或 `max-height` 小於 `width` 或 `height` 時,它們具有優先權。這對於控制佈局中元素的最大尺寸非常重要。 +## 屬性優先 + CSS 優先使用 `min-width` 和 `min-height`,而非 `width` 和 `height`。如果值超過限制,`max-width` 和 `max-height` 會限制尺寸。 例如,如果你將 `width` 設定為 `600px` 且 `max-width` 設定為 `500px`,該元素的寬度將被限制在 `500px`。`max-width` 會改寫較寬的設定,使元素保持在指定的最大尺寸內。 diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-backgrounds-and-borders/672aa669960f6a596081fcad.md b/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-backgrounds-and-borders/672aa669960f6a596081fcad.md index ea70e53b781..6a52597297b 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-backgrounds-and-borders/672aa669960f6a596081fcad.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-backgrounds-and-borders/672aa669960f6a596081fcad.md @@ -7,6 +7,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen # --interactive-- +## 背景屬性介紹 + 當在 CSS 中處理背景影像時,你有多個屬性可用來控制這些影像的顯示方式。 我們將專注的主要屬性是 `background-size`、`background-repeat`、`background-position` 和 `background-attachment`。 @@ -27,6 +29,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen 上述 CSS 為 `body` 元素設定了一個貓咪背景影像。 +## `background-size` 屬性 + 如果你想設定背景影像的大小,可以使用 `background-size` 屬性。 你可以使用 `contain` 將影像縮放到盡可能大而不裁切或拉伸。 @@ -65,6 +69,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen ::: +## `background-repeat` 屬性 + 在前面的範例中,你可能注意到背景影像會持續重複。 預設情況下,背景影像會在水平方向和垂直方向重複,以填滿整個元素。然而,你可以控制此行為。 @@ -122,6 +128,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen ::: +## `background-position` 屬性 + 要在螢幕上定位背景影像,可以使用 `background-position` 屬性。 `background-position` 屬性允許你設定背景影像在元素中的顯示位置。你可以使用關鍵字如 `top`、`bottom`、`left`、`right` 和 `center`,或是特定的像素或百分比數值。 @@ -146,6 +154,8 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen 這段 CSS 程式碼將背景影像水平置中並垂直置頂於元素。 +## `background-attachment` 屬性 + 最後,`background-attachment` 決定背景影像在頁面滾動時是隨內容一起滾動還是保持固定。 主要的值有 `scroll`(預設值),背景影像會隨內容捲動,以及 `fixed`,背景影像會固定在螢幕上的相同位置。 @@ -168,9 +178,11 @@ dashedName: how-to-work-with-background-image-size-repeat-position-and-attachmen 這段 CSS 程式碼設定背景影像在頁面捲動時保持固定位置。 +## `background` 簡寫屬性 + 如果你想將幾個屬性合併成一行,可以使用簡寫的 `background` 屬性來達成。 -這裡有一個範例: +以下是一個範例: :::interactive_editor diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-code-editors-and-ides/672d26269456511aa3db614d.md b/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-code-editors-and-ides/672d26269456511aa3db614d.md index 44f886e218a..570ce335aa1 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-code-editors-and-ides/672d26269456511aa3db614d.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-code-editors-and-ides/672d26269456511aa3db614d.md @@ -7,8 +7,12 @@ dashedName: what-is-a-code-editor-and-ide # --description-- +## 什麼是程式碼編輯器和整合開發環境? + 你可能會以為這兩者是一樣的,但其實不完全相同。程式碼編輯器是任何允許你編輯程式碼檔案的應用程式。IDE,或稱整合開發環境,是一個完整的應用程式,讓你在編輯程式碼的同時,可以建置、執行和偵錯你的程式碼。 +## 探索熱門的整合開發環境 + 一些範例會有助於理解。 首先,讓我們來看看幾個流行的整合開發環境。Visual Studio 是微軟提供的一個整合開發環境,提供一套完整的工具,用於建置、偵錯及部署跨多個平台的應用程式。 @@ -17,6 +21,8 @@ dashedName: what-is-a-code-editor-and-ide Android Studio 是由 Google 開發的整合開發環境,專門用於建置、偵錯和測試 Android 應用程式。 +## 探索熱門的程式碼編輯器 + 這些只是一些整合開發環境的範例。現在,讓我們來看看幾個受歡迎的程式碼編輯器。 Visual Studio Code 是微軟推出的輕量級、開放原始碼程式碼編輯器,支援廣泛的程式設計語言,並透過擴充套件提供偵錯、語法凸顯標示和版本控制等功能。 @@ -27,6 +33,8 @@ Windows 使用者也可以使用 Notepad++,這是一款免費且開源的文 你可能已注意到,程式碼編輯器主要專注於檔案的文字內容,而 IDE 則提供各種工具來管理你的程式碼。 +## 探索雲端編輯器 + 這些範例都是你可以在你的電腦上執行的區域的程式,但也有你可以使用的雲端編輯器。 基於雲端的編輯器是一種線上工具,允許使用者直接透過網頁瀏覽器撰寫、編輯及管理程式碼或文字,無需在區域的電腦安裝軟體。 @@ -39,6 +47,8 @@ Replit 是一個線上平台,提供一個協作環境讓使用者能夠直接 StackBlitz 是另一個雲端編輯器。它直接在瀏覽器中執行,讓你在不需要任何區域設定的情況下建置、測試和分享網頁專案。 +## 選擇合適的編輯器 + 還有許多其他選項。有些選項,例如 Visual Studio Code,具有高度擴充性,能支援多種專案類型和程式語言。其他選項則可能專門針對少數程式語言或專案類型設計。 你使用的應用程式可能會因特定專案而異。你應該探索這些選項,以了解哪一個最適合你的需求。 diff --git a/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-code-editors-and-ides/672d456f4ac35950b300e93f.md b/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-code-editors-and-ides/672d456f4ac35950b300e93f.md index cfcf4888132..9a7b3d648ad 100644 --- a/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-code-editors-and-ides/672d456f4ac35950b300e93f.md +++ b/curriculum/challenges/chinese-traditional/blocks/lecture-working-with-code-editors-and-ides/672d456f4ac35950b300e93f.md @@ -7,8 +7,12 @@ dashedName: what-are-several-useful-keyboard-shortcuts-for-maximizing-productivi # --description-- +## 繼承自作業系統的快捷鍵 + 你可能已經熟悉一些基本的快捷鍵,這些快捷鍵是從你的作業系統繼承而來。像是 Ctrl + S(Windows/Linux)或 Cmd + S(macOS)用來存檔,Ctrl + C 或 Cmd + C 用來複製,還有 Ctrl + V 或 Cmd + V 用來貼上,這些在 VS Code 都適用。 +## 應用程式專屬快捷鍵 + 但有一些是應用程式專屬的,仍然可以提升你的生產力。值得注意的是,這些快捷鍵在不同作業系統上可能會有所不同。 例如,Shift + Alt + F 會對目前開啟的檔案執行你所組態的格式化工具(像是 JavaScript 專案中的 Prettier)。 @@ -21,8 +25,12 @@ dashedName: what-are-several-useful-keyboard-shortcuts-for-maximizing-productivi 還是你根本看不清楚程式碼?Ctrl + Plus(Windows/Linux)或 Cmd + Plus(macOS)會放大編輯器的縮放比例,而 Ctrl + Minus(Windows/Linux)或 Cmd + Minus(macOS)會縮小它。 +## 多行編輯快捷鍵 + VS Code 另一個有用的功能是多列編輯,讓你能一次修改多列。舉例來說,你可以用 Ctrl + Alt + Down 和 Ctrl + Alt + Up(Windows)、Shift + Alt + Down 和 Shift + Alt + Up(Linux)、或 Option + Cmd + Down 和 Option + Cmd + Up(macOS)來將游標延伸到連續的列。你也可以按住 Alt(Windows/Linux)或 Option(macOS)並點擊,在你需要的不同列上新增游標。游標放好後,你輸入或刪除的任何內容都會同時套用到所有這些位置,這在處理重複程式碼時能節省很多時間。 +## 指令調色盤與鍵盤快捷鍵參考 + 最後,如果你忘記任何這些快捷鍵,你隨時可以按 Ctrl + Shift + P(Windows/Linux)或 Cmd + Shift + P(macOS),這會開啟命令調色盤,讓你選擇你需要的任何指令。