diff --git a/client/i18n/locales/chinese-traditional/intro.json b/client/i18n/locales/chinese-traditional/intro.json index de5eb1992e..9539339fc0 100644 --- a/client/i18n/locales/chinese-traditional/intro.json +++ b/client/i18n/locales/chinese-traditional/intro.json @@ -1,84 +1,84 @@ { "responsive-web-design": { - "title": "响应式网页设计", + "title": "響應式網頁設計", "intro": [ - "在响应式网页设计认证中,你将学习开发者用来编写网页的语言:HTML(超文本标记语言)用于创建内容,CSS(级联样式表)用于样式设计。", - "首先,你将通过编写一个展示猫咪图片的应用,学习 HTML 和 CSS 的基本知识。 然后,通过画企鹅来学习像 CSS 变量这样的现代技术,以及通过构建网页表单来学习无障碍的最佳实践。", - "最后,你将学习使用 flexbox(弹性盒子)构建一个 Twitter 卡片,以及使用 CSS 网格构建复杂的博客布局,以此学习制作适应不同屏幕大小的网页。" + "在響應式網頁設計認證中,你將學習開發者用來編寫網頁的語言:HTML(超文本標記語言)用於創建內容,CSS(級聯樣式表)用於樣式設計。", + "首先,你將通過編寫一個展示貓咪圖片的應用,學習 HTML 和 CSS 的基本知識。 然後,通過畫企鵝來學習像 CSS 變量這樣的現代技術,以及通過構建網頁表單來學習無障礙的最佳實踐。", + "最後,你將學習使用 flexbox(彈性盒子)構建一個 Twitter 卡片,以及使用 CSS 網格構建複雜的博客佈局,以此學習製作適應不同屏幕大小的網頁。" ], "blocks": { "basic-html-and-html5": { - "title": "基础 HTML 和 HTML5", + "title": "基礎 HTML 和 HTML5", "intro": [ - "HTML 是一种标记语言,使用特殊的语法或标记来向浏览器描述网页的结构。HTML 元素由开始和结束标签构成,标签之间是文本内容。 不同的标签可以让文本内容以标题、段落、列表等形式展现。", - "在这个课程中,你将通过编写一个展示猫咪图片的应用,学习最常见的 HTML 元素——它们可以用来构成任何网页。" + "HTML 是一種標記語言,使用特殊的語法或標記來向瀏覽器描述網頁的結構。HTML 元素由開始和結束標籤構成,標籤之間是文本內容。 不同的標籤可以讓文本內容以標題、段落、列表等形式展現。", + "在這個課程中,你將通過編寫一個展示貓咪圖片的應用,學習最常見的 HTML 元素——它們可以用來構成任何網頁。" ] }, "basic-css": { - "title": "基础 CSS", + "title": "基礎 CSS", "intro": [ - "CSS(级联样式表)告诉浏览器如何显示你在 HTML 中写入的文本和其他内容。你可以使用 CSS 控制 HTML 元素的颜色、字体、大小、间距等许多\b属性。", - "现在你已经写好了猫图应用的基本结构,接下来我们用 CSS 给它加一些样式。" + "CSS(級聯樣式表)告訴瀏覽器如何顯示你在 HTML 中寫入的文本和其他內容。你可以使用 CSS 控制 HTML 元素的顏色、字體、大小、間距等許多\b屬性。", + "現在你已經寫好了貓圖應用的基本結構,接下來我們用 CSS 給它加一些樣式。" ] }, "applied-visual-design": { - "title": "应用视觉设计", + "title": "應用視覺設計", "intro": [ - "视觉设计结合了排版、色彩理论、图形、动画、页面布局等,以表达独特的信息。", - "在这个课程中,你将学习如何将这些不同的视觉设计元素应用到网页上。" + "視覺設計結合了排版、色彩理論、圖形、動畫、頁面佈局等,以表達獨特的信息。", + "在這個課程中,你將學習如何將這些不同的視覺設計元素應用到網頁上。" ] }, "applied-accessibility": { - "title": "应用无障碍", + "title": "應用無障礙", "intro": [ - "在网页开发中,可访问性是指网页内容和用户界面可以被用户理解、浏览并与之交互。这里的用户包括有视觉障碍、听觉障碍或认知障碍的用户。", - "在这个课程中,你将学习提升网站可访问性的最佳实践。" + "在網頁開發中,可訪問性是指網頁內容和用戶界面可以被用戶理解、瀏覽並與之交互。這裏的用戶包括有視覺障礙、聽覺障礙或認知障礙的用戶。", + "在這個課程中,你將學習提升網站可訪問性的最佳實踐。" ] }, "responsive-web-design-principles": { - "title": "响应式网页设计原则", + "title": "響應式網頁設計原則", "intro": [ - "人们可能通过形状和大小不同的设备来访问网页。通过响应式网页设计,你可以设计出能灵活适应不同屏幕大小、方向和分辨率的网页。", - "在这个课程中,你将学习如何使用 CSS 让你的网页在不同设备上看起来都不错。" + "人們可能通過形狀和大小不同的設備來訪問網頁。通過響應式網頁設計,你可以設計出能靈活適應不同屏幕大小、方向和分辨率的網頁。", + "在這個課程中,你將學習如何使用 CSS 讓你的網頁在不同設備上看起來都不錯。" ] }, "css-flexbox": { - "title": "CSS 弹性盒子", + "title": "CSS 彈性盒子", "intro": [ - "Flexbox(弹性盒子)是最新版本的 CSS(即 CSS3)中引入的一种强大且兼容性好的布局方法。使用 flexbox,我们可以很容易地处理好页面上的元素布局,并创建可以自动缩小和放大的动态用户界面。", - "在这个课程中,你将通过构建一个 Twitter 卡片来学习 flexbox 和动态布局的基础知识。" + "Flexbox(彈性盒子)是最新版本的 CSS(即 CSS3)中引入的一種強大且兼容性好的佈局方法。使用 flexbox,我們可以很容易地處理好頁面上的元素佈局,並創建可以自動縮小和放大的動態用戶界面。", + "在這個課程中,你將通過構建一個 Twitter 卡片來學習 flexbox 和動態佈局的基礎知識。" ] }, "css-grid": { - "title": "CSS 网格", + "title": "CSS 網格", "intro": [ - "CSS 网格是一个较新的标准,用于构建复杂的响应布局。它通过把 HTML 元素转换为具有行和列的网格容器,以便将子元素放置在所需要的位置。", - "在这个课程中,你将通过构建不同的复杂布局(包括博客)来学习 CSS 网格的基础知识。" + "CSS 網格是一個較新的標準,用於構建複雜的響應佈局。它通過把 HTML 元素轉換爲具有行和列的網格容器,以便將子元素放置在所需要的位置。", + "在這個課程中,你將通過構建不同的複雜佈局(包括博客)來學習 CSS 網格的基礎知識。" ] }, "responsive-web-design-projects": { - "title": "响应式网页设计项目", + "title": "響應式網頁設計項目", "intro": [ - "是时候使用你新学到的技能了。通过构建这些项目,你将有机会应用之前学到的所有技巧、原则和概念:HTML、CSS、视觉设计、无障碍等等。", - "完成下面的五个网页编程项目,获得响应式网页设计认证。" + "是時候使用你新學到的技能了。通過構建這些項目,你將有機會應用之前學到的所有技巧、原則和概念:HTML、CSS、視覺設計、無障礙等等。", + "完成下面的五個網頁編程項目,獲得響應式網頁設計認證。" ] }, "basic-html-cat-photo-app": { - "title": "基础 HTML 猫图应用", + "title": "基礎 HTML 貓圖應用", "intro": [ "", "" ] }, "basic-css-cafe-menu": { - "title": "基础 CSS 咖啡菜单", + "title": "基礎 CSS 咖啡菜單", "intro": [ "", "" ] }, "css-variables-skyline": { - "title": "CSS 变量 Skyline", + "title": "CSS 變量 Skyline", "intro": [ "", "" @@ -87,101 +87,101 @@ } }, "javascript-algorithms-and-data-structures": { - "title": "JavaScript 算法和数据结构", + "title": "JavaScript 算法和數據結構", "intro": [ - "HTML 和 CSS 控制页面的内容和样式,JavaScript 则用于页面交互。在 JavaScript 算法和数据结构认证中,你将学习 JavaScript 的基础知识,包括变量、 数组、 对象、 循环和函数。", - "打好基础之后,你将会通过创建算法来操作字符串、进行阶乘运算甚至计算国际空间站的轨道来应用这些知识。", - "在这个过程中,你还会学习两种重要的编程方式或模式:面向对象的编程(OOP)和函数式编程(FP)。" + "HTML 和 CSS 控制頁面的內容和樣式,JavaScript 則用於頁面交互。在 JavaScript 算法和數據結構認證中,你將學習 JavaScript 的基礎知識,包括變量、 數組、 對象、 循環和函數。", + "打好基礎之後,你將會通過創建算法來操作字符串、進行階乘運算甚至計算國際空間站的軌道來應用這些知識。", + "在這個過程中,你還會學習兩種重要的編程方式或模式:面向對象的編程(OOP)和函數式編程(FP)。" ], "blocks": { "basic-javascript": { - "title": "基础 JavaScript", + "title": "基礎 JavaScript", "intro": [ - "JavaScript 是一种用于网页交互的脚本语言。它和 HTML 和 CSS 一样,是网站的核心技术之一。所有现代浏览器都支持 JavaScript。", - "在这个课程中,你将学习JavaScript 中的基本编程概念。你将从数字和字符串等基本数据结构开始,然后学习使用数组、对象、函数、循环、if/else 语句等等。" + "JavaScript 是一種用於網頁交互的腳本語言。它和 HTML 和 CSS 一樣,是網站的核心技術之一。所有現代瀏覽器都支持 JavaScript。", + "在這個課程中,你將學習JavaScript 中的基本編程概念。你將從數字和字符串等基本數據結構開始,然後學習使用數組、對象、函數、循環、if/else 語句等等。" ] }, "es6": { "title": "ES6", "intro": [ - "ECMAScript(ES)是 JavaScript 的标准。因为所有主流浏览器都遵循此规范,所以 ECMAScript 和 JavaScript 是可以互换的。", - "截至目前你所学到的 JavaScript 大多是在 2009 年定稿的 ES5(ECMAScript5)。你仍然可以使用 ES5 编写程序。JavaScript 在不断迭代,每年都会发布新功能。", - "2015 年发布的 ES6 为该语言增加了许多强大的新功能。在这个课程中,你将学习这些新功能,包括 letconst、箭头函数、类、promises 和模块。" + "ECMAScript(ES)是 JavaScript 的標準。因爲所有主流瀏覽器都遵循此規範,所以 ECMAScript 和 JavaScript 是可以互換的。", + "截至目前你所學到的 JavaScript 大多是在 2009 年定稿的 ES5(ECMAScript5)。你仍然可以使用 ES5 編寫程序。JavaScript 在不斷迭代,每年都會發布新功能。", + "2015 年發佈的 ES6 爲該語言增加了許多強大的新功能。在這個課程中,你將學習這些新功能,包括 letconst、箭頭函數、類、promises 和模塊。" ] }, "regular-expressions": { - "title": "正则表达式", + "title": "正則表達式", "intro": [ - "正则表达式,常常缩写为 “regex” 或 “regexp”,是帮助程序员匹配、搜索和替换文本的模式。正则表达式非常强大,但可能难以阅读,因为它们使用特殊字符来做更复杂更灵活的匹配。", - "在这个课程中,你将学习如何使用特殊字符、捕获组、正向或负向先行断言以及其他技巧来匹配你想要的文本。" + "正則表達式,常常縮寫爲 “regex” 或 “regexp”,是幫助程序員匹配、搜索和替換文本的模式。正則表達式非常強大,但可能難以閱讀,因爲它們使用特殊字符來做更復雜更靈活的匹配。", + "在這個課程中,你將學習如何使用特殊字符、捕獲組、正向或負向先行斷言以及其他技巧來匹配你想要的文本。" ] }, "debugging": { - "title": "调试", + "title": "調試", "intro": [ - "调试是检查代码、发现并修复问题的过程。", - "代码中的问题通常有三种形式:1)语法错误导致程序停止运行, 2)代码无法执行或具有意外行为导致运行时错误,3)代码有语义(逻辑)错误,没有实现原来的意图。", - "在这个课程中,你将学习如何使用 JavaScript 控制台来调试程序,防止出现常见问题。" + "調試是檢查代碼、發現並修復問題的過程。", + "代碼中的問題通常有三種形式:1)語法錯誤導致程序停止運行, 2)代碼無法執行或具有意外行爲導致運行時錯誤,3)代碼有語義(邏輯)錯誤,沒有實現原來的意圖。", + "在這個課程中,你將學習如何使用 JavaScript 控制檯來調試程序,防止出現常見問題。" ] }, "basic-data-structures": { - "title": "基础数据结构", + "title": "基礎數據結構", "intro": [ - "我们可以通过多种方式存储和访问数据。你已经知道数组和对象了,它们都是常见的 JavaScript 数据结构。", - "在基础数据结构课程中,你会更深入地了解数组和对象之间的差异,以及在不同情况下应该使用哪个。你还将学习到一些好用的 JS 方法,例如 splice(),以及使用 Object.keys() 来访问和操作数据。" + "我們可以通過多種方式存儲和訪問數據。你已經知道數組和對象了,它們都是常見的 JavaScript 數據結構。", + "在基礎數據結構課程中,你會更深入地瞭解數組和對象之間的差異,以及在不同情況下應該使用哪個。你還將學習到一些好用的 JS 方法,例如 splice(),以及使用 Object.keys() 來訪問和操作數據。" ] }, "basic-algorithm-scripting": { - "title": "基础算法", + "title": "基礎算法", "intro": [ - "算法是描述如何处理某个问题的一系列步骤。", - "要写一个有效的算法,你需要先将一个特定的问题分解为小的部分,并仔细思考如何用代码解决每个部分。", - "在这个课程中,你将通过编写算法来实现诸如转换温度、处理复杂的二维数组等,来学习算法思维的基础知识。" + "算法是描述如何處理某個問題的一系列步驟。", + "要寫一個有效的算法,你需要先將一個特定的問題分解爲小的部分,並仔細思考如何用代碼解決每個部分。", + "在這個課程中,你將通過編寫算法來實現諸如轉換溫度、處理複雜的二維數組等,來學習算法思維的基礎知識。" ] }, "object-oriented-programming": { - "title": "面向对象编程", + "title": "面向對象編程", "intro": [ - "OOP,即面向对象编程,是软件开发过程的主要方法之一。在 OOP 中,我们用对象和类来组织代码,以描述事物的特点以及它们可以做什么。", - "在这个课程中,你将会学习 JavaScript 中面向对象编程的基本原则,例如 this 关键词、原型链、构造器和继承。" + "OOP,即面向對象編程,是軟件開發過程的主要方法之一。在 OOP 中,我們用對象和類來組織代碼,以描述事物的特點以及它們可以做什麼。", + "在這個課程中,你將會學習 JavaScript 中面向對象編程的基本原則,例如 this 關鍵詞、原型鏈、構造器和繼承。" ] }, "functional-programming": { - "title": "函数式编程", + "title": "函數式編程", "intro": [ - "函数式编程是另一种软件开发方法。在函数式编程中,代码被组织成较小的基本的函数,可以结合起来构建复杂的程序。", - "在这个课程中,你将学习函数式编程的核心概念,包括纯函数,如何避免突变,如何使用 .map().filter() 等方法编写更整洁的代码。" + "函數式編程是另一種軟件開發方法。在函數式編程中,代碼被組織成較小的基本的函數,可以結合起來構建複雜的程序。", + "在這個課程中,你將學習函數式編程的核心概念,包括純函數,如何避免突變,如何使用 .map().filter() 等方法編寫更整潔的代碼。" ] }, "intermediate-algorithm-scripting": { - "title": "中级算法", + "title": "中級算法", "intro": [ - "现在你了解了算法的基础知识、面向对象编程以及函数式编程。接下来我们将进入中级算法挑战来测试你的技能。" + "現在你瞭解了算法的基礎知識、面向對象編程以及函數式編程。接下來我們將進入中級算法挑戰來測試你的技能。" ] }, "javascript-algorithms-and-data-structures-projects": { - "title": "JavaScript 算法和数据结构项目", + "title": "JavaScript 算法和數據結構項目", "intro": [ - "是时候用上你新学到的 JavaScript 技能了!接下来的项目和前面的算法挑战很相近,但是难度会更高。", - "完成这 5 个 JavaScript 项目,以获得 JavaScript 算法和数据结构认证。" + "是時候用上你新學到的 JavaScript 技能了!接下來的項目和前面的算法挑戰很相近,但是難度會更高。", + "完成這 5 個 JavaScript 項目,以獲得 JavaScript 算法和數據結構認證。" ] }, "basic-javascript-rpg-game": { - "title": "基础 JavaScript RPG 游戏", + "title": "基礎 JavaScript RPG 遊戲", "intro": [ "", "" ] }, "intermediate-javascript-calorie-counter": { - "title": "中级 JavaScript 卡路里计算器", + "title": "中級 JavaScript 卡路里計算器", "intro": [ "", "" ] }, "functional-programming-spreadsheet": { - "title": "函数式编程电子表格", + "title": "函數式編程電子表格", "intro": [ "", "" @@ -190,97 +190,97 @@ } }, "front-end-libraries": { - "title": "前端开发库", + "title": "前端開發庫", "intro": [ - "你已经熟悉了 HTML、CSS 和 JavaScript。现在学习行业中一些流行的前端库来提升你的技能吧。", - "在前端库认证中,你将学习如何使用 Bootstrap 快速设置网站样式,以及如何在 CSS 样式中添加逻辑,并使用 Sass 对其进行扩展。", - "稍后,你将建立一个购物车和其他应用程序,学习如何使用 React 和 Redux 创建强大的单页应用程序(SPAs)。" + "你已經熟悉了 HTML、CSS 和 JavaScript。現在學習行業中一些流行的前端庫來提升你的技能吧。", + "在前端庫認證中,你將學習如何使用 Bootstrap 快速設置網站樣式,以及如何在 CSS 樣式中添加邏輯,並使用 Sass 對其進行擴展。", + "稍後,你將建立一個購物車和其他應用程序,學習如何使用 React 和 Redux 創建強大的單頁應用程序(SPAs)。" ], "blocks": { "bootstrap": { "title": "Bootstrap", "intro": [ - "Bootstrap 一个是用于设计响应性网页和应用程序的前端框架。它对网页开发采用移动优先的方法,具有预定义的 CSS 样式和 class,以及一些 JavaScript 功能。", - "在这个课程中,你将学习如何使用 Bootstrap 来建立响应式网页,并使用它的 class 来设置按钮、图像、表格、导航和其他常见元素的样式。" + "Bootstrap 一個是用於設計響應性網頁和應用程序的前端框架。它對網頁開發採用移動優先的方法,具有預定義的 CSS 樣式和 class,以及一些 JavaScript 功能。", + "在這個課程中,你將學習如何使用 Bootstrap 來建立響應式網頁,並使用它的 class 來設置按鈕、圖像、表格、導航和其他常見元素的樣式。" ] }, "jquery": { "title": "jQuery", "intro": [ - "jQuery 是开发者们最常用的 JavaScript 库之一。", - "在 jQuery 于 2006 年发布时,各种常用浏览器处理 JavaScript 的方式都略有不同。jQuery 简化了编写客户端 JavaScript 的过程,并确保代码在所有浏览器中以同样的方式运行。", - "在这个课程中,你将学习如何使用 jQuery 选择、移除、克隆和修改页面上的不同元素。" + "jQuery 是開發者們最常用的 JavaScript 庫之一。", + "在 jQuery 於 2006 年發佈時,各種常用瀏覽器處理 JavaScript 的方式都略有不同。jQuery 簡化了編寫客戶端 JavaScript 的過程,並確保代碼在所有瀏覽器中以同樣的方式運行。", + "在這個課程中,你將學習如何使用 jQuery 選擇、移除、克隆和修改頁面上的不同元素。" ] }, "sass": { "title": "SASS", "intro": [ - "Sass,英文全称为 “Syntactically Awesome StyleSheets”,是对 CSS 的扩展。它添加了一些 CSS 语法不具有的新特性。Sass 简化了 CSS,这让维护样式表变得更容易。", - "在 Sass 课程中,你将学习如何将数据存储在变量中、嵌套 CSS、创建可重用的样式、为样式添加逻辑和循环等等。" + "Sass,英文全稱爲 “Syntactically Awesome StyleSheets”,是對 CSS 的擴展。它添加了一些 CSS 語法不具有的新特性。Sass 簡化了 CSS,這讓維護樣式表變得更容易。", + "在 Sass 課程中,你將學習如何將數據存儲在變量中、嵌套 CSS、創建可重用的樣式、爲樣式添加邏輯和循環等等。" ] }, "react": { "title": "React", "intro": [ - "React 是一个流行的 JavaScript 库,用于为网页或应用程序构建可重用的组件驱动的用户界面。", - "React 将 HTML 与 JavaScript 结合在了一起,以此创建出一个新的标签语言 JSX。React 还使得管理整个应用程序的数据流变得更容易。", - "在这个课程中,你将学习如何创建不同的 React 组件,以 state props 管理数据,以及使用不同的生命周期方法(例如 componentDidMount)和更多内容。" + "React 是一個流行的 JavaScript 庫,用於爲網頁或應用程序構建可重用的組件驅動的用戶界面。", + "React 將 HTML 與 JavaScript 結合在了一起,以此創建出一個新的標籤語言 JSX。React 還使得管理整個應用程序的數據流變得更容易。", + "在這個課程中,你將學習如何創建不同的 React 組件,以 state props 管理數據,以及使用不同的生命週期方法(例如 componentDidMount)和更多內容。" ] }, "redux": { "title": "Redux", "intro": [ - "随着应用程序规模和范围的扩大,管理共享数据变得更加困难。 Redux 被定义为 “JavaScript 应用的可预测状态容器”,它有助于确保你的应用能够可预测地运行,并且更容易测试。", - "虽然你可以使用任何视图库的 Redux,但我们在这里介绍 Redux,然后在下一组课程中与 React 结合起来。", - "在这个课程中,你将学习 Redux stores、actions、reducers 和中间件的基础知识,来管理应用程序的数据。" + "隨着應用程序規模和範圍的擴大,管理共享數據變得更加困難。 Redux 被定義爲 “JavaScript 應用的可預測狀態容器”,它有助於確保你的應用能夠可預測地運行,並且更容易測試。", + "雖然你可以使用任何視圖庫的 Redux,但我們在這裏介紹 Redux,然後在下一組課程中與 React 結合起來。", + "在這個課程中,你將學習 Redux stores、actions、reducers 和中間件的基礎知識,來管理應用程序的數據。" ] }, "react-and-redux": { "title": "React 和 Redux", "intro": [ - "React 和 Redux 经常一起被提及,这是有充分理由的。创建 Redux 的开发人员是一个 React 开发者,他希望简化不同组件间的数据共享。", - "你已经知道了如何使用 Redux 管理共享数据流,是时候将这些知识与 React 结合起来了。在 React 和 Redux 课程中,你将构建一个 React 组件,并学习如何使用 Redux 在组件级别本地管理状态,以及在整个应用程序中管理状态。" + "React 和 Redux 經常一起被提及,這是有充分理由的。創建 Redux 的開發人員是一個 React 開發者,他希望簡化不同組件間的數據共享。", + "你已經知道了如何使用 Redux 管理共享數據流,是時候將這些知識與 React 結合起來了。在 React 和 Redux 課程中,你將構建一個 React 組件,並學習如何使用 Redux 在組件級別本地管理狀態,以及在整個應用程序中管理狀態。" ] }, "front-end-libraries-projects": { - "title": "前端开发库项目", + "title": "前端開發庫項目", "intro": [ - "现在是时候应用你的前端开发库技术进行测试。用 Bootstrap、jQuery、Sass、React、和 Redux 构建 5 个项目,测试你到现在所学到的知识。", - "完成全部 5 个项目,然后你会获得前端开发库认证。" + "現在是時候應用你的前端開發庫技術進行測試。用 Bootstrap、jQuery、Sass、React、和 Redux 構建 5 個項目,測試你到現在所學到的知識。", + "完成全部 5 個項目,然後你會獲得前端開發庫認證。" ] } } }, "data-visualization": { - "title": "数据可视化", + "title": "數據可視化", "intro": [ - "数据无处不在。但是,如果没有上下文,数据就没有多大意义。", - "在数据可视化认证中,你会用 D3.js 库来创建表格、图表和地图,以展示不同的数据。", - "你还会学习 JSON(JavaScript 对象),以及如何使用 API(应用程序接口)使用在线的数据。" + "數據無處不在。但是,如果沒有上下文,數據就沒有多大意義。", + "在數據可視化認證中,你會用 D3.js 庫來創建表格、圖表和地圖,以展示不同的數據。", + "你還會學習 JSON(JavaScript 對象),以及如何使用 API(應用程序接口)使用在線的數據。" ], "blocks": { "data-visualization-with-d3": { - "title": "用 D3 实现数据可视化", + "title": "用 D3 實現數據可視化", "intro": [ - "D3 或 D3.js 表示数据驱动文档。它是一个用于在浏览器中创建动态和交互式数据视觉化的 JavaScript 库。", - "它基于 web 标准,即 HTML、CSS 和 SVG(可缩放矢量图形)技术。", - "D3 支持多种不同类型的输入数据格式。 然后,你可以使用它强大的内置方法将这些数据转换成不同的图表、和地图。", - "在用 D3 实现数据可视化课程中,你将学习如何使用数据来创建不同的图表、悬停元素及其他内容,用以创建动态和有吸引力的数据可视化。" + "D3 或 D3.js 表示數據驅動文檔。它是一個用於在瀏覽器中創建動態和交互式數據視覺化的 JavaScript 庫。", + "它基於 web 標準,即 HTML、CSS 和 SVG(可縮放矢量圖形)技術。", + "D3 支持多種不同類型的輸入數據格式。 然後,你可以使用它強大的內置方法將這些數據轉換成不同的圖表、和地圖。", + "在用 D3 實現數據可視化課程中,你將學習如何使用數據來創建不同的圖表、懸停元素及其他內容,用以創建動態和有吸引力的數據可視化。" ] }, "json-apis-and-ajax": { "title": "JSON APIs 和 AJAX", "intro": [ - "类似于 UI 如何帮助人们使用程序,API(应用程序接口)帮助程序与其他程序互动。API 是计算机用来相互沟通的工具,部分用于发送和接收数据。", - "程序员在使用 API 的时候,通常会使用 AJAX(同步 JavaScript 和 XML)。AJAX 指的是一组技术,这些技术向服务器提出异步请求以传输数据,然后将任何返回的数据加载到页面。而且在浏览器和服务器之间传输的数据常常是一种 JSON(JavaScript 对象)格式。", - "此课程将教你如何在浏览器中使用 API 和不同的 AJAX 技术的基础知识。" + "類似於 UI 如何幫助人們使用程序,API(應用程序接口)幫助程序與其他程序互動。API 是計算機用來相互溝通的工具,部分用於發送和接收數據。", + "程序員在使用 API 的時候,通常會使用 AJAX(同步 JavaScript 和 XML)。AJAX 指的是一組技術,這些技術向服務器提出異步請求以傳輸數據,然後將任何返回的數據加載到頁面。而且在瀏覽器和服務器之間傳輸的數據常常是一種 JSON(JavaScript 對象)格式。", + "此課程將教你如何在瀏覽器中使用 API 和不同的 AJAX 技術的基礎知識。" ] }, "data-visualization-projects": { - "title": "数据可视化项目", + "title": "數據可視化項目", "intro": [ - "现在你学习了如何使用 D3 、 APIs 和 AJAX 技术,构建这 5 个数据可视化项目来测试你的技术吧。", - "在这些项目中,你需要获取数据并解析数据集,然后使用 D3 创建不同的数据可视化。完成之后,你可以获得数据可视化认证。" + "現在你學習瞭如何使用 D3 、 APIs 和 AJAX 技術,構建這 5 個數據可視化項目來測試你的技術吧。", + "在這些項目中,你需要獲取數據並解析數據集,然後使用 D3 創建不同的數據可視化。完成之後,你可以獲得數據可視化認證。" ] }, "d3-dashboard": { @@ -293,127 +293,127 @@ } }, "apis-and-microservices": { - "title": "APIs 和 微服务", + "title": "APIs 和 微服務", "intro": [ - "在这之前,你只是在前端使用 JavaScript 来给页面添加交互、解决算法挑战,或构建一个 SP。但 JavaScript 也可以用于后端或者服务器来构建整个 web 应用程序。", - "今天,构建应用软件的广受欢迎的方法之一是微服务,这些微服务是一种小型模块化的应用,能够共同形成一个更大的整体。", - "在 API 和微服务认证中,你将学习如何使用 Node.js 和 npm(Node 包管理工具)来写后端。你还将使用 Express 框架构建 web 应用程序,并使用 MongoDB 和 Mongoose 库构建一个 People Finder 微服务。" + "在這之前,你只是在前端使用 JavaScript 來給頁面添加交互、解決算法挑戰,或構建一個 SP。但 JavaScript 也可以用於後端或者服務器來構建整個 web 應用程序。", + "今天,構建應用軟件的廣受歡迎的方法之一是微服務,這些微服務是一種小型模塊化的應用,能夠共同形成一個更大的整體。", + "在 API 和微服務認證中,你將學習如何使用 Node.js 和 npm(Node 包管理工具)來寫後端。你還將使用 Express 框架構建 web 應用程序,並使用 MongoDB 和 Mongoose 庫構建一個 People Finder 微服務。" ], "blocks": { "managing-packages-with-npm": { - "title": "使用 NPM 管理软件包", + "title": "使用 NPM 管理軟件包", "intro": [ - "npm(Node 包管理工具)是一个命令行工具,用于安装、创建和分享为 Node.js 编写的 JavaScript 代码包。在 npm 上有许多开放源码软件包,所以在项目启动之前,需要一些时间来探索,这样你就不会最后重新创建轮子来处理像日期或从 API 获取数据这样的事项。", - "在这个课程中,你将学习使用 npm 的基本知识,包括如何使用 package.json 和如何管理已安装的依赖项。" + "npm(Node 包管理工具)是一個命令行工具,用於安裝、創建和分享爲 Node.js 編寫的 JavaScript 代碼包。在 npm 上有許多開放源碼軟件包,所以在項目啓動之前,需要一些時間來探索,這樣你就不會最後重新創建輪子來處理像日期或從 API 獲取數據這樣的事項。", + "在這個課程中,你將學習使用 npm 的基本知識,包括如何使用 package.json 和如何管理已安裝的依賴項。" ] }, "basic-node-and-express": { - "title": "Node 和 Express 基础", + "title": "Node 和 Express 基礎", "intro": [ - "Node.js 是一个 JavaScript 运行时,它允许开发人员在 JavaScript 中写入后端(服务器侧)程序。Node.js 有几个内置的模块——小型、独立的程序——来帮助实现这一点,一些核心模块包括像服务器一样运作的 HTTP 和文件系统,一个读取和修改文件的模块。", - "在上一组课程中你学到了怎么从 npm下载和管理软件包,这些软件包是较小模块的集合,可以帮助你打造更大更复杂的程序。", - "Express 是一个轻量级的网页应用框架,是最受欢迎的 npm 软件包之一。 Express 提供精简的基本 web 应用程序功能,包括应用的路由。路由在用户访问一个端点如
/blog
时将用户导向到相应的页面。", - "在这个课程中,你将学习 Node 和 Express 的基础知识,包括如何创建服务器, 处理不同的文件,及处理不同的浏览器请求。" + "Node.js 是一個 JavaScript 運行時,它允許開發人員在 JavaScript 中寫入後端(服務器側)程序。Node.js 有幾個內置的模塊——小型、獨立的程序——來幫助實現這一點,一些核心模塊包括像服務器一樣運作的 HTTP 和文件系統,一個讀取和修改文件的模塊。", + "在上一組課程中你學到了怎麼從 npm下載和管理軟件包,這些軟件包是較小模塊的集合,可以幫助你打造更大更復雜的程序。", + "Express 是一個輕量級的網頁應用框架,是最受歡迎的 npm 軟件包之一。 Express 提供精簡的基本 web 應用程序功能,包括應用的路由。路由在用戶訪問一個端點如
/blog
時將用戶導向到相應的頁面。", + "在這個課程中,你將學習 Node 和 Express 的基礎知識,包括如何創建服務器, 處理不同的文件,及處理不同的瀏覽器請求。" ] }, "mongodb-and-mongoose": { "title": "MongoDB 和 Mongose", "intro": [ - "MongoDB 是一个存储您可以在应用程序中使用的 JSON 文件(或记录)的数据库应用程序。 不同于SQL,另一种类型的数据库。Mongo是一个不相关的或“NoSQL”的数据库。 这意味着Mongo将所有相关数据存储在一个记录中,而不是像SQL数据库中那样在许多预设表中存储。", - "Mongoose 是一个受欢迎的 npm 包,通常和 Mongo 一起安装。通过 Mongoose,你可以使用 JavaScript 对象而不是 JSON ,这样就更容易与 Mongo 配合使用。 此外,它允许你为 schema 文件创建蓝图,所以你不会意外地保存错误的数据类型并出现错误。", - "在 MongoDB 和 Mongoose 课程中,你将学习使用的基本知识,包括如何建立模型,保存、删除并在数据库中查找文档。" + "MongoDB 是一個存儲您可以在應用程序中使用的 JSON 文件(或記錄)的數據庫應用程序。 不同於SQL,另一種類型的數據庫。Mongo是一個不相關的或“NoSQL”的數據庫。 這意味着Mongo將所有相關數據存儲在一個記錄中,而不是像SQL數據庫中那樣在許多預設表中存儲。", + "Mongoose 是一個受歡迎的 npm 包,通常和 Mongo 一起安裝。通過 Mongoose,你可以使用 JavaScript 對象而不是 JSON ,這樣就更容易與 Mongo 配合使用。 此外,它允許你爲 schema 文件創建藍圖,所以你不會意外地保存錯誤的數據類型並出現錯誤。", + "在 MongoDB 和 Mongoose 課程中,你將學習使用的基本知識,包括如何建立模型,保存、刪除並在數據庫中查找文檔。" ] }, "apis-and-microservices-projects": { - "title": "API 和微服务项目", + "title": "API 和微服務項目", "intro": [ - "你之前用过 API,但是现在你知道 npm、Node、Express、MongoDB 和 Mongoose,是时候创建应用 了。用你到现在所学的所有知识来创建 5 个不同的微服务,这些微服务是使用范围有限的小应用。", - "在创建这些微服务后,你会有 5 个很酷的微服务 API,你可以向朋友、家人和潜在的雇主展示。同时,你也会获得 API 和微服务认证。" + "你之前用過 API,但是現在你知道 npm、Node、Express、MongoDB 和 Mongoose,是時候創建應用 了。用你到現在所學的所有知識來創建 5 個不同的微服務,這些微服務是使用範圍有限的小應用。", + "在創建這些微服務後,你會有 5 個很酷的微服務 API,你可以向朋友、家人和潛在的僱主展示。同時,你也會獲得 API 和微服務認證。" ] } } }, "quality-assurance": { - "title": "质量保证", + "title": "質量保證", "intro": [ - "随着你的程序或网页应用程序变得更加复杂,你将想要测试它们,以确保新的更改不会破坏它们的原有功能。", - "在质量保证认证中, 你将学习如何通过 Chai 测试,以确保你的应用程序能够按照你的期望运行。", - "然后你将创建一个聊天应用程序来学习高级 Node 和 Express 概念。你还将使用 Pug 作为模板引擎,用于身份验证的 Passport 和 用于服务器和客户端之间实时通信的 Socket.io。" + "隨着你的程序或網頁應用程序變得更加複雜,你將想要測試它們,以確保新的更改不會破壞它們的原有功能。", + "In the Quality Assurance Certification, you'll learn how to write tests with Chai to ensure your applications work the way you expect them to.", + "然後你將創建一個聊天應用程序來學習高級 Node 和 Express 概念。你還將使用 Pug 作爲模板引擎,用於身份驗證的 Passport 和 用於服務器和客戶端之間實時通信的 Socket.io。" ], "blocks": { "quality-assurance-and-testing-with-chai": { - "title": "使用 Chai 进行质量保证和测试", + "title": "使用 Chai 進行質量保證和測試", "intro": [ - "Chai 是一个JavaScript测试库,帮助你确保程序能够在你更改代码后按照你的期望运行。", - "使用 Chai,你可以写测试描述你的程序的要求,并查看你的程序是否符合这些要求。", - "在这个课程中,你会了解测试 JavaScript 应用程序的断言、测试 API 和其他测试 JavaScript 应用的基础知识。" + "Chai 是一個JavaScript測試庫,幫助你確保程序能夠在你更改代碼後按照你的期望運行。", + "使用 Chai,你可以寫測試描述你的程序的要求,並查看你的程序是否符合這些要求。", + "在這個課程中,你會了解測試 JavaScript 應用程序的斷言、測試 API 和其他測試 JavaScript 應用的基礎知識。" ] }, "advanced-node-and-express": { - "title": "高级 Node 和 Express", + "title": "高級 Node 和 Express", "intro": [ - "现在是时候来使用高级 Node.js 和 Express.js 创建一个具有登录系统的聊天应用了。", - "为了创建一个安全的登录系统,你需要学习验证,这是一个验证个人身份或者过程的的操作。", - "在这个课程中,你将学习如何使用 Passport 管理身份验证,如何使用 Pug 创建可重用的模板以快速构建前端,以及如何使用 web sockets 在客户端和服务器之间进行实时通信。" + "現在是時候來使用高級 Node.js 和 Express.js 創建一個具有登錄系統的聊天應用了。", + "爲了創建一個安全的登錄系統,你需要學習驗證,這是一個驗證個人身份或者過程的的操作。", + "在這個課程中,你將學習如何使用 Passport 管理身份驗證,如何使用 Pug 創建可重用的模板以快速構建前端,以及如何使用 web sockets 在客戶端和服務器之間進行實時通信。" ] }, "quality-assurance-projects": { - "title": "质量保证项目", + "title": "質量保證項目", "intro": [ - "现在你对前端和后端都非常精通,是时候应用你所学到的所有技能和概念了。你将构建 5 个不同的 web 应用程序,并为每个应用程序编写测试,以确保它们正常工作并可以处理不同的情况。", - "完成这 5 个质量保证项目后,你将获得一个新的认证,你可以在自己的作品集中展示这 5 个项目和认证。" + "現在你對前端和後端都非常精通,是時候應用你所學到的所有技能和概念了。你將構建 5 個不同的 web 應用程序,併爲每個應用程序編寫測試,以確保它們正常工作並可以處理不同的情況。", + "完成這 5 個質量保證項目後,你將獲得一個新的認證,你可以在自己的作品集中展示這 5 個項目和認證。" ] } } }, "scientific-computing-with-python": { - "title": "Python 和科学计算", + "title": "Python 和科學計算", "intro": [ - "Python 是目前最火、最灵活的编程语言之一。你可以用它来做很多事,包括从基础算法到机器学习。", - "在这个认证中,你会学习 Python 基础知识,例如变量、循环、条件和函数。然后你会马上很快学习到复杂数据结构、网络,关系数据库和数据可视化。" + "Python 是目前最火、最靈活的編程語言之一。你可以用它來做很多事,包括從基礎算法到機器學習。", + "在這個認證中,你會學習 Python 基礎知識,例如變量、循環、條件和函數。然後你會馬上很快學習到複雜數據結構、網絡,關係數據庫和數據可視化。" ], "blocks": { "python-for-everybody": { - "title": "通用 Python 课程", + "title": "通用 Python 課程", "intro": [ - "通用 Python 课程是一个讲解 Python 3 基础的系列免费视频课程。", - "这些课程是 Dr. Charles Severance(Dr. Chuck)创建的。他是密歇根信息大学的实践教授,他教授各种技术课程,包括编程、数据库设计和 web 开发。" + "通用 Python 課程是一個講解 Python 3 基礎的系列免費視頻課程。", + "這些課程是 Dr. Charles Severance(Dr. Chuck)創建的。他是密歇根信息大學的實踐教授,他教授各種技術課程,包括編程、數據庫設計和 web 開發。" ] }, "scientific-computing-with-python-projects": { - "title": "Python 与科学计算项目", + "title": "Python 與科學計算項目", "intro": [ - "是时候测试一下你的 Python 技术了。通过完成这些项目,你可以证明和展示自己已经掌握了 Python 基础知识,并能获得认证。" + "是時候測試一下你的 Python 技術了。通過完成這些項目,你可以證明和展示自己已經掌握了 Python 基礎知識,並能獲得認證。" ] } } }, "data-analysis-with-python": { - "title": "Python 和数据分析", + "title": "Python 和數據分析", "intro": [ - "数据分析已经存在很长时间了。但是直到几年前,开发人员还是使用昂贵的闭源工具(如 Tableau)来做数据分析。如今,Python、SQL 和其他开放的库永远改变了数据分析领域。", - "在这个认证中,你会学习使用 Python 做数据分析的基础知识。然后,你会学习怎么从 CSV、SQL 等数据源读取数据,并且怎么使用 Numpy、Pandas、Matplotlib 和 Seaborn 等库来处理和可视化数据。" + "數據分析已經存在很長時間了。但是直到幾年前,開發人員還是使用昂貴的閉源工具(如 Tableau)來做數據分析。如今,Python、SQL 和其他開放的庫永遠改變了數據分析領域。", + "在這個認證中,你會學習使用 Python 做數據分析的基礎知識。然後,你會學習怎麼從 CSV、SQL 等數據源讀取數據,並且怎麼使用 Numpy、Pandas、Matplotlib 和 Seaborn 等庫來處理和可視化數據。" ], "blocks": { "data-analysis-with-python-course": { - "title": "Python 和数据分析", + "title": "Python 和數據分析", "intro": [ - "在 Santiago Basulto 创建的这些综合视频课程中,你会学习整个数据分析的过程。你会从 CSV、SQL、Excel 读取数据,用 Numpy和 Pandas 来处理这些数据,以及使用 Matplotlib 和 Seaborn 来可视化数据。", - "此外,你还可以通过完整的 Jupyter Notebook 课程和 Python 资料来刷新自己的编程技能。" + "在 Santiago Basulto 創建的這些綜合視頻課程中,你會學習整個數據分析的過程。你會從 CSV、SQL、Excel 讀取數據,用 Numpy和 Pandas 來處理這些數據,以及使用 Matplotlib 和 Seaborn 來可視化數據。", + "此外,你還可以通過完整的 Jupyter Notebook 課程和 Python 資料來刷新自己的編程技能。" ] }, "numpy": { "title": "Numpy", "intro": [ - "通过下方 Keith Galli 创建的视频课程学习 NumPy 库基础知识。", - "在这个课程中,你将学习如何使用 NumPy 以及它与 Python 内置列表的区别。你还将学习如何使用 NumPy 编程,以及索引、调整形状、应用统计信息等等知识。" + "通過下方 Keith Galli 創建的視頻課程學習 NumPy 庫基礎知識。", + "在這個課程中,你將學習如何使用 NumPy 以及它與 Python 內置列表的區別。你還將學習如何使用 NumPy 編程,以及索引、調整形狀、應用統計信息等等知識。" ] }, "data-analysis-with-python-projects": { - "title": "Python 与数据分析", + "title": "Python 與數據分析", "intro": [ - "使用 Python 分析数据的方法很多。通过完成这些项目,你可以证明自己掌握了使用 Python 进行数据分析的基础知识。", - "完成所有项目,即可获得 Python 与数据分析认证。" + "使用 Python 分析數據的方法很多。通過完成這些項目,你可以證明自己掌握了使用 Python 進行數據分析的基礎知識。", + "完成所有項目,即可獲得 Python 與數據分析認證。" ] } } @@ -421,113 +421,113 @@ "information-security": { "title": "信息安全", "intro": [ - "通过我们在线上的一切行为,我们的电子邮件地址、密码、电话号码等等大量敏感信息处于风险之中。", - "通过信息安全认证,你将使用 HelmetJS 构建安全的 Web 应用程序,以学习信息安全的基础知识。", - "你还将使用 Python 构建一个 TCP 客户端以及一个 Nmap 和端口扫描程序,从而学习渗透测试的基础知识。渗透测试是良好信息安全的重要组成部分。" + "通過我們在線上的一切行爲,我們的電子郵件地址、密碼、電話號碼等等大量敏感信息處於風險之中。", + "通過信息安全認證,你將使用 HelmetJS 構建安全的 Web 應用程序,以學習信息安全的基礎知識。", + "你還將使用 Python 構建一個 TCP 客戶端以及一個 Nmap 和端口掃描程序,從而學習滲透測試的基礎知識。滲透測試是良好信息安全的重要組成部分。" ], "blocks": { "information-security-with-helmetjs": { - "title": "HelmetJS 与信息安全", + "title": "HelmetJS 與信息安全", "intro": [ - "这个课程的重点是 HelmetJS。HelmetJS 是一种用于基于 Express 的应用程序的中间件,可以自动设置 HTTP 标头。这样,它可以防止敏感信息被无意间在服务器和客户端之间传递。", - "以下课程将帮助你了解如何保护你的网站免遭恶意攻击。" + "這個課程的重點是 HelmetJS。HelmetJS 是一種用於基於 Express 的應用程序的中間件,可以自動設置 HTTP 標頭。這樣,它可以防止敏感信息被無意間在服務器和客戶端之間傳遞。", + "以下課程將幫助你瞭解如何保護你的網站免遭惡意攻擊。" ] }, "python-for-penetration-testing": { - "title": "Python 与渗透测试", + "title": "Python 與滲透測試", "intro": [ - "这些视频课程教你使用 Python 进行渗透测试。渗透测试(penetration testing)也叫作 “pen test”,它是对系统的模拟攻击,以检查漏洞。", - "在这个课程中,你将学习套接字、创建 TCP 服务器和客户端、构建 Nmap 扫描仪以及渗透测试人员日常使用的其他工具和技术。" + "這些視頻課程教你使用 Python 進行滲透測試。滲透測試(penetration testing)也叫作 “pen test”,它是對系統的模擬攻擊,以檢查漏洞。", + "在這個課程中,你將學習套接字、創建 TCP 服務器和客戶端、構建 Nmap 掃描儀以及滲透測試人員日常使用的其他工具和技術。" ] }, "information-security-projects": { - "title": "信息安全项目", + "title": "信息安全項目", "intro": [ - "现在是时候运用你的信息安全技能了。通过这些项目,你可以运用所学的信息安全技能、原理和概念。", - "完成后,您将拥有大量的信息安全项目,并获得认证,你可以向朋友、家人和雇主炫耀的证书。" + "現在是時候運用你的信息安全技能了。通過這些項目,你可以運用所學的信息安全技能、原理和概念。", + "完成後,您將擁有大量的信息安全項目,並獲得認證,你可以向朋友、家人和僱主炫耀的證書。" ] } } }, "machine-learning-with-python": { - "title": "Python 与机器学习", + "title": "Python 與機器學習", "intro": [ - "机器学习有许多实际应用程序,你可以在项目中或工作中使用它们。", - "在这个认证中,你将使用 TensorFlow 框架构建多个神经网络,同时,你将探索更先进的技术,例如自然语言处理和强化学习。", - "你还将学习神经网络,并了解深度、递归和卷积神经网络背后的原理。" + "機器學習有許多實際應用程序,你可以在項目中或工作中使用它們。", + "在這個認證中,你將使用 TensorFlow 框架構建多個神經網絡,同時,你將探索更先進的技術,例如自然語言處理和強化學習。", + "你還將學習神經網絡,並瞭解深度、遞歸和卷積神經網絡背後的原理。" ], "blocks": { "tensorflow": { "title": "Tensorflow", "intro": [ - "TensorFlow 是一个开源框架,使机器学习和神经网络更易于使用。", - "以下视频课程是由 Tim Ruscica 创建的,也叫作 “Tech With Tim”。这个课程将帮助你了解 TensorFlow 及它的一些强大功能。" + "TensorFlow 是一個開源框架,使機器學習和神經網絡更易於使用。", + "以下視頻課程是由 Tim Ruscica 創建的,也叫作 “Tech With Tim”。這個課程將幫助你瞭解 TensorFlow 及它的一些強大功能。" ] }, "how-neural-networks-work": { - "title": "神经网络如何工作", + "title": "神經網絡如何工作", "intro": [ - "神经网络是如今我们所谓的人工智能的核心。但是从历史上看,它们一直很难理解,特别是对于机器学习领域的初学者来说。", - "即使你刚开始学习神经网络,Brandon Rohrer 的这些视频课程也可以帮助你熟悉它的概念和它背后的数学知识。" + "神經網絡是如今我們所謂的人工智能的核心。但是從歷史上看,它們一直很難理解,特別是對於機器學習領域的初學者來說。", + "即使你剛開始學習神經網絡,Brandon Rohrer 的這些視頻課程也可以幫助你熟悉它的概念和它背後的數學知識。" ] }, "machine-learning-with-python-projects": { - "title": "Python 与机器学习项目", + "title": "Python 與機器學習項目", "intro": [ - "机器学习有许多实际应用。通过完成这些免费且具有挑战性的编程项目,你可以证明自己掌握了机器学习基础知识,并获得认证。" + "機器學習有許多實際應用。通過完成這些免費且具有挑戰性的編程項目,你可以證明自己掌握了機器學習基礎知識,並獲得認證。" ] } } }, "coding-interview-prep": { - "title": "面试攻略", + "title": "面試攻略", "intro": [ - "如果你正在寻找免费的编程训练来帮你为下一个工作面试做准备,我们已经帮你准备好了。", - "这一部分包含了大量编程挑战,可以测试你的算法、数据结构和数学知识。这里还有一些你可以在家慢慢做的项目,用于提升你的技术,或者丰富你的作品集。" + "如果你正在尋找免費的編程訓練來幫你爲下一個工作面試做準備,我們已經幫你準備好了。", + "這一部分包含了大量編程挑戰,可以測試你的算法、數據結構和數學知識。這裏還有一些你可以在家慢慢做的項目,用於提升你的技術,或者豐富你的作品集。" ], "blocks": { "algorithms": { "title": "算法", "intro": [ - "这些免费的编程练习将教你一些现实生活中可能会遇到的常见算法。它们是提高你的逻辑和编程技能的绝佳机会。", - "这些算法经常在工作面试中被用来测试候选人的技能。我们将为你提供简洁明了的解释,说明不同算法是如何运行的,以便你为每道算法题目编写解决方案。" + "這些免費的編程練習將教你一些現實生活中可能會遇到的常見算法。它們是提高你的邏輯和編程技能的絕佳機會。", + "這些算法經常在工作面試中被用來測試候選人的技能。我們將爲你提供簡潔明瞭的解釋,說明不同算法是如何運行的,以便你爲每道算法題目編寫解決方案。" ] }, "data-structures": { - "title": "数据结构", + "title": "數據結構", "intro": [ - "这些免费的编程课程旨在帮助你处理可能你还不太熟悉的大型的、复杂的数据结构。", - "通过下面的课程,你将学习不同类型的数据结构,并通过算法来增强你对它们的理解。" + "這些免費的編程課程旨在幫助你處理可能你還不太熟悉的大型的、複雜的數據結構。", + "通過下面的課程,你將學習不同類型的數據結構,並通過算法來增強你對它們的理解。" ] }, "take-home-projects": { - "title": "私人项目", + "title": "私人項目", "intro": [ - "人们在编程面试的时候通常都是很紧张的。有时求职者会拿到一个带回家的项目,在面试之外完成它。这种类型的面试通常需要求职者做大量工作,但对于雇主来说,这是查看你在工作中表现如何的好方法。", - "通过下方的额外的编程项目,进行更多练习。慢慢来,做得好一点,然后将它们放在你的简历或作品集中,以向潜在的雇主展示。" + "人們在編程面試的時候通常都是很緊張的。有時求職者會拿到一個帶回家的項目,在面試之外完成它。這種類型的面試通常需要求職者做大量工作,但對於僱主來說,這是查看你在工作中表現如何的好方法。", + "通過下方的額外的編程項目,進行更多練習。慢慢來,做得好一點,然後將它們放在你的簡歷或作品集中,以向潛在的僱主展示。" ] }, "rosetta-code": { - "title": "罗塞塔代码", + "title": "羅塞塔代碼", "intro": [ - "通过完成经典的罗塞塔代码库中的这些免费编程任务来提升你的创造性问题解决能力。", - "这些挑战可能很困难,但是它们会将进一步提升你的算法逻辑。" + "通過完成經典的羅塞塔代碼庫中的這些免費編程任務來提升你的創造性問題解決能力。", + "這些挑戰可能很困難,但是它們會將進一步提升你的算法邏輯。" ] }, "project-euler": { - "title": "欧拉计划", + "title": "歐拉計劃", "intro": [ - "完成下方来自欧拉计划的编程挑战,这将强化你的算法和数学知识。", - "这些问题的难度很大,对于许多人来说,这是一个归纳性学习的过程。也就是说,通过解决一个问题,你将接触到一个新概念,然后你可以解决自己以前无法解决的问题。你能完成全部挑战吗?" + "完成下方來自歐拉計劃的編程挑戰,這將強化你的算法和數學知識。", + "這些問題的難度很大,對於許多人來說,這是一個歸納性學習的過程。也就是說,通過解決一個問題,你將接觸到一個新概念,然後你可以解決自己以前無法解決的問題。你能完成全部挑戰嗎?" ] } } }, "misc-text": { - "certification": "{{cert}} 认证", - "browse-other": "浏览我们的其他免费认证\n(我们建议你按顺序学习)", - "courses": "课程", - "expand": "展开", - "collapse": "折叠" + "certification": "{{cert}} 認證", + "browse-other": "瀏覽我們的其他免費認證\n(我們建議你按順序學習)", + "courses": "課程", + "expand": "展開", + "collapse": "摺疊" } } diff --git a/client/i18n/locales/chinese-traditional/meta-tags.json b/client/i18n/locales/chinese-traditional/meta-tags.json index 896149b2a7..0fbabe60f0 100644 --- a/client/i18n/locales/chinese-traditional/meta-tags.json +++ b/client/i18n/locales/chinese-traditional/meta-tags.json @@ -1,13 +1,13 @@ { - "title": "免费学习编程 - Python、JavaScript、Java、Git 等", - "description": "freeCodeCamp 是一个免费学习编程的开发者社区,涵盖 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等,还有活跃的技术论坛和丰富的社区活动,在你学习编程和找工作时为你提供建议和帮助。", - "social-description": "免费学习编程", + "title": "免費學習編程 - Python、JavaScript、Java、Git 等", + "description": "freeCodeCamp 是一個免費學習編程的開發者社區,涵蓋 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等,還有活躍的技術論壇和豐富的社區活動,在你學習編程和找工作時爲你提供建議和幫助。", + "social-description": "免費學習編程", "keywords": [ "freecodecamp", - "编程", + "編程", "前端", - "后端", - "程序员", + "後端", + "程序員", "python", "javascript", "git", @@ -18,10 +18,10 @@ "bootstrap", "react", "vue", - "网站", + "網站", "web", - "开发", - "课程" + "開發", + "課程" ], - "youre-unsubscribed": "你已取消订阅" + "youre-unsubscribed": "你已取消訂閱" } diff --git a/client/i18n/locales/chinese-traditional/translations.json b/client/i18n/locales/chinese-traditional/translations.json index 324ead7ddb..76884d4033 100644 --- a/client/i18n/locales/chinese-traditional/translations.json +++ b/client/i18n/locales/chinese-traditional/translations.json @@ -1,555 +1,557 @@ { "buttons": { - "logged-in-cta-btn": "开始学习(免费)", - "logged-out-cta-btn": "登录以保存你的学习进度(免费)", - "view-curriculum": "查看课程", - "first-lesson": "访问第一个课程", - "close": "关闭", - "edit": "编辑", - "show-code": "显示代码", - "show-solution": "显示解决方案", + "logged-in-cta-btn": "開始學習(免費)", + "logged-out-cta-btn": "登錄以保存你的學習進度(免費)", + "view-curriculum": "查看課程", + "first-lesson": "訪問第一個課程", + "close": "關閉", + "edit": "編輯", + "show-code": "顯示代碼", + "show-solution": "顯示解決方案", "frontend": "前端", - "backend": "后端", + "backend": "後端", "view": "查看", - "show-cert": "显示认证", - "claim-cert": "申请认证", - "save-progress": "保存进度", - "accepted-honesty": "你已接受我们的《学术诚信条例》", + "show-cert": "顯示認證", + "claim-cert": "申請認證", + "save-progress": "保存進度", + "accepted-honesty": "你已接受我們的《學術誠信條例》", "agree": "同意", - "save-portfolio": "保存这个作品集项目", - "remove-portfolio": "移除这个作品集项目", - "add-portfolio": "增加一个新的作品集项目", - "download-data": "下载你的数据", - "public": "公开", - "private": "仅自己可见", - "off": "关闭", - "on": "打开", - "sign-in": "登录", + "save-portfolio": "保存這個作品集項目", + "remove-portfolio": "移除這個作品集項目", + "add-portfolio": "增加一個新的作品集項目", + "download-data": "下載你的數據", + "public": "公開", + "private": "僅自己可見", + "off": "關閉", + "on": "打開", + "sign-in": "登錄", "sign-out": "退出", - "curriculum": "课程", - "forum": "论坛", - "radio": "电台", - "profile": "个人资料", - "news": "专栏", + "curriculum": "課程", + "forum": "論壇", + "radio": "電臺", + "profile": "個人資料", + "news": "專欄", "donate": "捐款", - "update-settings": "更新我的账号设置", - "sign-me-out": "退出登录 freeCodeCamp", - "flag-user": "标记该用户的账号为滥用", - "current-challenge": "访问目前的挑战", - "try-again": "重试", - "menu": "菜单", - "settings": "设置", - "take-me": "访问课程", + "update-settings": "更新我的賬號設置", + "sign-me-out": "退出登錄 freeCodeCamp", + "flag-user": "標記該用戶的賬號爲濫用", + "current-challenge": "訪問目前的挑戰", + "try-again": "重試", + "menu": "菜單", + "settings": "設置", + "take-me": "訪問課程", "check-answer": "查看你的答案", - "get-hint": "获得提示", - "ask-for-help": "请求帮助", - "create-post": "在论坛发帖请求帮助", + "get-hint": "獲得提示", + "ask-for-help": "請求幫助", + "create-post": "在論壇發帖請求幫助", "cancel": "取消", - "reset-lesson": "重置课程", - "run": "运行", - "run-test": "运行测试", + "reset-lesson": "重置課程", + "run": "運行", + "run-test": "運行測試", "reset": "重置", - "reset-code": "重置所有代码", - "help": "帮助", - "get-help": "获得帮助", - "watch-video": "观看视频", - "resubscribe": "你可以点击此处重新订阅", - "click-here": "点击此处登陆", + "reset-code": "重置所有代碼", + "help": "幫助", + "get-help": "獲得幫助", + "watch-video": "觀看視頻", + "resubscribe": "你可以點擊此處重新訂閱", + "click-here": "點擊此處登陸", "save": "保存", - "no-thanks": "不用,谢谢", + "no-thanks": "不用,謝謝", "yes-please": "好的", - "update-email": "更新我的邮箱", - "verify-email": "确认邮箱", - "submit-and-go": "提交并访问下一个挑战", - "go-to-next": "访问下一个挑战", - "ask-later": "稍后问我" + "update-email": "更新我的郵箱", + "verify-email": "確認郵箱", + "submit-and-go": "提交併訪問下一個挑戰", + "go-to-next": "訪問下一個挑戰", + "ask-later": "稍後問我" }, "landing": { - "big-heading-1": "免费学习编程", - "big-heading-2": "构建项目", - "big-heading-3": "获得认证", - "h2-heading": "自 2014 年以来,已有超过 40,000 名 freeCodeCamp.org 学员入职科技公司,例如:", - "hero-img-description": "韩国的 freeCodeCamp 学员在当地一个学习小组的交流活动上", - "as-seen-in": "媒体报道:", + "big-heading-1": "免費學習編程", + "big-heading-2": "構建項目", + "big-heading-3": "獲得認證", + "h2-heading": "自 2014 年以來,已有超過 40,000 名 freeCodeCamp.org 學員入職科技公司,例如:", + "hero-img-description": "韓國的 freeCodeCamp 學員在當地一個學習小組的交流活動上", + "as-seen-in": "媒體報道:", "testimonials": { "heading": "freeCodeCamp 校友感言:", "shawn": { "location": "Shawn Wang 新加坡", - "occupation": "亚马逊软件工程师", - "testimony": "\"转行挺困难的。我在学习了 freeCodeCamp 的数百个小时的免费课程之后,才对自己转行成为开发者有了信心。在一年内,我成为了一名年薪 6 位数的软件工程师。freeCodeCamp 改变了我的生活。\"" + "occupation": "亞馬遜軟件工程師", + "testimony": "\"轉行挺困難的。我在學習了 freeCodeCamp 的數百個小時的免費課程之後,纔對自己轉行成爲開發者有了信心。在一年內,我成爲了一名年薪 6 位數的軟件工程師。freeCodeCamp 改變了我的生活。\"" }, "sarah": { - "location": "Sarah Chima 尼日利亚", - "occupation": "ChatDesk 软件工程师", - "testimony": "\"通过在 freeCodeCamp 学习,我转行成为一名软件工程师。它的精心设计的课程帮助我从一个完全的新手成长为非常自信的开发者。正是因为 freeCodeCamp 的学习资源和社区的帮助,我在一家很棒的公司获得了第一份开发工作。\"" + "location": "Sarah Chima 尼日利亞", + "occupation": "ChatDesk 軟件工程師", + "testimony": "\"通過在 freeCodeCamp 學習,我轉行成爲一名軟件工程師。它的精心設計的課程幫助我從一個完全的新手成長爲非常自信的開發者。正是因爲 freeCodeCamp 的學習資源和社區的幫助,我在一家很棒的公司獲得了第一份開發工作。\"" }, "emma": { "location": "Emma Bostian 瑞典", - "occupation": "Spotify 软件工程师", - "testimony": "\"我一直努力学习 JavaScript,尝试了许多课程,最后是 freeCodeCamp 的课程吸引了我。在 freeCodeCamp 学习 JavaScript、数据结构和算法,我不仅掌握了技能,还变得更自信,所以才能获得理想中的工作,成为 Spotify 的一名软件工程师。\"" + "occupation": "Spotify 軟件工程師", + "testimony": "\"我一直努力學習 JavaScript,嘗試了許多課程,最後是 freeCodeCamp 的課程吸引了我。在 freeCodeCamp 學習 JavaScript、數據結構和算法,我不僅掌握了技能,還變得更自信,所以才能獲得理想中的工作,成爲 Spotify 的一名軟件工程師。\"" } }, - "certification-heading": "获得以下免费认证:" + "certification-heading": "獲得以下免費認證:" }, "settings": { - "share-projects": "分享你在 freeCodeCamp 之外做的项目,写的文章或者在 GitHub 上被接受的 pull requests。", - "privacy": "你可以通过在本节设置来管理你展示在 freeCodeCamp 公开作品集中的内容。", - "data": "请点击下面的 \"下载你的数据\" 按钮,查看我们在你的账号上保存的数据", - "disabled": "如果设置为仅自己可见,其他人将无法访问你的认证。", - "claim-legacy": "当你获得下列 freeCodeCamp 认证之后,你可以申请 {{cert}}:", - "for": "{{username}} 账号设置", + "share-projects": "分享你在 freeCodeCamp 之外做的項目,寫的文章或者在 GitHub 上被接受的 pull requests。", + "privacy": "你可以通過在本節設置來管理你展示在 freeCodeCamp 公開作品集中的內容。", + "data": "請點擊下面的 \"下載你的數據\" 按鈕,查看我們在你的賬號上保存的數據", + "disabled": "如果設置爲僅自己可見,其他人將無法訪問你的認證。", + "claim-legacy": "當你獲得下列 freeCodeCamp 認證之後,你可以申請 {{cert}}:", + "for": "{{username}} 賬號設置", "username": { - "contains invalid characters": "用户名 \"{{username}}\" 含有无效字符", - "is too short": "用户名 \"{{username}}\" 太短", - "is a reserved error code": "\"{{username}}\" 是错误代码,不可用作用户名", - "unavailable": "用户名不可用", - "validating": "验证用户名......", - "available": "用户名可用", - "change": "请注意,更改用户名也会同时更改你的个人资料和认证的 URL。" + "contains invalid characters": "用戶名 \"{{username}}\" 含有無效字符", + "is too short": "用戶名 \"{{username}}\" 太短", + "is a reserved error code": "\"{{username}}\" 是錯誤代碼,不可用作用戶名", + "unavailable": "用戶名不可用", + "validating": "驗證用戶名......", + "available": "用戶名可用", + "change": "請注意,更改用戶名也會同時更改你的個人資料和認證的 URL。" }, "labels": { - "username": "用户名", + "username": "用戶名", "name": "名字", - "location": "地点", + "location": "地點", "picture": "照片", - "about": "关于", - "personal": "个人网站", - "title": "标题", + "about": "關於", + "personal": "個人網站", + "title": "標題", "url": "URL", - "image": "图片", + "image": "圖片", "description": "描述", - "project-name": "项目名称", - "solution": "解决方案", - "solution-for": "{{projectTitle}} 的解决方案", - "my-profile": "我的个人资料", + "project-name": "項目名稱", + "solution": "解決方案", + "solution-for": "{{projectTitle}} 的解決方案", + "my-profile": "我的個人資料", "my-name": "我的姓名", "my-location": "我的位置", - "my-about": "我的介绍", - "my-points": "我的分数", - "my-heatmap": "我的热图", - "my-certs": "我的认证", + "my-about": "我的介紹", + "my-points": "我的分數", + "my-heatmap": "我的熱圖", + "my-certs": "我的認證", "my-portfolio": "我的作品集", - "my-timeline": "我的时间线", + "my-timeline": "我的時間線", "my-donations": "我的捐款", - "night-mode": "夜间模式" + "night-mode": "夜間模式" }, "headings": { - "certs": "认证", - "legacy-certs": "旧版证书", - "honesty": "学术诚信条例", - "internet": "你在各平台的账号", - "portfolio": "作品集设置", - "privacy": "隐私设置" + "certs": "認證", + "legacy-certs": "舊版證書", + "honesty": "學術誠信條例", + "internet": "你在各平臺的賬號", + "portfolio": "作品集設置", + "privacy": "隱私設置" }, "danger": { - "heading": "危险区域", - "be-careful": "请注意,本节中的修改是永久性的。", - "reset": "重置我的所有进度", - "delete": "删除我的账号", - "delete-title": "删除我的账号", - "delete-p1": "这将删除你的所有数据,包括所有进度和账号信息。", - "delete-p2": "即使你之后改变主意,我们也无法为你恢复任何信息。", - "delete-p3": "如果有哪些方面我们可以做得更好,请发送邮件至 <0>{{email}},我们将尽力改善。", - "nevermind": "我不想删除我的账号", - "certain": "我完全确定要删除与此账号相关的所有信息", - "reset-heading": "重置我的进度", - "reset-p1": "这将删除你的所有进度、分数、已完成的挑战、我们对你的项目的记录,以及你获得的所有认证等所有内容。", - "reset-p2": "即使你之后改变主意,我们也无法为你恢复任何信息。", - "nevermind-2": "我不想删除我的所有进度", - "reset-confirm": "重置所有内容,我想重新开始。" + "heading": "危險區域", + "be-careful": "請注意,本節中的修改是永久性的。", + "reset": "重置我的所有進度", + "delete": "刪除我的賬號", + "delete-title": "刪除我的賬號", + "delete-p1": "這將刪除你的所有數據,包括所有進度和賬號信息。", + "delete-p2": "即使你之後改變主意,我們也無法爲你恢復任何信息。", + "delete-p3": "如果有哪些方面我們可以做得更好,請發送郵件至 <0>{{email}},我們將盡力改善。", + "nevermind": "我不想刪除我的賬號", + "certain": "我完全確定要刪除與此賬號相關的所有信息", + "reset-heading": "重置我的進度", + "reset-p1": "這將刪除你的所有進度、分數、已完成的挑戰、我們對你的項目的記錄,以及你獲得的所有認證等所有內容。", + "reset-p2": "即使你之後改變主意,我們也無法爲你恢復任何信息。", + "nevermind-2": "我不想刪除我的所有進度", + "reset-confirm": "重置所有內容,我想重新開始。" }, "email": { - "missing": "你的账号未绑定邮箱。", - "heading": "邮件设置", - "not-verified": "你的邮箱已验证。", - "check": "请查看你的邮件,或<0>在此处请求新的验证邮件。", - "current": "当前邮箱", - "new": "新邮箱", - "confirm": "确认新邮箱", - "weekly": "给我发 Quincy 的每周订阅邮件" + "missing": "你的賬號未綁定郵箱。", + "heading": "郵件設置", + "not-verified": "你的郵箱已驗證。", + "check": "請查看你的郵件,或<0>在此處請求新的驗證郵件。", + "current": "當前郵箱", + "new": "新郵箱", + "confirm": "確認新郵箱", + "weekly": "給我發 Quincy 的每週訂閱郵件" }, "honesty": { - "p1": "申请认证前,你必须先接受我们的《学术诚信条例》,即:", - "p2": "\"我理解剽窃意味着抄袭他人的作品,将其作为自己的作品来提交,且不明确注明原作者。\"", - "p3": "\"我理解剽窃是一种知识上的不诚实行为。如果有人被发现有这种行为,那么他们通常会被大学(或其他单位)解雇。\"", - "p4": "\"除了使用开源代码库(如 jQuery,Bootstrap)以及明确注明原作者的的代码片段之外,我的项目中的代码 100% 是由我自己编写的,或者是与另一位 freeCodeCamp 学员结对编程时编写的。\"", - "p5": "\"我保证我提交给 freeCodeCamp 的作品都不是剽窃他人的。我理解 freeCodeCamp 团队将审核我提交的项目,以确认这一点。\"", - "p6": "如果我们发现某学员的某部分课程项目有明显的剽窃现象,我们将不会发布该项目的认证,并注明 \"经过审核,该帐户已被标记为违反学术诚信条例。\"", - "p7": "作为一个基于成就发布认证的学术机构,我们非常重视学术诚信。如果你对此条例有任何疑问,或者怀疑有人违反了该条例,可以发送邮件至 <0>{{email}},我们将进行调查。" + "p1": "申請認證前,你必須先接受我們的《學術誠信條例》,即:", + "p2": "\"我理解剽竊意味着抄襲他人的作品,將其作爲自己的作品來提交,且不明確註明原作者。\"", + "p3": "\"我理解剽竊是一種知識上的不誠實行爲。如果有人被發現有這種行爲,那麼他們通常會被大學(或其他單位)解僱。\"", + "p4": "\"除了使用開源代碼庫(如 jQuery,Bootstrap)以及明確註明原作者的的代碼片段之外,我的項目中的代碼 100% 是由我自己編寫的,或者是與另一位 freeCodeCamp 學員結對編程時編寫的。\"", + "p5": "\"我保證我提交給 freeCodeCamp 的作品都不是剽竊他人的。我理解 freeCodeCamp 團隊將審覈我提交的項目,以確認這一點。\"", + "p6": "如果我們發現某學員的某部分課程項目有明顯的剽竊現象,我們將不會發布該項目的認證,並註明 \"經過審覈,該帳戶已被標記爲違反學術誠信條例。\"", + "p7": "作爲一個基於成就發佈認證的學術機構,我們非常重視學術誠信。如果你對此條例有任何疑問,或者懷疑有人違反了該條例,可以發送郵件至 <0>{{email}},我們將進行調查。" } }, "profile": { - "you-not-public": "你尚未把你的作品集设置为公开。", - "username-not-public": "{{username}} 未把作品集设置为公开", - "you-change-privacy": "你需要更改你的隐私设置,才能让他人看到你的作品集。这是你的作品集公开时候的预览。", - "username-change-privacy": "{{username}} 需要修改隐私设置,你才能看到其作品集。", + "you-not-public": "你尚未把你的作品集設置爲公開。", + "username-not-public": "{{username}} 未把作品集設置爲公開", + "you-change-privacy": "你需要更改你的隱私設置,才能讓他人看到你的作品集。這是你的作品集公開時候的預覽。", + "username-change-privacy": "{{username}} 需要修改隱私設置,你才能看到其作品集。", "supporter": "支持者", - "contributor": "突出贡献者", - "no-certs": "未获得关于当前课程的认证", - "fcc-certs": "freeCodeCamp 认证", - "longest-streak": "最长连续提交记录:", - "current-streak": "当前连续提交记录:", + "contributor": "突出貢獻者", + "no-certs": "未獲得關於當前課程的認證", + "fcc-certs": "freeCodeCamp 認證", + "longest-streak": "最長連續提交記錄:", + "current-streak": "當前連續提交記錄:", "portfolio": "作品集", - "timeline": "时间线", - "none-completed": "尚未完成任何挑战。", - "get-started": "从这里开始。", - "challenge": "挑战", + "timeline": "時間線", + "none-completed": "尚未完成任何挑戰。", + "get-started": "從這裏開始。", + "challenge": "挑戰", "completed": "已完成", - "add-linkedin": "将此认证添加到我的 LinkedIn 个人资料", - "add-twitter": "将此认证分享到 Twitter", - "tweet": "我获得了 {{certTitle}} 认证 @freeCodeCamp!在这里查看:{{certURL}}", - "avatar": "{{username}} 的头像", - "joined": "于 {{date}} 加入", - "total-points": "{{count}} 总分", - "total-points_plural": "{{count}} 总分", - "points": "{{date}} 获得 {{count}} 分", - "points_plural": "{{date}} 获得 {{count}} 分", - "screen-shot": "{{title}} 截图", - "page-number": "第 {{pageNumber}} 页,共 {{totalPages}} 页" + "add-linkedin": "將此認證添加到我的 LinkedIn 個人資料", + "add-twitter": "將此認證分享到 Twitter", + "tweet": "我獲得了 {{certTitle}} 認證 @freeCodeCamp!在這裏查看:{{certURL}}", + "avatar": "{{username}} 的頭像", + "joined": "於 {{date}} 加入", + "total-points": "{{count}} 總分", + "total-points_plural": "{{count}} 總分", + "points": "{{date}} 獲得 {{count}} 分", + "points_plural": "{{date}} 獲得 {{count}} 分", + "screen-shot": "{{title}} 截圖", + "page-number": "第 {{pageNumber}} 頁,共 {{totalPages}} 頁" }, "footer": { - "tax-exempt-status": "freeCodeCamp 是捐助者支持的 501(c)(3) 条款下具有免税资格的非营利性组织(税号:82-0779546)。", - "mission-statement": "我们的使命:帮助人们免费学习编程。我们通过创建成千上万的视频、文章和交互式编程课程——所有内容向公众免费开放——来实现这一目标。学员在世界各地自发成立数千个 freeCodeCamp 学习小组。", - "donation-initiatives": "所有给 freeCodeCamp 的捐款都将用于我们的教育项目,购买服务器和其他服务,以及聘用员工。", + "tax-exempt-status": "freeCodeCamp 是捐助者支持的 501(c)(3) 條款下具有免稅資格的非營利性組織(稅號:82-0779546)。", + "mission-statement": "我們的使命:幫助人們免費學習編程。我們通過創建成千上萬的視頻、文章和交互式編程課程——所有內容向公衆免費開放——來實現這一目標。學員在世界各地自發成立數千個 freeCodeCamp 學習小組。", + "donation-initiatives": "所有給 freeCodeCamp 的捐款都將用於我們的教育項目,購買服務器和其他服務,以及聘用員工。", "donate-text": "你可以", - "donate-link": "点击此处免税捐款", - "trending-guides": "精选文章", - "our-nonprofit": "关于我们", + "donate-link": "點擊此處免稅捐款", + "trending-guides": "精選文章", + "our-nonprofit": "關於我們", "links": { - "about": "简介", - "alumni": "校友网络", - "open-source": "开源", + "about": "簡介", + "alumni": "校友網絡", + "open-source": "開源", "shop": "商店", "support": "支持", - "sponsors": "赞助商", - "honesty": "学术诚信", - "coc": "行为规范", - "privacy": "隐私条例", - "tos": "服务条款", - "copyright": "版权条例" + "sponsors": "贊助商", + "honesty": "學術誠信", + "coc": "行爲規範", + "privacy": "隱私條例", + "tos": "服務條款", + "copyright": "版權條例" }, - "language": "语言:" + "language": "語言:" }, "learn": { - "heading": "欢迎学习 freeCodeCamp 的课程。", - "welcome-1": "欢迎回来,{{name}}。", - "welcome-2": "欢迎来到 freeCodeCamp.org", - "start-at-beginning": "如果你刚开始学习编程,我们建议你<0>从头开始。", + "heading": "歡迎學習 freeCodeCamp 的課程。", + "welcome-1": "歡迎回來,{{name}}。", + "welcome-2": "歡迎來到 freeCodeCamp.org", + "start-at-beginning": "如果你剛開始學習編程,我們建議你<0>從頭開始。", "read-this": { - "heading": "请仔细阅读这里的内容。", - "p1": "freeCodeCamp 是你获得第一份软件开发工作的有效途径。", - "p2": "超过 40,000 人在完成这些课程后获得了开发者工作——包括进入谷歌、微软、阿里巴巴、腾讯等大型公司。", - "p3": "如果你刚开始学习编程,我们建议你从头开始,按顺序获得认证。", - "p4": "要获得每个认证,需要完成 5 个必做项目,并通过所有测试。", - "p5": "你可以将这些认证添加到你的简历或 LinkedIn 个人资料。但是你在学习过程中所做的练习比获得认证更重要。", - "p6": "如果你感到沮丧,很正常,因为编程本来就很难。", - "p7": "练习是关键。练习,练习,再练习。", - "p8": "这套课程需要你进行数千个小时的编程练习。", - "p9": "如果你想学习更多数学和计算机科学理论,<0>freeCodeCamp 的 \n YouTube channel 还有数千个小时的视频课程。", - "p10": "如果你想获得开发者工作或者成为自由职业开发者找到客户,那么除了编程技能,你还需要搭建自己的社交网络,打造自己作为开发者的影响力。", - "p11": "你可以在 Twitter、GitHub 和 <0>freeCodeCamp 论坛搭建社交网络和打造影响力。", - "p12": "编程愉快!" + "heading": "請仔細閱讀這裏的內容。", + "p1": "freeCodeCamp 是你獲得第一份軟件開發工作的有效途徑。", + "p2": "超過 40,000 人在完成這些課程後獲得了開發者工作——包括進入谷歌、微軟、阿里巴巴、騰訊等大型公司。", + "p3": "如果你剛開始學習編程,我們建議你從頭開始,按順序獲得認證。", + "p4": "要獲得每個認證,需要完成 5 個必做項目,並通過所有測試。", + "p5": "你可以將這些認證添加到你的簡歷或 LinkedIn 個人資料。但是你在學習過程中所做的練習比獲得認證更重要。", + "p6": "如果你感到沮喪,很正常,因爲編程本來就很難。", + "p7": "練習是關鍵。練習,練習,再練習。", + "p8": "這套課程需要你進行數千個小時的編程練習。", + "p9": "如果你想學習更多數學和計算機科學理論,<0>freeCodeCamp 的 \n YouTube channel 還有數千個小時的視頻課程。", + "p10": "如果你想獲得開發者工作或者成爲自由職業開發者找到客戶,那麼除了編程技能,你還需要搭建自己的社交網絡,打造自己作爲開發者的影響力。", + "p11": "你可以在 Twitter、GitHub 和 <0>freeCodeCamp 論壇搭建社交網絡和打造影響力。", + "p12": "編程愉快!" }, - "upcoming-lessons": "即将上线的课程", - "learn": "学习", - "add-subtitles": "帮助我们完善或添加字幕", - "wrong-answer": "抱歉,这个答案不正确。再试一次?", - "check-answer": "点击下方按钮,查看你的答案。", - "solution-link": "解决方案链接", - "github-link": "GitHub 链接", - "submit-and-go": "提交并访问下一个挑战", - "i-completed": "我已经完成这个挑战", - "test-output": "你的测试输出将在这里显示", - "running-tests": "// 运行测试", - "tests-completed": "// 测试完成", - "console-output": "// 打印输出", - "sign-in-save": "登录以保存你的学习进度", - "download-solution": "下载我的解决方案", + "upcoming-lessons": "即將上線的課程", + "learn": "學習", + "add-subtitles": "幫助我們完善或添加字幕", + "wrong-answer": "抱歉,這個答案不正確。再試一次?", + "check-answer": "點擊下方按鈕,查看你的答案。", + "solution-link": "解決方案鏈接", + "github-link": "GitHub 鏈接", + "submit-and-go": "提交併訪問下一個挑戰", + "i-completed": "我已經完成這個挑戰", + "test-output": "你的測試輸出將在這裏顯示", + "running-tests": "// 運行測試", + "tests-completed": "// 測試完成", + "console-output": "// 打印輸出", + "sign-in-save": "登錄以保存你的學習進度", + "download-solution": "下載我的解決方案", "percent-complete": "完成 {{percent}}%", - "tried-rsa": "如果你已经尝试了 <0>Read-Search-Ask(阅读-搜索-提问)方法,那么你可以在 freeCodeCamp 论坛请求帮助。", - "rsa": "阅读,搜索,提问", - "reset": "重置这一节课程?", - "reset-warn": "你确定要重置这一节课程吗?编辑器和测试将被重置。", - "reset-warn-2": "这个操作不可撤销", - "scrimba-tip": "注意:如果这个小浏览器窗口覆盖了代码,点击拖动它。同时,你可以随时暂停,在视频中编辑代码。", - "chal-preview": "挑战预览", + "tried-rsa": "如果你已經嘗試了 <0>Read-Search-Ask(閱讀-搜索-提問)方法,那麼你可以在 freeCodeCamp 論壇請求幫助。", + "rsa": "閱讀,搜索,提問", + "reset": "重置這一節課程?", + "reset-warn": "你確定要重置這一節課程嗎?編輯器和測試將被重置。", + "reset-warn-2": "這個操作不可撤銷", + "scrimba-tip": "注意:如果這個小瀏覽器窗口覆蓋了代碼,點擊拖動它。同時,你可以隨時暫停,在視頻中編輯代碼。", + "chal-preview": "挑戰預覽", "cert-map-estimates": { - "certs": "{{title}} 认证 (300小时)", - "coding-prep": "{{title}}(数千小时的挑战)" + "certs": "{{title}} 認證 (300小時)", + "coding-prep": "{{title}}(數千小時的挑戰)" }, "editor-tabs": { "info": "信息", - "code": "编程", - "tests": "测试", - "preview": "预览" + "code": "編程", + "tests": "測試", + "preview": "預覽" }, - "help-translate": "我们仍然在翻译以下证书。", - "help-translate-link": "帮助我们翻译。" + "help-translate": "我們仍然在翻譯以下證書。", + "help-translate-link": "幫助我們翻譯。" }, "donate": { - "title": "支持我们的非营利组织", - "processing": "我们正在处理你的捐款。", - "thanks": "谢谢捐款", - "thank-you": "谢谢你成为我们的支持者。", - "thank-you-2": "谢谢你成为 freeCodeCamp 的支持者。现在你已设置定期捐款。", - "additional": "你可以使用这个链接 <0>{{url}} 额外进行一次性捐款:", - "help-more": "帮助我们做更多", - "error": "你的捐款处理有点问题。", - "free-tech": "你的捐款将支持世界各地的人们获得免费的技术教育。", - "gift-frequency": "选择捐赠的频率:", - "gift-amount": "选择捐赠的额度:", - "confirm": "确认你的捐款", - "confirm-2": "确认你的一次性捐款 ${{usd}}", - "confirm-3": "确认你的捐款 ${{usd}} / 月", - "confirm-4": "确认你的捐款 ${{usd}} / 年", - "your-donation": "你的 ${{usd}} 捐款将帮助世界各地的人们学习 {{hours}} 小时。", - "your-donation-2": "你的 ${{usd}} 捐款每月将帮助世界各地的人们学习 {{hours}} 小时。", - "your-donation-3": "你的 ${{usd}} 捐款每年将帮助世界各地的人们学习 {{hours}} 小时。", - "duration": "成为我们非营利组织的一次性支持者", - "duration-2": "成为我们非营利组织的每月定期支持者", - "duration-3": "成为我们非营利组织的每年定期支持者", - "duration-4": "成为我们非营利组织的支持者", + "title": "支持我們的非營利組織", + "processing": "我們正在處理你的捐款。", + "redirecting": "Redirecting...", + "thanks": "謝謝捐款", + "thank-you": "謝謝你成爲我們的支持者。", + "thank-you-2": "謝謝你成爲 freeCodeCamp 的支持者。現在你已設置定期捐款。", + "additional": "你可以使用這個鏈接 <0>{{url}} 額外進行一次性捐款:", + "help-more": "幫助我們做更多", + "error": "你的捐款處理有點問題。", + "free-tech": "你的捐款將支持世界各地的人們獲得免費的技術教育。", + "no-halo": "If you don't see a gold halo around your profile picture, contact donors@freecodecamp.org.", + "gift-frequency": "選擇捐贈的頻率:", + "gift-amount": "選擇捐贈的額度:", + "confirm": "確認你的捐款", + "confirm-2": "確認你的一次性捐款 ${{usd}}", + "confirm-3": "確認你的捐款 ${{usd}} / 月", + "confirm-4": "確認你的捐款 ${{usd}} / 年", + "your-donation": "你的 ${{usd}} 捐款將幫助世界各地的人們學習 {{hours}} 小時。", + "your-donation-2": "你的 ${{usd}} 捐款每月將幫助世界各地的人們學習 {{hours}} 小時。", + "your-donation-3": "你的 ${{usd}} 捐款每年將幫助世界各地的人們學習 {{hours}} 小時。", + "duration": "成爲我們非營利組織的一次性支持者", + "duration-2": "成爲我們非營利組織的每月定期支持者", + "duration-3": "成爲我們非營利組織的每年定期支持者", + "duration-4": "成爲我們非營利組織的支持者", "nicely-done": "很棒,你已完成 {{block}}。", "credit-card": "信用卡", "credit-card-2": "或者使用信用卡捐款:", "paypal": "使用 PayPal:", - "need-email": "请提供一个有效的邮件地址,我们将把捐款税务收据发送给你。", - "went-wrong": "你的捐款处理有点问题,尚未从你的卡片扣除金额。", - "valid-info": "请输入有效的邮件地址、信用卡号和信用卡到期日。", - "valid-email": "请输入有效的邮件地址。", - "valid-card": "请输入有效的信用卡号和信用卡到期日。", - "email-receipt": "邮箱(我们将把捐款税务收据发送给你):", - "need-help": "需要我们帮助处理你的当前或之前的捐款?", - "forward-receipt": "将你的捐款收据副本发送至 donors@freecodecamp.org,告诉我们你需要什么帮助。", - "efficiency": "freeCodeCamp 是一个高效率的专注教育的非营利组织。", - "why-donate-1": "通过给 freeCodeCamp 捐款,你帮助人们学习新技能以供养家庭。", - "why-donate-2": "你也帮助我们创建新的学习资源,你可以利用这些资源拓展自己的技术能力。", - "bigger-donation": "给我们额度更大的一次性捐款,或寄一张支票,或通过其他方式给我们捐款?", - "other-ways": "有许多<0>其他方式可以支持我们的非营利组织践行使命.", - "failed-pay": "呃,你的转账似乎没有成功,再试一次好吗?", - "try-again": "请重试。", - "card-number": "你的卡号:", + "need-email": "請提供一個有效的郵件地址,我們將把捐款稅務收據發送給你。", + "went-wrong": "你的捐款處理有點問題,尚未從你的卡片扣除金額。", + "valid-info": "請輸入有效的郵件地址、信用卡號和信用卡到期日。", + "valid-email": "請輸入有效的郵件地址。", + "valid-card": "請輸入有效的信用卡號和信用卡到期日。", + "email-receipt": "郵箱(我們將把捐款稅務收據發送給你):", + "need-help": "需要我們幫助處理你的當前或之前的捐款?", + "forward-receipt": "將你的捐款收據副本發送至 donors@freecodecamp.org,告訴我們你需要什麼幫助。", + "efficiency": "freeCodeCamp 是一個高效率的專注教育的非營利組織。", + "why-donate-1": "通過給 freeCodeCamp 捐款,你幫助人們學習新技能以供養家庭。", + "why-donate-2": "你也幫助我們創建新的學習資源,你可以利用這些資源拓展自己的技術能力。", + "bigger-donation": "給我們額度更大的一次性捐款,或寄一張支票,或通過其他方式給我們捐款?", + "other-ways": "有許多<0>其他方式可以支持我們的非營利組織踐行使命.", + "failed-pay": "呃,你的轉賬似乎沒有成功,再試一次好嗎?", + "try-again": "請重試。", + "card-number": "你的卡號:", "expiration": "到期日:", - "only-you": "只有你可以看到此消息。祝贺你获得这项认证。获得认证不是一件容易的事情,运营 freeCodeCamp 也不容易,而且需要花费很多。请帮助我们更好地帮助你和世界各地的许多其他人。今天就为我们的非营利组织提供免税捐款,支持我们。" + "only-you": "只有你可以看到此消息。祝賀你獲得這項認證。獲得認證不是一件容易的事情,運營 freeCodeCamp 也不容易,而且需要花費很多。請幫助我們更好地幫助你和世界各地的許多其他人。今天就爲我們的非營利組織提供免稅捐款,支持我們。" }, "report": { - "sign-in": "你需要先登录才能举报用户", - "details": "请尽可能详细地描述你所举报的账号或行为。", - "portfolio": "举报一个用户的作品集", - "portfolio-2": "你想举报 {{username}} 的作品集滥用行为吗?", - "notify-1": "我们将通知社区管理团队,并发送举报副本到你的邮箱:{{email}}", - "notify-2": "如有需要,我们会联系你了解更多信息。", - "what": "你想举报什么?", - "submit": "提交举报" + "sign-in": "你需要先登錄才能舉報用戶", + "details": "請儘可能詳細地描述你所舉報的賬號或行爲。", + "portfolio": "舉報一個用戶的作品集", + "portfolio-2": "你想舉報 {{username}} 的作品集濫用行爲嗎?", + "notify-1": "我們將通知社區管理團隊,併發送舉報副本到你的郵箱:{{email}}", + "notify-2": "如有需要,我們會聯繫你瞭解更多信息。", + "what": "你想舉報什麼?", + "submit": "提交舉報" }, "404": { - "page-not-found": "未找到页面", + "page-not-found": "未找到頁面", "not-found": "404 未找到:", - "heres-a-quote": "我们未找到你搜索的信息。这里分享一句名言:" + "heres-a-quote": "我們未找到你搜索的信息。這裏分享一句名言:" }, "search": { "label": "搜索", "placeholder": "搜索 300+ 篇教程", - "see-results": "查看 {{searchQuery}} 的所有结果", + "see-results": "查看 {{searchQuery}} 的所有結果", "no-tutorials": "未找到教程", - "try": "想要搜索信息?试试使用页面上的搜索框。", - "no-results": "我们未找到关于 <0>{{query}} 的任何信息" + "try": "想要搜索信息?試試使用頁面上的搜索框。", + "no-results": "我們未找到關於 <0>{{query}} 的任何信息" }, "misc": { - "offline": "你已离线,学习进度可能不会被保存", - "unsubscribed": "你已成功取消订阅", - "keep-coding": "无论你做什么,都要继续编程!", - "email-signup": "邮件注册", - "quincy": "- Quincy Larson,freeCodeCamp.org 创始人、老师", - "email-blast": "每周五我会给大约四百万人发送一封邮件,其中包含 5 条关于编程和计算机科学的链接。你也想收到我的邮件吗?", - "update-email-1": "更新你的邮件地址", - "update-email-2": "在这里更新你的邮件地址:", - "email": "邮箱", + "offline": "你已離線,學習進度可能不會被保存", + "unsubscribed": "你已成功取消訂閱", + "keep-coding": "無論你做什麼,都要繼續編程!", + "email-signup": "郵件註冊", + "quincy": "- Quincy Larson,freeCodeCamp.org 創始人、老師", + "email-blast": "每週五我會給大約四百萬人發送一封郵件,其中包含 5 條關於編程和計算機科學的鏈接。你也想收到我的郵件嗎?", + "update-email-1": "更新你的郵件地址", + "update-email-2": "在這裏更新你的郵件地址:", + "email": "郵箱", "and": "和", - "change-theme": "登录以更改主题。", - "translation-pending": "帮我们翻译" + "change-theme": "登錄以更改主題。", + "translation-pending": "幫我們翻譯" }, "icons": { - "gold-cup": "金奖杯", - "avatar": "默认头像", - "avatar-2": "正在电脑前编程的头像", + "gold-cup": "金獎盃", + "avatar": "默認頭像", + "avatar-2": "正在電腦前編程的頭像", "donate": "使用 PayPal 捐款", - "fail": "测试失败", - "not-passed": "未通过", - "passed": "通过", - "heart": "爱心", + "fail": "測試失敗", + "not-passed": "未通過", + "passed": "通過", + "heart": "愛心", "initial": "初始", - "info": "介绍信息", - "spacer": "间隔", - "toggle": "切换选中标记", - "responsive-design": "笔记本和手机图标", - "javascript": "JavaScript 图标", - "react": "React 图标", - "d3": "D3 图标", - "api": "服务器", - "clipboard": "带有复选标记的剪贴板", - "python": "Python 图标", - "analytics": "条形图和折线图", - "shield": "带有复选标记的盾牌", - "tensorflow": "Tensorflow 图标", - "algorithm": "分支节点" + "info": "介紹信息", + "spacer": "間隔", + "toggle": "切換選中標記", + "responsive-design": "筆記本和手機圖標", + "javascript": "JavaScript 圖標", + "react": "React 圖標", + "d3": "D3 圖標", + "api": "服務器", + "clipboard": "帶有複選標記的剪貼板", + "python": "Python 圖標", + "analytics": "條形圖和折線圖", + "shield": "帶有複選標記的盾牌", + "tensorflow": "Tensorflow 圖標", + "algorithm": "分支節點" }, "aria": { - "fcc-logo": "freeCodeCamp 徽标", + "fcc-logo": "freeCodeCamp 徽標", "answer": "答案", - "linkedin": "链接到 {{username}} 的 LinkedIn", - "github": "链接到 {{username}} 的 GitHub", - "website": "链接到 {{username}} 的网站", - "twitter": "链接到 {{username}} 的 Twitter", - "first-page": "访问第一页", - "previous-page": "访问上一页", - "next-page": "访问下一页", - "last-page": "访问最后一页" + "linkedin": "鏈接到 {{username}} 的 LinkedIn", + "github": "鏈接到 {{username}} 的 GitHub", + "website": "鏈接到 {{username}} 的網站", + "twitter": "鏈接到 {{username}} 的 Twitter", + "first-page": "訪問第一頁", + "previous-page": "訪問上一頁", + "next-page": "訪問下一頁", + "last-page": "訪問最後一頁" }, "flash": { - "honest-first": "申请认证之前,你必须先接受我们的《学术诚信条例》", - "really-weird": "出现了一些奇怪的情况。如果再出现这种情况,请考虑在 https://github.com/freeCodeCamp/freeCodeCamp/issues/new 提交 issue。", - "not-right": "有些不对劲。已生成报告,通知 freeCodeCamp.org 团队。", - "went-wrong": "出了点问题,请检查并重试。", - "account-deleted": "你的账号已被成功删除", - "progress-reset": "你的进度已被重置", - "not-authorized": "你无权继续访问", - "could-not-find": "我们未找到你搜索的信息。请检查并重试。", - "wrong-updating": "更新你的账号出了点问题。请检查并重试。", - "updated-preferences": "我们已更新你的偏好设置。", - "email-invalid": "邮箱格式无效", - "bad-challengeId": "currentChallengeId 是无效的挑战 ID", - "theme-invalid": "主题无效", - "theme-set": "主题已设置", - "theme-updated": "你的主题已更新!", - "username-used": "用户名已和此账号关联", - "username-taken": "用户名已和别的账号关联", - "username-updated": "我们已更新你的用户名为 {{username}}", - "could-not-logout": "你的账号未退出,请稍后重试。", - "email-encoded-wrong": "链接中的邮箱格式不正确", - "oops-not-right": "有点不对劲。请刷新链接再登录/注册", - "expired-link": "你点击的链接似乎已过期,请刷新链接再登录", - "signin-success": "成功了!你已经登录账号。", - "social-auth-gone": "鉴于隐私原因,我们已取消社交账号授权。我们建议你下次使用你的邮箱地址登录:{{email}} 。", - "name-needed": "我们需要将你的名字放在认证上。在你的账号设置中添加名字,点击保存按钮,然后我们会给你发布认证。", - "incomplete-steps": "你似乎未完成必要的步骤。请完成必做项目以申请 {{name}} 认证。", - "already-claimed": "你似乎已申请 {{name}} 认证", - "cert-claim-success": "@{{username}},你已成功申请 {{name}} 认证!代表 freeCodeCamp.org 团队恭喜你!", - "wrong-name": "{{name}} 验证有点问题,请重试。如果你继续收到这个错误提示,你可以发邮件至 support@freeCodeCamp.org,获得帮助", - "error-claiming": "申请 {{certName}} 认证出错", - "username-not-found": "我们未找到用户名为 \"{{username}}\" 的用户", - "add-name": "这个用户需要在账号中添加名字,以便其他人查看该用户的认证。", - "not-eligible": "这个用户目前不符合 freeCodeCamp.org 认证的条件。", - "profile-private": "{{username}} 已将其作品集设置为仅自己可见。用户需要将作品集设置为公开,其他人才能查看该用户的认证。", - "certs-private": "{{username}} 已将其作品集设置为仅自己可见。用户需要将认证设置为公开,其他人才能查看该用户的认证。", - "not-honest": "{{username}} 未接受我们的《学术诚信条例》。", - "user-not-certified": "用户 {{username}} 似乎未获得 {{cert}} 认证", - "invalid-challenge": "这似乎不是一个有效的提交", - "no-links-provided": "你未提供有效链接,我们无法检查你的作品。", - "no-social": "未发现社交账号", - "invalid-social": "无效的社交账号", - "no-account": "未链接 {{website}} 账号", - "unlink-success": "你已成功取消 {{website}} 链接", - "provide-username": "检查你是否提供用户名和报告", - "report-sent": "已通过 {{email}} 向团队发送副本报告" + "honest-first": "申請認證之前,你必須先接受我們的《學術誠信條例》", + "really-weird": "出現了一些奇怪的情況。如果再出現這種情況,請考慮在 https://github.com/freeCodeCamp/freeCodeCamp/issues/new 提交 issue。", + "not-right": "有些不對勁。已生成報告,通知 freeCodeCamp.org 團隊。", + "went-wrong": "出了點問題,請檢查並重試。", + "account-deleted": "你的賬號已被成功刪除", + "progress-reset": "你的進度已被重置", + "not-authorized": "你無權繼續訪問", + "could-not-find": "我們未找到你搜索的信息。請檢查並重試。", + "wrong-updating": "更新你的賬號出了點問題。請檢查並重試。", + "updated-preferences": "我們已更新你的偏好設置。", + "email-invalid": "郵箱格式無效", + "bad-challengeId": "currentChallengeId 是無效的挑戰 ID", + "theme-invalid": "主題無效", + "theme-set": "主題已設置", + "theme-updated": "你的主題已更新!", + "username-used": "用戶名已和此賬號關聯", + "username-taken": "用戶名已和別的賬號關聯", + "username-updated": "我們已更新你的用戶名爲 {{username}}", + "could-not-logout": "你的賬號未退出,請稍後重試。", + "email-encoded-wrong": "鏈接中的郵箱格式不正確", + "oops-not-right": "有點不對勁。請刷新鏈接再登錄/註冊", + "expired-link": "你點擊的鏈接似乎已過期,請刷新鏈接再登錄", + "signin-success": "成功了!你已經登錄賬號。", + "social-auth-gone": "鑑於隱私原因,我們已取消社交賬號授權。我們建議你下次使用你的郵箱地址登錄:{{email}} 。", + "name-needed": "我們需要將你的名字放在認證上。在你的賬號設置中添加名字,點擊保存按鈕,然後我們會給你發佈認證。", + "incomplete-steps": "你似乎未完成必要的步驟。請完成必做項目以申請 {{name}} 認證。", + "already-claimed": "你似乎已申請 {{name}} 認證", + "cert-claim-success": "@{{username}},你已成功申請 {{name}} 認證!代表 freeCodeCamp.org 團隊恭喜你!", + "wrong-name": "{{name}} 驗證有點問題,請重試。如果你繼續收到這個錯誤提示,你可以發郵件至 support@freeCodeCamp.org,獲得幫助", + "error-claiming": "申請 {{certName}} 認證出錯", + "username-not-found": "我們未找到用戶名爲 \"{{username}}\" 的用戶", + "add-name": "這個用戶需要在賬號中添加名字,以便其他人查看該用戶的認證。", + "not-eligible": "這個用戶目前不符合 freeCodeCamp.org 認證的條件。", + "profile-private": "{{username}} 已將其作品集設置爲僅自己可見。用戶需要將作品集設置爲公開,其他人才能查看該用戶的認證。", + "certs-private": "{{username}} 已將其作品集設置爲僅自己可見。用戶需要將認證設置爲公開,其他人才能查看該用戶的認證。", + "not-honest": "{{username}} 未接受我們的《學術誠信條例》。", + "user-not-certified": "用戶 {{username}} 似乎未獲得 {{cert}} 認證", + "invalid-challenge": "這似乎不是一個有效的提交", + "no-links-provided": "你未提供有效鏈接,我們無法檢查你的作品。", + "no-social": "未發現社交賬號", + "invalid-social": "無效的社交賬號", + "no-account": "未鏈接 {{website}} 賬號", + "unlink-success": "你已成功取消 {{website}} 鏈接", + "provide-username": "檢查你是否提供用戶名和報告", + "report-sent": "已通過 {{email}} 向團隊發送副本報告" }, "validation": { - "max-characters": "字符数最多为 288 个,你还可以输入 {{charsLeft}} 个字符", - "same-email": "这个邮箱和你当前邮箱一样", - "invalid-email": "我们无法验证你的邮箱,请确保填写正确", - "email-mismatch": "两个新邮箱必须相同", - "title-required": "必须填写标题", - "title-short": "标题太长", - "title-long": "标题太短", - "invalid-url": "我们无法验证你的 URL,请确保填写正确", - "invalid-protocol": "URL 必须以 http 或 https 开头", - "url-not-image": "URL 必须直接链接到图片文件", - "use-valid-url": "请使用有效的 URL", - "editor-url": "记得要提交Live App的URL", + "max-characters": "字符數最多爲 288 個,你還可以輸入 {{charsLeft}} 個字符", + "same-email": "這個郵箱和你當前郵箱一樣", + "invalid-email": "我們無法驗證你的郵箱,請確保填寫正確", + "email-mismatch": "兩個新郵箱必須相同", + "title-required": "必須填寫標題", + "title-short": "標題太長", + "title-long": "標題太短", + "invalid-url": "我們無法驗證你的 URL,請確保填寫正確", + "invalid-protocol": "URL 必須以 http 或 https 開頭", + "url-not-image": "URL 必須直接鏈接到圖片文件", + "use-valid-url": "請使用有效的 URL", + "editor-url": "記得要提交Live App的URL", "http-url": "不能使用不安全的(http)URL。", - "own-work-url": "记住要提交你自己的作业", - "publicly-visible-url": "记得要提交一个公开可见的app URL" + "own-work-url": "記住要提交你自己的作業", + "publicly-visible-url": "記得要提交一個公開可見的app URL" }, "certification": { - "executive": "执行董事,freeCodeCamp.org", - "verify": "确认此认证 {{certURL}}", - "issued": "发布日期", - "fulltext": "<0>特证明 <1>{{user}} <2>已完成 freeCodeCamp.org <3>{{title}} <4>开发者认证课程,约 {{time}} 课时。", + "executive": "執行董事,freeCodeCamp.org", + "verify": "確認此認證 {{certURL}}", + "issued": "發佈日期", + "fulltext": "<0>特證明 <1>{{user}} <2>已完成 freeCodeCamp.org <3>{{title}} <4>開發者認證課程,約 {{time}} 課時。", "project": { - "heading-legacy-full-stack": "作为旧版全栈认证的一部分,{{user}} 完成了以下认证:", - "heading": "作为此认证的一部分,{{user}} 构建了以下项目,并通过所有自动测试:", - "solution": "解决方案", - "source": "来源", - "footnote": "如果你怀疑其中任何项目违反了<2>学术诚信条例,请<5>向我们的团队报告。", + "heading-legacy-full-stack": "作爲舊版全棧認證的一部分,{{user}} 完成了以下認證:", + "heading": "作爲此認證的一部分,{{user}} 構建了以下項目,並通過所有自動測試:", + "solution": "解決方案", + "source": "來源", + "footnote": "如果你懷疑其中任何項目違反了<2>學術誠信條例,請<5>向我們的團隊報告。", "title": { - "Build a Personal Portfolio Webpage": "创建一个个人作品集页面", - "Build a Random Quote Machine": "创建一个随机引语生成器", - "Build a 25 + 5 Clock": "创建一个番茄时钟", - "Build a JavaScript Calculator": "构建一个JavaScript计算器", - "Show the Local Weather": "显示本地天气", + "Build a Personal Portfolio Webpage": "創建一個個人作品集頁面", + "Build a Random Quote Machine": "創建一個隨機引語生成器", + "Build a 25 + 5 Clock": "創建一個番茄時鐘", + "Build a JavaScript Calculator": "構建一個JavaScript計算器", + "Show the Local Weather": "顯示本地天氣", "Use the TwitchTV JSON API": "使用 TwitchTV JSON API", - "Stylize Stories on Camper News": "风格化学员故事", - "Build a Wikipedia Viewer": "创建一个维基百科查看器", - "Build a Tic Tac Toe Game": "构建一个井字游戏", - "Build a Simon Game": "构建一个西蒙游戏", - "Timestamp Microservice": "时间戳微服务", - "Request Header Parser Microservice": "请求头解析器微服务", - "URL Shortener Microservice": "短网址微服务", - "Image Search Abstraction Layer": "图像搜索抽象层", - "File Metadata Microservice": "文件元数据微服务", - "Build a Voting App": "构建一个投票应用程序", - "Build a Nightlife Coordination App": "创建一个夜间协调应用", - "Chart the Stock Market": "股市图表", - "Manage a Book Trading Club": "管理图书交易俱乐部", - "Build a Pinterest Clone": "创建一个 Pinterest 克隆程序", - "Build a Markdown Previewer": "创建一个 Markdown 文件预览器", - "Build a Camper Leaderboard": "创建一个学员排行榜", - "Build a Recipe Box": "创建一个配方盒", - "Build the Game of Life": "创建生命游戏", - "Build a Roguelike Dungeon Crawler Game": "创建 Roguelike Dungeon Crawler 游戏", - "Visualize Data with a Bar Chart": "用条形图可视化数据", - "Visualize Data with a Scatterplot Graph": "用散点图可视化数据", - "Visualize Data with a Heat Map": "用热图可视化数据", - "Show National Contiguity with a Force Directed Graph": "用力导向图显示国家接壤", - "Map Data Across the Globe": "全球地图数据", - "Metric-Imperial Converter": "公制 - 英制转换器", - "Issue Tracker": "问题跟踪器", - "Personal Library": "个人图书馆", - "Stock Price Checker": "股票价格检查器", + "Stylize Stories on Camper News": "風格化學員故事", + "Build a Wikipedia Viewer": "創建一個維基百科查看器", + "Build a Tic Tac Toe Game": "構建一個井字遊戲", + "Build a Simon Game": "構建一個西蒙遊戲", + "Timestamp Microservice": "時間戳微服務", + "Request Header Parser Microservice": "請求頭解析器微服務", + "URL Shortener Microservice": "短網址微服務", + "Image Search Abstraction Layer": "圖像搜索抽象層", + "File Metadata Microservice": "文件元數據微服務", + "Build a Voting App": "構建一個投票應用程序", + "Build a Nightlife Coordination App": "創建一個夜間協調應用", + "Chart the Stock Market": "股市圖表", + "Manage a Book Trading Club": "管理圖書交易俱樂部", + "Build a Pinterest Clone": "創建一個 Pinterest 克隆程序", + "Build a Markdown Previewer": "創建一個 Markdown 文件預覽器", + "Build a Camper Leaderboard": "創建一個學員排行榜", + "Build a Recipe Box": "創建一個配方盒", + "Build the Game of Life": "創建生命遊戲", + "Build a Roguelike Dungeon Crawler Game": "創建 Roguelike Dungeon Crawler 遊戲", + "Visualize Data with a Bar Chart": "用條形圖可視化數據", + "Visualize Data with a Scatterplot Graph": "用散點圖可視化數據", + "Visualize Data with a Heat Map": "用熱圖可視化數據", + "Show National Contiguity with a Force Directed Graph": "用力導向圖顯示國家接壤", + "Map Data Across the Globe": "全球地圖數據", + "Metric-Imperial Converter": "公制 - 英制轉換器", + "Issue Tracker": "問題跟蹤器", + "Personal Library": "個人圖書館", + "Stock Price Checker": "股票價格檢查器", "Anonymous Message Board": "匿名留言板", - "Build a Tribute Page": "创建一个致敬页", - "Build a Survey Form": "创建一个调查表单", - "Build a Product Landing Page": "创建一个产品登录页", - "Build a Technical Documentation Page": "创建一个技术文档页面", - "Palindrome Checker": "回文检查器", - "Roman Numeral Converter": "罗马数字转换器", - "Caesars Cipher": "凯撒密码", - "Telephone Number Validator": "电话号码验证器", - "Cash Register": "现金登记", - "Build a Drum Machine": "创建一台鼓式机器", - "Visualize Data with a Choropleth Map": "用分级统计图可视化数据", - "Visualize Data with a Treemap Diagram": "用树形图可视化数据", - "Exercise Tracker": "运动跟踪器", - "Sudoku Solver": "数独求解器", - "American British Translator": "美式英语转换器", - "Arithmetic Formatter": "算数格式化程序", - "Time Calculator": "计时器", - "Budget App": "预算应用", - "Polygon Area Calculator": "多边形面积计算器", - "Probability Calculator": "概率计算器", - "Mean-Variance-Standard Deviation Calculator": "平均值-方差-标准差偏差计算器", - "Demographic Data Analyzer": "人口数据分析器", - "Medical Data Visualizer": "医疗数据可视化工具", - "Page View Time Series Visualizer": "页面视图显示器", - "Sea Level Predictor": "海平面预测器", - "Port Scanner": "端口扫描器", - "SHA-1 Password Cracker": "SHA-1 密码破解器", - "Secure Real Time Multiplayer Game": "安全实时多人游戏", - "Rock Paper Scissors": "剪刀石头布", - "Cat and Dog Image Classifier": "猫和狗图像分类器", - "Book Recommendation Engine using KNN": "基于 KNN 的图书推荐引擎", - "Linear Regression Health Costs Calculator": "线性回归健康成本计算器", - "Neural Network SMS Text Classifier": "神经网络短信分类器" + "Build a Tribute Page": "創建一個致敬頁", + "Build a Survey Form": "創建一個調查表單", + "Build a Product Landing Page": "創建一個產品登錄頁", + "Build a Technical Documentation Page": "創建一個技術文檔頁面", + "Palindrome Checker": "迴文檢查器", + "Roman Numeral Converter": "羅馬數字轉換器", + "Caesars Cipher": "凱撒密碼", + "Telephone Number Validator": "電話號碼驗證器", + "Cash Register": "現金登記", + "Build a Drum Machine": "創建一臺鼓式機器", + "Visualize Data with a Choropleth Map": "用分級統計圖可視化數據", + "Visualize Data with a Treemap Diagram": "用樹形圖可視化數據", + "Exercise Tracker": "運動跟蹤器", + "Sudoku Solver": "數獨求解器", + "American British Translator": "美式英語轉換器", + "Arithmetic Formatter": "算數格式化程序", + "Time Calculator": "計時器", + "Budget App": "預算應用", + "Polygon Area Calculator": "多邊形面積計算器", + "Probability Calculator": "概率計算器", + "Mean-Variance-Standard Deviation Calculator": "平均值-方差-標準差偏差計算器", + "Demographic Data Analyzer": "人口數據分析器", + "Medical Data Visualizer": "醫療數據可視化工具", + "Page View Time Series Visualizer": "頁面視圖顯示器", + "Sea Level Predictor": "海平面預測器", + "Port Scanner": "端口掃描器", + "SHA-1 Password Cracker": "SHA-1 密碼破解器", + "Secure Real Time Multiplayer Game": "安全實時多人遊戲", + "Rock Paper Scissors": "剪刀石頭布", + "Cat and Dog Image Classifier": "貓和狗圖像分類器", + "Book Recommendation Engine using KNN": "基於 KNN 的圖書推薦引擎", + "Linear Regression Health Costs Calculator": "線性迴歸健康成本計算器", + "Neural Network SMS Text Classifier": "神經網絡短信分類器" } } } diff --git a/client/i18n/locales/chinese-traditional/trending.json b/client/i18n/locales/chinese-traditional/trending.json index 8a99e8b859..0c3e8b4415 100644 --- a/client/i18n/locales/chinese-traditional/trending.json +++ b/client/i18n/locales/chinese-traditional/trending.json @@ -1,19 +1,19 @@ { "article0title": "Golang Benchmark", "article0link": "https://chinese.freecodecamp.org/news/golang-benchmark/", - "article1title": "树莓派", + "article1title": "樹莓派", "article1link": "https://chinese.freecodecamp.org/news/build-a-personal-dev-server-on-a-5-dollar-raspberry-pi/", - "article2title": "如何发布一个网站", + "article2title": "如何發佈一個網站", "article2link": "https://chinese.freecodecamp.org/news/publish-a-no-code-website-in-10-minutes/", - "article3title": "PWA 入门与实践", + "article3title": "PWA 入門與實踐", "article3link": "https://chinese.freecodecamp.org/news/a-brief-introduction-to-pwa/", - "article4title": "Git 删除分支", + "article4title": "Git 刪除分支", "article4link": "https://chinese.freecodecamp.org/news/how-to-delete-a-git-branch-both-locally-and-remotely/", "article5title": "NPM 教程", "article5link": "https://chinese.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/", - "article6title": "前端开发学习路线", + "article6title": "前端開發學習路線", "article6link": "https://chinese.freecodecamp.org/news/map-of-learning-front-end/", - "article7title": "谷歌小恐龙", + "article7title": "谷歌小恐龍", "article7link": "https://chinese.freecodecamp.org/news/do-you-know-the-chrome-dino-game-millions-of-people-are-playing/", "article8title": "GraphQL 教程", "article8link": "https://chinese.freecodecamp.org/news/a-detailed-guide-to-graphql/", @@ -21,9 +21,9 @@ "article9link": "https://chinese.freecodecamp.org/news/an-introduction-to-webpack-multi-entry-configuration/", "article10title": "TypeScript", "article10link": "https://chinese.freecodecamp.org/news/why-should-you-use-typescript/", - "article11title": "Web 开发工程师", + "article11title": "Web 開發工程師", "article11link": "https://chinese.freecodecamp.org/news/the-practical-guide-to-becoming-a-professional-web-developer/", - "article12title": "提交第一个 PR", + "article12title": "提交第一個 PR", "article12link": "https://chinese.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github/", "article13title": "Express ES6 支持", "article13link": "https://chinese.freecodecamp.org/news/how-to-enable-es6-and-beyond-syntax-with-node-and-express/", @@ -31,32 +31,32 @@ "article14link": "https://chinese.freecodecamp.org/news/sorting-in-python/", "article15title": "React 作品集", "article15link": "https://chinese.freecodecamp.org/news/portfolio-app-using-react/", - "article16title": "JS 隐式类型转换", + "article16title": "JS 隱式類型轉換", "article16link": "https://chinese.freecodecamp.org/news/javascript-implicit-type-conversion/", - "article17title": "Deno 入门手册", + "article17title": "Deno 入門手冊", "article17link": "https://chinese.freecodecamp.org/news/the-deno-handbook-with-examples/", - "article18title": "前端和后端的区别", + "article18title": "前端和後端的區別", "article18link": "https://chinese.freecodecamp.org/news/front-end-developer-vs-back-end-developer-definition-and-meaning-in-practice/", - "article19title": "JS 函数的 this 指向", + "article19title": "JS 函數的 this 指向", "article19link": "https://chinese.freecodecamp.org/news/javascript-this/", - "article20title": "GitHub Pages 部署网页", + "article20title": "GitHub Pages 部署網頁", "article20link": "https://chinese.freecodecamp.org/news/create-a-free-static-site-with-github-pages-in-10-minutes/", - "article21title": "第一门编程语言", + "article21title": "第一門編程語言", "article21link": "https://chinese.freecodecamp.org/news/what-programming-language-should-i-learn-first/", "article22title": "配置 VS Code", "article22link": "https://chinese.freecodecamp.org/news/how-to-set-up-vscode-to-improve-your-productivity/", - "article23title": "前端学习路线", + "article23title": "前端學習路線", "article23link": "https://chinese.freecodecamp.org/news/map-of-learning-front-end/", - "article24title": "自学编程", + "article24title": "自學編程", "article24link": "https://chinese.freecodecamp.org/news/first-line-of-code-to-226k-job-offer-in-8-months/", "article25title": "Java", "article25link": "https://chinese.freecodecamp.org/news/java-you-have-not-know-about/", - "article26title": "React 学习手册", + "article26title": "React 學習手冊", "article26link": "https://chinese.freecodecamp.org/news/the-react-handbook/", - "article27title": "JSON 文件注释", + "article27title": "JSON 文件註釋", "article27link": "https://chinese.freecodecamp.org/news/json-comment/", - "article28title": "Canvas 动画", + "article28title": "Canvas 動畫", "article28link": "https://chinese.freecodecamp.org/news/canvas-animation-performance-optimization-practice/", - "article29title": "JWT 授权和认证", + "article29title": "JWT 授權和認證", "article29link": "https://chinese.freecodecamp.org/news/java-spring-boot-jwt-authorization-and-authentication/" } diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/add-a-text-alternative-to-images-for-visually-impaired-accessibility.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/add-a-text-alternative-to-images-for-visually-impaired-accessibility.md new file mode 100644 index 0000000000..52baab74e2 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/add-a-text-alternative-to-images-for-visually-impaired-accessibility.md @@ -0,0 +1,46 @@ +--- +id: 587d774c367417b2b2512a9c +title: 爲視覺障礙用戶添加替代圖像的文本 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cPp7VfD' +forumTopicId: 16628 +dashedName: add-a-text-alternative-to-images-for-visually-impaired-accessibility +--- + +# --description-- + +在其他挑戰裏你應該已經見到過 `img` 標籤的 `alt` 屬性了。 `alt` 屬性中的文本來描述圖片內容,作爲備用文字。 `alt` 屬性可以幫助用戶在圖片加載失敗或者不可見的情況下理解圖片內容, 搜索引擎也通過它來理解圖片內容,並將其加入到搜索結果中。 例如: + +```html +Company logo +``` + +視覺障礙用戶無法通過視覺獲取信息,而是通過屏幕閱讀器將網頁內容轉換爲音頻以獲取信息。 他們無法通過直觀的呈現理解信息。 屏幕閱讀器可以識別 `alt` 屬性,朗讀其中的內容,來告知用戶圖片包含的關鍵信息。 + +`alt` 文本可以爲屏幕閱讀器提供圖片的描述信息, 所以你應始終爲圖片添加 `alt` 屬性。 另外,根據最新的 HTML5 標準,爲圖片添加這個屬性是必須的。 + +# --instructions-- + +碰巧,Camper Cat 是忍者中寫代碼最厲害的,他正在建立一個可以分享忍者知識的網站。 他打算使用的個人資料圖片可以展示他的技能,且應得到所有網站訪問者的讚賞。 請給 `img` 標籤添加一個 `alt` 屬性,說明 Camper Cat 正在學習空手道 (圖片的 `src` 屬性指向的是一個不存在的文件,因此你會看到 `alt` 屬性中的文本出現在頁面上) + +# --hints-- + +`img` 標籤應該包含一個非空的 `alt` 屬性。 + +```js +assert($('img').attr('alt')); +``` + +# --seed-- + +## --seed-contents-- + +```html + +``` + +# --solutions-- + +```html +Someone doing karate +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/add-an-accessible-date-picker.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/add-an-accessible-date-picker.md new file mode 100644 index 0000000000..54bca942a4 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/add-an-accessible-date-picker.md @@ -0,0 +1,105 @@ +--- +id: 587d778b367417b2b2512aa8 +title: 添加可訪問的日期選擇器 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cR3bRbCV' +forumTopicId: 301008 +dashedName: add-an-accessible-date-picker +--- + +# --description-- + +表單中經常出現 `input` 標籤,它可以用來創建多種表單控件。 它的 `type` 屬性指定了所要創建的 `input` 標籤類型。 + +在以前的挑戰中,我們已經見過 `text` 與 `submit` 類型的 input 標籤。 HTML5 規範添加了 `date` 類型來創建日期選擇器。 如果瀏覽器支持,在點擊 `input` 標籤時,日期選擇器會顯示出來,這讓用戶填寫表單變得更加容易。 + +對於較老的瀏覽器,類型將默認爲 `text`, 這樣它可以通過 `label` 或 `placeholder` 文本向用戶顯示預期的日期格式。 + +舉個例子: + +```html + + +``` + +# --instructions-- + +Camper Cat 想舉辦一場比武大會,他想收集參賽者的最佳參賽時間。 請爲 Camper Cat 的頁面添加一個`input` 標籤,起 `type` 屬性值爲 `date`,`id` 屬性爲 `pickdate`,`name` 屬性爲 `date`。 + +# --hints-- + +日期選擇器應有一個 `input` 標籤。 + +```js +assert($('input').length == 2); +``` + +`input` 標籤應有一個值爲 `date` 的 `type` 屬性。 + +```js +assert($('input').attr('type') == 'date'); +``` + +`input` 標籤應有一個值爲 `pickdate` 的 `id` 屬性。 + +```js +assert($('input').attr('id') == 'pickdate'); +``` + +`input` 標籤應有一個值爲 `date` 的 `name` 屬性。 + +```js +assert($('input').attr('name') == 'date'); +``` + +# --seed-- + +## --seed-contents-- + +```html + +
+

Tournaments

+
+
+
+

Mortal Kombat Tournament Survey

+
+

Tell us the best date for the competition

+ + + + + + + + + +
+
+
+ + +``` + +# --solutions-- + +```html + +
+

Tournaments

+
+
+
+

Mortal Kombat Tournament Survey

+
+

Tell us the best date for the competition

+ + + +
+
+
+ + +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-carefully-choosing-colors-that-convey-information.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-carefully-choosing-colors-that-convey-information.md new file mode 100644 index 0000000000..dd3cd517b6 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-carefully-choosing-colors-that-convey-information.md @@ -0,0 +1,74 @@ +--- +id: 587d778f367417b2b2512aad +title: >- + 考慮色盲用戶的需求仔細選擇傳達信息的顏色 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/c437as3' +forumTopicId: 301011 +dashedName: >- + avoid-colorblindness-issues-by-carefully-choosing-colors-that-convey-information +--- + +# --description-- + +色盲的形式有很多種, 它的表現可以從對特定波長光波的感知度較低,到完全無法看到顏色。 最常見的形式是對綠色的低感知度。 + +例如,如果內容的前景色與背景色是兩種相近的綠色,那麼色盲用戶可能會無法區分它們。 色輪上距離較近的顏色,特別是相鄰的顏色,看起來都會很難區分。 在表示重要信息的時候應避免使用這類相近顏色的組合。 + +**注意:**一些在線顏色選擇器有色盲模擬功能,可以模擬顏色在不同形式的色盲中所呈現的效果。 它們和在線對比度檢查器一樣,都是很好的工具。 + +# --instructions-- + +Camper Cat 正在測試一個重要按鈕的不同樣式。 在色輪上,用於 `background-color` 的黃色(`#FFFF33`)和用於 `color` 的綠色(`#33FF33`)是相鄰的色調,一些色盲用戶幾乎無法區分它們 (而且這兩個顏色的亮度相近,對比度太小。) 爲了解決這兩個問題,請將文本的 `color` 修改爲深藍色(`#003366`)。 + +# --hints-- + +`button` 內容文本的 `color` 屬性值應爲深藍色。 + +```js +assert($('button').css('color') == 'rgb(0, 51, 102)'); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +
+

Danger!

+
+ + +``` + +# --solutions-- + +```html + + + + +
+

Danger!

+
+ + +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-using-sufficient-contrast.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-using-sufficient-contrast.md new file mode 100644 index 0000000000..8d4de2f90f --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/avoid-colorblindness-issues-by-using-sufficient-contrast.md @@ -0,0 +1,84 @@ +--- +id: 587d778f367417b2b2512aac +title: 考慮色盲用戶的需求設置合適的對比度 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cmzMEUw' +forumTopicId: 301012 +dashedName: avoid-colorblindness-issues-by-using-sufficient-contrast +--- + +# --description-- + +顏色是可視化設計的重要組成部分,但是使用顏色也引入了兩個可訪問性問題。 首先,不能僅僅使用顏色作爲傳達重要信息的唯一方式,因爲屏幕閱讀器無法獲取這些信息。 其次,前景色與背景色需要有足夠的對比度,這樣色盲用戶纔可以區分它們。 + +在之前的挑戰中,我們用文本備用方案解決了第一個問題。 在上一個挑戰中,我們使用對比度檢測工具解決了第二個問題。 WCAG 建議爲顏色及灰度組合使用 4.5:1 的對比度。 + +色盲用戶無法將一些顏色與另一些顏色區分出來,這通常是因爲色調,有時候是因爲亮度。 你可能還記得,對比度是用前景色與背景色的相對亮度計算的。 + +實踐中,在對比度檢測工具的幫助下,我們可以通過將較暗的顏色變暗、將較淡的顏色變淡的方法來使對比度達到 4.5:1。 在色輪中,較暗的顏色通常是藍色、紫色、洋紅和紅色,而較淡的顏色通常是橙色、黃色、綠色和藍綠色。 + +# --instructions-- + +Camper Cat 正在嘗試爲他的博客文本與背景配置顏色。 他目前使用的組合是綠色的 `background-color` 與栗色的 `color`,它們的對比度爲 2.5:1。 這樣,通過修改 `hsl()` 屬性的第三個參數,我們可以很輕鬆地調整顏色的亮度。 請將 `background-color` 的亮度從 35% 增加到 55%,將 `color` 的亮度從 20% 減少到 15%, 這樣可以使對比度達到 5.9:1。 + +# --hints-- + +應將 `color` 屬性的亮度值設置爲 15%。 + +```js +assert(code.match(/color:\s*?hsl\(0,\s*?55%,\s*?15%\)/gi)); +``` + +應將 `background-color` 屬性的亮度值設置爲 55%。 + +```js +assert(code.match(/background-color:\s*?hsl\(120,\s*?25%,\s*?55%\)/gi)); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +
+

Deep Thoughts with Master Camper Cat

+
+
+

A Word on the Recent Catnip Doping Scandal

+

The influence that catnip has on feline behavior is well-documented, and its use as an herbal supplement in competitive ninja circles remains controversial. Once again, the debate to ban the substance is brought to the public's attention after the high-profile win of Kittytron, a long-time proponent and user of the green stuff, at the Claw of Fury tournament.

+

As I've stated in the past, I firmly believe a true ninja's skills must come from within, with no external influences. My own catnip use shall continue as purely recreational.

+
+ +``` + +# --solutions-- + +```html + + + + +
+

Deep Thoughts with Master Camper Cat

+
+
+

A Word on the Recent Catnip Doping Scandal

+

The influence that catnip has on feline behavior is well-documented, and its use as an herbal supplement in competitive ninja circles remains controversial. Once again, the debate to ban the substance is brought to the public's attention after the high-profile win of Kittytron, a long-time proponent and user of the green stuff, at the Claw of Fury tournament.

+

As I've stated in the past, I firmly believe a true ninja's skills must come from within, with no external influences. My own catnip use shall continue as purely recreational.

+
+ +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/give-links-meaning-by-using-descriptive-link-text.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/give-links-meaning-by-using-descriptive-link-text.md new file mode 100644 index 0000000000..2f0972034a --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/give-links-meaning-by-using-descriptive-link-text.md @@ -0,0 +1,75 @@ +--- +id: 587d778f367417b2b2512aae +title: 爲鏈接添加描述性的文本 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/c437DcV' +forumTopicId: 301013 +dashedName: give-links-meaning-by-using-descriptive-link-text +--- + +# --description-- + +屏幕閱讀器用戶可以選擇其設備讀取的內容的類型, 包括表示“跳轉到”(或“跳過”)的元素,跳轉到主要內容,或者從標題中獲取頁面摘要。 用戶還可以選擇只聽取頁面中的超鏈接內容。 + +屏幕閱讀器通過閱讀鏈接文本(即 `a` 標籤的內容文本)來完成這個操作。 如果我們只在鏈接中寫上 "click here"(點擊這裏)或者 "read more"(閱讀更多),顯然幫助有限。 相反地,應該在 `a` 標籤中使用簡潔的描述性語言來爲用戶提供更多的信息。 + +# --instructions-- + +Camper Cat 在鏈接中使用的文本在脫離上下文的情況下,描述性不是很好。 請修改錨點標籤(`a`),將其包含的文本從 `Click here` 改爲 `information about batteries`。 + +# --hints-- + +應修改 `a` 標籤,將其包含的文本從 `Click here` 改爲 `information about batteries`。 + +```js +assert( + $('a') + .text() + .match(/^(information about batteries)$/g) +); +``` + +`a` 元素應該有一個 `href` 屬性,且其屬性值爲空字符串 `""`。 + +```js +assert($('a').attr('href') === ''); +``` + +`a` 元素應該有一個結束標籤。 + +```js +assert( + code.match(/<\/a>/g) && + code.match(/<\/a>/g).length === code.match(//g).length +); +``` + +# --seed-- + +## --seed-contents-- + +```html + +
+

Deep Thoughts with Master Camper Cat

+
+
+

Defeating your Foe: the Red Dot is Ours!

+

Felines the world over have been waging war on the most persistent of foes. This red nemesis combines both cunning stealth and lightning speed. But chin up, fellow fighters, our time for victory may soon be near. Click here for information about batteries

+
+ +``` + +# --solutions-- + +```html + +
+

Deep Thoughts with Master Camper Cat

+
+
+

Defeating your Foe: the Red Dot is Ours!

+

Felines the world over have been waging war on the most persistent of foes. This red nemesis combines both cunning stealth and lightning speed. But chin up, fellow fighters, our time for victory may soon be near. Click here for information about batteries

+
+ +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md new file mode 100644 index 0000000000..8f791604ae --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -0,0 +1,115 @@ +--- +id: 587d7789367417b2b2512aa4 +title: 使用 audio 元素提高音頻內容的可訪問性 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cVJVkcZ' +forumTopicId: 301014 +dashedName: improve-accessibility-of-audio-content-with-the-audio-element +--- + +# --description-- + +HTML5 的 `audio` 標籤用於呈現音頻內容或音頻流,它也具有語義化特性。 音頻內容也需要備用文本,供聾啞人或聽力困難的人使用。 這可以通過頁面上的文本或與字幕鏈接來實現。 + +`audio` 標籤支持 `controls` 屬性, 用於顯示瀏覽器默認播放、停止和其他控制,以及支持鍵盤功能。 這是一個布爾值屬性,意味着它不需要一個值,它在標籤上存在即開啓設置。 + +舉個例子: + +```html + +``` + +**注意:**多媒體內容通常同時包含音頻與視頻部分, 它需要同步的字幕,使視覺或聽覺障礙用戶可以獲取它的內容。 一般情況下,網頁開發者不負責創建字幕或逐字稿,但是需要將它們添加到多媒體中。 + +# --instructions-- + +是時候讓 Camper Cat 休息一下,並與朋友 Zersiax (@zersiax) 會面了。 Zersiax 是一位屏幕閱讀器用戶,同時也是無障礙設計的高手。 爲了體驗屏幕閱讀器的朗讀效果,請在 `p` 標籤之後添加一個 `audio` 標籤, 具有 `controls` 屬性。 然後在 `audio` 標籤裏面放一個帶有 `src` 屬性的 `source` 標籤,屬性值爲 `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3`。將 `type` 屬性設置爲 `"audio/mpeg"`. + +**注意:**音頻片段的播放速度可能會快到令我們難以理解,但是對於屏幕閱讀器用戶來說這是正常速度。 + +# --hints-- + +應該包含一個 `audio` 標籤。 + +```js +assert($('audio').length === 1); +``` + +確保 `audio` 元素有結束標籤。 + +```js +assert( + code.match(/<\/audio>/g).length === 1 && + code.match(/[\s\S]*<\/audio>/g) +); +``` + +`audio` 標籤應存在 `controls` 屬性。 + +```js +assert($('audio').attr('controls')); +``` + +代碼中應存在 `source` 標籤。 + +```js +assert($('source').length === 1); +``` + +`source` 標籤應位於 `audio` 標籤中。 + +```js +assert($('audio').children('source').length === 1); +``` + +`source` 標籤中 `src` 的屬性值應該與教程中的鏈接一致。 + +```js +assert( + $('source').attr('src') === + 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' +); +``` + +`source` 標籤中應具有 `type` 屬性,其屬性值應爲 audio/mpeg。 + +```js +assert($('source').attr('type') === 'audio/mpeg'); +``` + +# --seed-- + +## --seed-contents-- + +```html + +
+

Real Coding Ninjas

+
+
+

A sound clip of Zersiax's screen reader in action.

+ + + +
+ +``` + +# --solutions-- + +```html + +
+

Real Coding Ninjas

+
+
+

A sound clip of Zersiax's screen reader in action.

+ +
+ +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-chart-accessibility-with-the-figure-element.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-chart-accessibility-with-the-figure-element.md new file mode 100644 index 0000000000..2d89873914 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-chart-accessibility-with-the-figure-element.md @@ -0,0 +1,161 @@ +--- +id: 587d778a367417b2b2512aa5 +title: 使用 figure 元素提高圖表的可訪問性 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cGJMqtE' +forumTopicId: 301015 +dashedName: improve-chart-accessibility-with-the-figure-element +--- + +# --description-- + +HTML5 引入了 `figure` 標籤以及與之相關的 `figcaption` 標籤。 它們一起用於展示可視化信息(如:圖片、圖表)及其標題。 這樣通過語義化對內容進行分組並配以用於解釋 `figure` 的文字,可以極大地提升內容的可訪問性。 + +對於圖表之類的可視化數據,標題可以爲屏幕閱讀器用戶提供簡要的說明。 但是這裏有一個難點,如何爲屏幕閱讀器用戶展示那些超出屏幕可視範圍(使用 CSS)的表格所表現的圖表數據。 + +舉個例子,注意 `figcaption` 包含在 `figure` 標籤中,並且可以與其他標籤組合使用: + +```html +
+ Photo of Camper Cat executing a roundhouse kick +
+
+ Master Camper Cat demonstrates proper form of a roundhouse kick. +
+
+``` + +# --instructions-- + +Camper Cat 正在努力創建一張條形圖,用來顯示每週用於隱形、戰鬥、武器訓練的時間。 請幫助完善他的頁面,將他用於呈現圖表的 `div` 標籤修改爲 `figure` 標籤;將用於呈現圖表標題的 `p` 標籤改爲 `figcaption` 標籤。 + +# --hints-- + +應存在一個 `figure` 標籤。 + +```js +assert($('figure').length == 1); +``` + +應存在一個 `figcaption` 標籤。 + +```js +assert($('figcaption').length == 1); +``` + +不應存在 `div` 標籤。 + +```js +assert($('div').length == 0); +``` + +不應存在 `p` 標籤。 + +```js +assert($('p').length == 0); +``` + +`figcaption` 應爲 `figure` 的子標籤。 + +```js +assert($('figure').children('figcaption').length == 1); +``` + +確保 `figure` 元素有結束標籤。 + +```js +assert( + code.match(/<\/figure>/g) && + code.match(/<\/figure>/g).length === code.match(/
/g).length +); +``` + +# --seed-- + +## --seed-contents-- + +```html + +
+

Training

+ +
+
+
+ + +
+ +
+

Breakdown per week of time to spend training in stealth, combat, and weapons.

+
+ + +
+
+

Stealth & Agility Training

+

Climb foliage quickly using a minimum spanning tree approach

+

No training is NP-complete without parkour

+
+
+

Combat Training

+

Dispatch multiple enemies with multithreaded tactics

+

Goodbye world: 5 proven ways to knock out an opponent

+
+
+

Weapons Training

+

Swords: the best tool to literally divide and conquer

+

Breadth-first or depth-first in multi-weapon training?

+
+
+
© 2018 Camper Cat
+ +``` + +# --solutions-- + +```html + +
+

Training

+ +
+
+
+
+ +
+
Breakdown per week of time to spend training in stealth, combat, and weapons.
+
+
+
+

Stealth & Agility Training

+

Climb foliage quickly using a minimum spanning tree approach

+

No training is NP-complete without parkour

+
+
+

Combat Training

+

Dispatch multiple enemies with multithreaded tactics

+

Goodbye world: 5 proven ways to knock out an opponent

+
+
+

Weapons Training

+

Swords: the best tool to literally divide and conquer

+

Breadth-first or depth-first in multi-weapon training?

+
+
+
© 2018 Camper Cat
+ +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-form-field-accessibility-with-the-label-element.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-form-field-accessibility-with-the-label-element.md new file mode 100644 index 0000000000..1e1fce3bfc --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-form-field-accessibility-with-the-label-element.md @@ -0,0 +1,119 @@ +--- +id: 587d778a367417b2b2512aa6 +title: 使用 label 元素提高表單的可訪問性 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cGJMMAN' +forumTopicId: 301016 +dashedName: improve-form-field-accessibility-with-the-label-element +--- + +# --description-- + +合理地使用語義化的 HTML 標籤和屬性可以提升頁面可訪問性。 在接下來的挑戰中,你將會看到在表單中使用屬性的場景。 + +`label` 標籤的文本內容通常會是表單組件的名稱或標籤。 這些文本表明了組件的意義,也提升了表單的可訪問性。 `label` 標籤的 `for` 屬性將標籤與表單組件綁定;同時,屏幕閱讀器也會讀取 `for` 屬性的屬性值。 + +在 HTML 基礎章節中,我們已經學習使用了單選按鈕標籤。 在那個挑戰中,爲了讓標籤可以在點擊的時候也選中輸入框,我們將單選按鈕 input 標籤嵌套在了 `label` 標籤裏面。 在本節課程中,我們介紹了另外一種實現這個功能的方法,那就是使用 `for` 屬性。 + +`for` 的屬性值必須與表單組件的 `id` 屬性值相同。 舉個例子: + +```html +
+ + +
+``` + +# --instructions-- + +Camper Cat 覺得他的博客文章會有很多人訂閱,因此他想添加一個電子郵件註冊表單。 請爲表示電子郵件的 `label` 標籤添加 `for` 屬性,並將其屬性值設置爲與 `input` 標籤的 `id` 屬性值相同。 + +# --hints-- + +`label`標籤應該有一個非空的 `for` 屬性。 + +```js +assert($('label').attr('for')); +``` + +`for` 的屬性值應與用於輸入郵箱的 `input` 標籤 `id` 屬性值相同。 + +```js +assert($('label').attr('for') == 'email'); +``` + +# --seed-- + +## --seed-contents-- + +```html + +
+

Deep Thoughts with Master Camper Cat

+
+
+
+

Sign up to receive Camper Cat's blog posts by email here!

+ + + + + + + +
+
+
+

The Garfield Files: Lasagna as Training Fuel?

+

The internet is littered with varying opinions on nutritional paradigms, from catnip paleo to hairball cleanses. But let's turn our attention to an often overlooked fitness fuel, and examine the protein-carb-NOM trifecta that is lasagna...

+
+ +
+

Defeating your Foe: the Red Dot is Ours!

+

Felines the world over have been waging war on the most persistent of foes. This red nemesis combines both cunning stealth and lightning speed. But chin up, fellow fighters, our time for victory may soon be near...

+
+ +
+

Is Chuck Norris a Cat Person?

+

Chuck Norris is widely regarded as the premier martial artist on the planet, and it's a complete coincidence anyone who disagrees with this fact mysteriously disappears soon after. But the real question is, is he a cat person?...

+
+
© 2018 Camper Cat
+ +``` + +# --solutions-- + +```html + +
+

Deep Thoughts with Master Camper Cat

+
+
+
+

Sign up to receive Camper Cat's blog posts by email here!

+ + + + + + + +
+
+
+

The Garfield Files: Lasagna as Training Fuel?

+

The internet is littered with varying opinions on nutritional paradigms, from catnip paleo to hairball cleanses. But let's turn our attention to an often overlooked fitness fuel, and examine the protein-carb-NOM trifecta that is lasagna...

+
+ +
+

Defeating your Foe: the Red Dot is Ours!

+

Felines the world over have been waging war on the most persistent of foes. This red nemesis combines both cunning stealth and lightning speed. But chin up, fellow fighters, our time for victory may soon be near...

+
+ +
+

Is Chuck Norris a Cat Person?

+

Chuck Norris is widely regarded as the premier martial artist on the planet, and it's a complete coincidence anyone who disagrees with this fact mysteriously disappears soon after. But the real question is, is he a cat person?...

+
+
© 2018 Camper Cat
+ +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-readability-with-high-contrast-text.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-readability-with-high-contrast-text.md new file mode 100644 index 0000000000..107067bc51 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-readability-with-high-contrast-text.md @@ -0,0 +1,80 @@ +--- +id: 587d778e367417b2b2512aab +title: 使用高對比度文本提高可讀性 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cKb3nCq' +forumTopicId: 301017 +dashedName: improve-readability-with-high-contrast-text +--- + +# --description-- + +低對比度的前景色與背景色會使文本難以閱讀。 足夠的對比度可以提高內容的可讀性,但是怎樣的對比度纔算是“足夠”的? + +Web 內容無障礙指南(WCAG)建議正常文本的對比度至少爲 4.5 : 1。 對比度是通過比較兩種顏色的相對亮度值來計算的。 對比度的範圍是從相同顏色的 1:1(無對比度)到白色與黑色的最高對比度 21:1。 在線可用的對比檢查工具很多,可以計算這個比率。 + +# --instructions-- + +Camper Cat 爲他的博客選擇了白色背景和淺灰色文字,對比度爲 1.5:1,這使博客文章難以閱讀。 請將文字的 `color` 從當前的淺灰色(`#D3D3D3`)修改爲深灰色(`#636363`),以使對比度提升到 6:1。 + +# --hints-- + +應該將 `body` 的 `color` 修改爲深灰色。 + +```js +assert($('body').css('color') == 'rgb(99, 99, 99)'); +``` + +不應修改 `body` 的 `background-color`。 + +```js +assert($('body').css('background-color') == 'rgb(255, 255, 255)'); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +
+

Deep Thoughts with Master Camper Cat

+
+
+

A Word on the Recent Catnip Doping Scandal

+

The influence that catnip has on feline behavior is well-documented, and its use as an herbal supplement in competitive ninja circles remains controversial. Once again, the debate to ban the substance is brought to the public's attention after the high-profile win of Kittytron, a long-time proponent and user of the green stuff, at the Claw of Fury tournament.

+

As I've stated in the past, I firmly believe a true ninja's skills must come from within, with no external influences. My own catnip use shall continue as purely recreational.

+
+ +``` + +# --solutions-- + +```html + + + + +
+

Deep Thoughts with Master Camper Cat

+
+
+

A Word on the Recent Catnip Doping Scandal

+

The influence that catnip has on feline behavior is well-documented, and its use as an herbal supplement in competitive ninja circles remains controversial. Once again, the debate to ban the substance is brought to the public's attention after the high-profile win of Kittytron, a long-time proponent and user of the green stuff, at the Claw of Fury tournament.

+

As I've stated in the past, I firmly believe a true ninja's skills must come from within, with no external influences. My own catnip use shall continue as purely recreational.

+
+ +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/jump-straight-to-the-content-using-the-main-element.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/jump-straight-to-the-content-using-the-main-element.md new file mode 100644 index 0000000000..f8eeb02b82 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/jump-straight-to-the-content-using-the-main-element.md @@ -0,0 +1,62 @@ +--- +id: 587d774e367417b2b2512a9f +title: 使用 main 元素包裹主題內容 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cPp7zuE' +forumTopicId: 301018 +dashedName: jump-straight-to-the-content-using-the-main-element +--- + +# --description-- + +HTML5 引入了一些新元素,給予開發者更多的選擇,也包含輔助功能。 HTML5 引入了諸如 `main`、`header`、`footer`、`nav`、`article`、`section` 等大量新標籤。 + +默認情況下,瀏覽器呈現這些元素的方式類似於普通的 `div`。 但是,在適當的地方使用它們會讓標記文本具有更多的含義。 僅標籤名稱就可以表示它所包含的信息類型,這給內容增加了語義含義。 輔助技術可以獲取這種信息,爲用戶提供更好的頁面摘要或導航選項。 + +`main` 標籤用於呈現網頁的主體內容,且每個頁面應只有一個。 這是爲了圍繞與頁面中心主題相關的信息, 而不應包含如導航連接、網頁橫幅等需要在多個頁面中重複出現的內容。 + +`main` 標籤也有一個內嵌的特性,以便輔助技術快速定位到頁面的主體。 如果你在頁面頂部看到過“跳轉到主要內容”鏈接,那麼使用 `main` 標籤會自動讓輔助設備具有這個跳轉的功能。 + +# --instructions-- + +Camper Cat 對他的忍者武器頁面有一些新的想法。 請幫他在 `header` 標籤和 `footer` 標籤(在接下來的挑戰中會詳細介紹)之間添加一個有開始和結束標記的 `main` 標籤。 現在保持 `main` 標籤爲空。 + +# --hints-- + +應存在一個 `main` 標籤。 + +```js +assert($('main').length == 1); +``` + +`main` 標籤應位於 `header` 標籤與 `footer` 標籤之間。 + +```js +assert(code.match(/<\/header>\s*?
\s*?<\/main>/gi)); +``` + +# --seed-- + +## --seed-contents-- + +```html +
+

Weapons of the Ninja

+
+ + + +
+``` + +# --solutions-- + +```html +
+

Weapons of the Ninja

+
+
+ +
+
+``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/know-when-alt-text-should-be-left-blank.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/know-when-alt-text-should-be-left-blank.md new file mode 100644 index 0000000000..b1f7cf04f1 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/know-when-alt-text-should-be-left-blank.md @@ -0,0 +1,76 @@ +--- +id: 587d774c367417b2b2512a9d +title: 瞭解 Alt 文本留空的情景 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cM9P4t2' +forumTopicId: 301019 +dashedName: know-when-alt-text-should-be-left-blank +--- + +# --description-- + +在上一個挑戰中,我們瞭解到 `img` 標籤必須有一個 `alt` 屬性。 但是,有時圖像通過它們的描述文本被歸類,或者只用於裝飾。 在這些情況下, `alt` 文本可能是多餘的或沒有必要的。 + +在圖片已經有了文字說明,或者僅僅爲了美化頁面的情況下,`img` 仍然需要一個 `alt` 屬性,但可以設置爲空字符串。 例如: + +```html + +``` + +比如,背景圖片通常起裝飾作用。 但這些圖片通常都是通過 CSS 規則而非 HTML 引入的,因此屏幕閱讀器毋需讀取。 + +**注意:**對於有標題的圖片,依然需要添加 `alt` 文本,因爲這樣有助於搜索引擎記錄圖片內容。 + +# --instructions-- + +Camper Cat 已經大體寫好了博客頁面。 他打算在他的兩篇文章之間添加一個武士劍裝飾圖片,作爲兩篇文章之間的分割線。 爲 `img` 標籤添加 `alt` 屬性,把它的屬性值設爲空 (注意:這裏圖片的 `src` 屬性提供的鏈接是無效的,因此頁面上不會顯示任何武士刀的圖片,不用擔心)。 + +# --hints-- + +`img` 標籤應具有 `alt` 屬性。 + +```js +assert(!($('img').attr('alt') == undefined)); +``` + +`alt` 的屬性值應爲空。 + +```js +assert($('img').attr('alt') == ''); +``` + +# --seed-- + +## --seed-contents-- + +```html +

Deep Thoughts with Master Camper Cat

+
+

Defeating your Foe: the Red Dot is Ours!

+

To Come...

+
+ + + +
+

Is Chuck Norris a Cat Person?

+

To Come...

+
+``` + +# --solutions-- + +```html +

Deep Thoughts with Master Camper Cat

+
+

Defeating your Foe: the Red Dot is Ours!

+

To Come...

+
+ + + +
+

Is Chuck Norris a Cat Person?

+

To Come...

+
+``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-elements-only-visible-to-a-screen-reader-by-using-custom-css.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-elements-only-visible-to-a-screen-reader-by-using-custom-css.md new file mode 100644 index 0000000000..132194ed2d --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-elements-only-visible-to-a-screen-reader-by-using-custom-css.md @@ -0,0 +1,244 @@ +--- +id: 587d778d367417b2b2512aaa +title: 使用自定義 CSS 讓元素僅對屏幕閱讀器可見 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cJ8QGkhJ' +forumTopicId: 301020 +dashedName: make-elements-only-visible-to-a-screen-reader-by-using-custom-css +--- + +# --description-- + +到目前爲止,所有關於可訪問性的挑戰都沒有使用 CSS。 這是爲了在介紹視覺設計方面之前強調使用邏輯結構和有語義意義的標籤的重要性。 + +但如果我們想在頁面中添加一些只對屏幕閱讀器可見的內容,可以用 CSS 來實現。 當信息爲視覺格式(例如圖表)時,但屏幕閱讀器用戶需要備用文稿(例如表格)來訪問數據,在這種情況下, 使用 CSS 將屏幕的只讀元素放到瀏覽器窗口可視區域之外。 + +舉個例子: + +```css +.sr-only { + position: absolute; + left: -10000px; + width: 1px; + height: 1px; + top: auto; + overflow: hidden; +} +``` + +**注意:**以下的 CSS 解決方案與上面的結果不同: + +
    +
  • display: none;visibility: hidden; 會把內容徹底隱藏起來,屏幕閱讀器也無法獲取這些內容。
  • +
  • 如果把值設置爲 0px,如 width: 0px; height: 0px;,意味着讓元素脫離文檔流,這樣做同樣也會讓屏幕閱讀器忽略此元素。
  • +
+ +# --instructions-- + +Camper Cat 爲他的訓練頁面創建了一個十分酷炫的條形圖。 考慮到可訪問性,他還將數據放入到了一個表格中,供屏幕閱讀器用戶使用。 表格已有一個 `sr-only` class,但是還沒有添加 CSS 規則。 設置 `position` 的值爲 `absolute`,`left` 的值爲 `-10000px`,`width` 和 `height` 的值均爲 `1px`。 + +# --hints-- + +設置 `sr-only` class 的 `position` 屬性值爲 `absolute`。 + +```js +assert($('.sr-only').css('position') == 'absolute'); +``` + +設置 `sr-only` class 的 `left` 屬性值爲`-10000px`。 + +```js +assert($('.sr-only').css('left') == '-10000px'); +``` + +設置 `sr-only` class 的 `width` 屬性值爲 `1` 像素。 + +```js +assert(code.match(/width:\s*?1px/gi)); +``` + +設置 `sr-only` class 的 `height` 屬性值爲 `1` 像素。 + +```js +assert(code.match(/height:\s*?1px/gi)); +``` + +# --seed-- + +## --seed-contents-- + +```html + + + + +
+

Training

+ +
+
+

Master Camper Cat's Beginner Three Week Training Program

+
+ +

[Stacked bar chart]

+
+
Breakdown per week of time to spend training in stealth, combat, and weapons.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Hours of Weekly Training in Stealth, Combat, and Weapons
Stealth & AgilityCombatWeaponsTotal
Week One35210
Week Two45312
Week Three46313
+
+
+

Stealth & Agility Training

+

Climb foliage quickly using a minimum spanning tree approach

+

No training is NP-complete without parkour

+
+
+

Combat Training

+

Dispatch multiple enemies with multithreaded tactics

+

Goodbye, world: 5 proven ways to knock out an opponent

+
+
+

Weapons Training

+

Swords: the best tool to literally divide and conquer

+

Breadth-first or depth-first in multi-weapon training?

+
+
© 2018 Camper Cat
+ +``` + +# --solutions-- + +```html + + + + +
+

Training

+ +
+
+

Master Camper Cat's Beginner Three Week Training Program

+
+ +

[Stacked bar chart]

+
+
Breakdown per week of time to spend training in stealth, combat, and weapons.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Hours of Weekly Training in Stealth, Combat, and Weapons
Stealth & AgilityCombatWeaponsTotal
Week One35210
Week Two45312
Week Three46313
+
+
+

Stealth & Agility Training

+

Climb foliage quickly using a minimum spanning tree approach

+

No training is NP-complete without parkour

+
+
+

Combat Training

+

Dispatch multiple enemies with multithreaded tactics

+

Goodbye, world: 5 proven ways to knock out an opponent

+
+
+

Weapons Training

+

Swords: the best tool to literally divide and conquer

+

Breadth-first or depth-first in multi-weapon training?

+
+
© 2018 Camper Cat
+ +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-links-navigable-with-html-access-keys.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-links-navigable-with-html-access-keys.md new file mode 100644 index 0000000000..d3786e3934 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-links-navigable-with-html-access-keys.md @@ -0,0 +1,106 @@ +--- +id: 587d7790367417b2b2512aaf +title: 通過給元素添加 accesskey 屬性來讓用戶可以在鏈接之間快速導航 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/cQvmaTp' +forumTopicId: 301021 +dashedName: make-links-navigable-with-html-access-keys +--- + +# --description-- + +HTML 提供 `accesskey` 屬性,用於指定激活元素或者使元素獲得焦點的快捷鍵。 添加 `accesskey` 屬性可以讓使用鍵盤的用戶更高效率地導航。 + +HTML5 允許在任何標籤上使用這個屬性。 該屬性尤其適用於鏈接、按鈕、表單組件等元素。 + +舉個例子: + +```html + +``` + +# --instructions-- + +Camper Cat 希望爲他兩篇博客的標題鏈接設置快捷鍵,以使用戶可以快速導航到文章的全文。 爲兩個鏈接添加一個 `accesskey` 屬性,設置第一個的值爲 `g`(代表 Garfield),設置第二的值爲 `c`(代表 Chuck Norris)。 + +# --hints-- + +`id` 爲 `first` 的 `a` 標籤應具有 `accesskey` 屬性。 + +```js +assert($('#first').attr('accesskey')); +``` + +`id` 爲 `second` 的 `a` 標籤應具有 `accesskey` 屬性。 + +```js +assert($('#second').attr('accesskey')); +``` + +`id` 爲 `first` 的 `a` 標籤的 `accesskey` 屬性值應爲 `g`。 注意要使用小寫。 + +```js +assert($('#first').attr('accesskey') == 'g'); +``` + +`id` 爲 `second` 的 `a` 標籤的 `accesskey` 屬性值應爲 `c`。 注意使用小寫。 + +```js +assert($('#second').attr('accesskey') == 'c'); +``` + +# --seed-- + +## --seed-contents-- + +```html + +
+

Deep Thoughts with Master Camper Cat

+
+
+ + +

The Garfield Files: Lasagna as Training Fuel?

+ + +

The internet is littered with varying opinions on nutritional paradigms, from catnip paleo to hairball cleanses. But let's turn our attention to an often overlooked fitness fuel, and examine the protein-carb-NOM trifecta that is lasagna...

+
+
+ + +

Is Chuck Norris a Cat Person?

+ + +

Chuck Norris is widely regarded as the premier martial artist on the planet, and it's a complete coincidence anyone who disagrees with this fact mysteriously disappears soon after. But the real question is, is he a cat person?...

+
+
© 2018 Camper Cat
+ +``` + +# --solutions-- + +```html + +
+

Deep Thoughts with Master Camper Cat

+
+
+ + +

The Garfield Files: Lasagna as Training Fuel?

+ + +

The internet is littered with varying opinions on nutritional paradigms, from catnip paleo to hairball cleanses. But let's turn our attention to an often overlooked fitness fuel, and examine the protein-carb-NOM trifecta that is lasagna...

+
+
+ + +

Is Chuck Norris a Cat Person?

+ + +

Chuck Norris is widely regarded as the premier martial artist on the planet, and it's a complete coincidence anyone who disagrees with this fact mysteriously disappears soon after. But the real question is, is he a cat person?...

+
+
© 2018 Camper Cat
+ +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-footer-landmark.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-footer-landmark.md new file mode 100644 index 0000000000..4b7401ea28 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/make-screen-reader-navigation-easier-with-the-footer-landmark.md @@ -0,0 +1,116 @@ +--- +id: 587d7788367417b2b2512aa3 +title: 使用 footer 元素來讓屏幕閱讀器更容易進行導航 +challengeType: 0 +videoUrl: 'https://scrimba.com/c/crVrDh8' +forumTopicId: 301022 +dashedName: make-screen-reader-navigation-easier-with-the-footer-landmark +--- + +# --description-- + +與 `header` 和 `nav` 類似,`footer` 元素也具有語義化的特性,可以讓輔助工具快速定位到它。 它位於頁面底部,用於呈現版權信息或者相關文檔鏈接。 + +# --instructions-- + +Camper Cat 的忍者訓練頁面進展順利。 請將他在頁面底部呈現版權信息的 `div` 元素更改爲 `footer` 元素。 + +# --hints-- + +應存在一個 `footer` 標籤。 + +```js +assert($('footer').length == 1); +``` + +不應存在 `div` 標籤。 + +```js +assert($('div').length == 0); +``` + +確保 `footer` 元素有結束標籤。 + +```js +assert(code.match(/