feat(client): add chinese traditional
Add chinese traditional to the all-langs validation and necessary client build configs.
This commit is contained in:
committed by
Mrugesh Mohapatra
parent
ce6124a9ed
commit
e46e80e08f
@ -16,6 +16,12 @@ jobs:
|
||||
with:
|
||||
token: ${{ secrets.CROWDIN_CAMPERBOT_PAT }}
|
||||
|
||||
- name: Install Dependencies
|
||||
working-directory: ./tools
|
||||
run: |
|
||||
cd ./crowdin
|
||||
npm ci
|
||||
|
||||
##### Download Chinese #####
|
||||
- name: Crowdin Download Chinese Translations
|
||||
uses: crowdin/github-action@master
|
||||
@ -50,6 +56,10 @@ jobs:
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_CLIENT }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }}
|
||||
|
||||
# Convert Simplified Chinese to Traditional #
|
||||
- name: Generate Translations
|
||||
uses: ./tools/crowdin/actions/convert-chinese
|
||||
|
||||
##### Download Espanol #####
|
||||
- name: Crowdin Download Espanol Translations
|
||||
uses: crowdin/github-action@master
|
||||
@ -96,12 +106,6 @@ jobs:
|
||||
git diff-index --quiet HEAD || git commit -m "chore(i18n,learn): update translations"
|
||||
git push -u origin i18n-sync-client -f
|
||||
|
||||
- name: Install Dependencies
|
||||
working-directory: ./tools
|
||||
run: |
|
||||
cd ./crowdin
|
||||
npm ci
|
||||
|
||||
# Generate PR - all languages should go ABOVE this. #
|
||||
- name: Create PR
|
||||
uses: ./tools/crowdin/actions/pr-creator
|
||||
|
@ -16,6 +16,12 @@ jobs:
|
||||
with:
|
||||
token: ${{ secrets.CROWDIN_CAMPERBOT_PAT }}
|
||||
|
||||
- name: Install Dependencies
|
||||
working-directory: ./tools
|
||||
run: |
|
||||
cd ./crowdin
|
||||
npm ci
|
||||
|
||||
##### Download Chinese #####
|
||||
- name: Crowdin Download Chinese Translations
|
||||
uses: crowdin/github-action@master
|
||||
@ -50,6 +56,11 @@ jobs:
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_CURRICULUM }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }}
|
||||
|
||||
|
||||
# Convert Simplified Chinese to Traditional #
|
||||
- name: Generate Translations
|
||||
uses: ./tools/crowdin/actions/convert-chinese
|
||||
|
||||
##### Download Espanol #####
|
||||
- name: Crowdin Download Espanol Translations
|
||||
uses: crowdin/github-action@master
|
||||
@ -96,12 +107,6 @@ jobs:
|
||||
git diff-index --quiet HEAD || git commit -m "chore(i18n,curriculum): update translations"
|
||||
git push -u origin i18n-sync-curriculum -f
|
||||
|
||||
- name: Install Dependencies
|
||||
working-directory: ./tools
|
||||
run: |
|
||||
cd ./crowdin
|
||||
npm ci
|
||||
|
||||
# Generate PR - all languages should go ABOVE this. #
|
||||
- name: Create PR
|
||||
uses: ./tools/crowdin/actions/pr-creator
|
||||
|
16
.github/workflows/crowdin-i18n-docs.download.yml
vendored
16
.github/workflows/crowdin-i18n-docs.download.yml
vendored
@ -16,6 +16,12 @@ jobs:
|
||||
with:
|
||||
token: ${{ secrets.CROWDIN_CAMPERBOT_PAT }}
|
||||
|
||||
- name: Install Dependencies
|
||||
working-directory: ./tools
|
||||
run: |
|
||||
cd ./crowdin
|
||||
npm ci
|
||||
|
||||
##### Download Chinese #####
|
||||
- name: Crowdin Download Chinese Translations
|
||||
uses: crowdin/github-action@master
|
||||
@ -50,6 +56,10 @@ jobs:
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_DOCS }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }}
|
||||
|
||||
# Convert Simplified Chinese to Traditional #
|
||||
- name: Generate Translations
|
||||
uses: ./tools/crowdin/actions/convert-chinese
|
||||
|
||||
##### Download Portuguese#####
|
||||
- name: Crowdin Download Portuguese Translations
|
||||
uses: crowdin/github-action@master
|
||||
@ -130,12 +140,6 @@ jobs:
|
||||
git diff-index --quiet HEAD || git commit -m "chore(i18n,docs): update translations"
|
||||
git push -u origin i18n-sync-docs -f
|
||||
|
||||
- name: Install Dependencies
|
||||
working-directory: ./tools
|
||||
run: |
|
||||
cd ./crowdin
|
||||
npm ci
|
||||
|
||||
# Generate PR - all languages should go ABOVE this. #
|
||||
- name: Create PR
|
||||
uses: ./tools/crowdin/actions/pr-creator
|
||||
|
533
client/i18n/locales/chinese-traditional/intro.json
Normal file
533
client/i18n/locales/chinese-traditional/intro.json
Normal file
@ -0,0 +1,533 @@
|
||||
{
|
||||
"responsive-web-design": {
|
||||
"title": "响应式网页设计",
|
||||
"intro": [
|
||||
"在响应式网页设计认证中,你将学习开发者用来编写网页的语言:HTML(超文本标记语言)用于创建内容,CSS(级联样式表)用于样式设计。",
|
||||
"首先,你将通过编写一个展示猫咪图片的应用,学习 HTML 和 CSS 的基本知识。 然后,通过画企鹅来学习像 CSS 变量这样的现代技术,以及通过构建网页表单来学习无障碍的最佳实践。",
|
||||
"最后,你将学习使用 flexbox(弹性盒子)构建一个 Twitter 卡片,以及使用 CSS 网格构建复杂的博客布局,以此学习制作适应不同屏幕大小的网页。"
|
||||
],
|
||||
"blocks": {
|
||||
"basic-html-and-html5": {
|
||||
"title": "基础 HTML 和 HTML5",
|
||||
"intro": [
|
||||
"HTML 是一种标记语言,使用特殊的语法或标记来向浏览器描述网页的结构。HTML 元素由开始和结束标签构成,标签之间是文本内容。 不同的标签可以让文本内容以标题、段落、列表等形式展现。",
|
||||
"在这个课程中,你将通过编写一个展示猫咪图片的应用,学习最常见的 HTML 元素——它们可以用来构成任何网页。"
|
||||
]
|
||||
},
|
||||
"basic-css": {
|
||||
"title": "基础 CSS",
|
||||
"intro": [
|
||||
"CSS(级联样式表)告诉浏览器如何显示你在 HTML 中写入的文本和其他内容。你可以使用 CSS 控制 HTML 元素的颜色、字体、大小、间距等许多\b属性。",
|
||||
"现在你已经写好了猫图应用的基本结构,接下来我们用 CSS 给它加一些样式。"
|
||||
]
|
||||
},
|
||||
"applied-visual-design": {
|
||||
"title": "应用视觉设计",
|
||||
"intro": [
|
||||
"视觉设计结合了排版、色彩理论、图形、动画、页面布局等,以表达独特的信息。",
|
||||
"在这个课程中,你将学习如何将这些不同的视觉设计元素应用到网页上。"
|
||||
]
|
||||
},
|
||||
"applied-accessibility": {
|
||||
"title": "应用无障碍",
|
||||
"intro": [
|
||||
"在网页开发中,可访问性是指网页内容和用户界面可以被用户理解、浏览并与之交互。这里的用户包括有视觉障碍、听觉障碍或认知障碍的用户。",
|
||||
"在这个课程中,你将学习提升网站可访问性的最佳实践。"
|
||||
]
|
||||
},
|
||||
"responsive-web-design-principles": {
|
||||
"title": "响应式网页设计原则",
|
||||
"intro": [
|
||||
"人们可能通过形状和大小不同的设备来访问网页。通过响应式网页设计,你可以设计出能灵活适应不同屏幕大小、方向和分辨率的网页。",
|
||||
"在这个课程中,你将学习如何使用 CSS 让你的网页在不同设备上看起来都不错。"
|
||||
]
|
||||
},
|
||||
"css-flexbox": {
|
||||
"title": "CSS 弹性盒子",
|
||||
"intro": [
|
||||
"Flexbox(弹性盒子)是最新版本的 CSS(即 CSS3)中引入的一种强大且兼容性好的布局方法。使用 flexbox,我们可以很容易地处理好页面上的元素布局,并创建可以自动缩小和放大的动态用户界面。",
|
||||
"在这个课程中,你将通过构建一个 Twitter 卡片来学习 flexbox 和动态布局的基础知识。"
|
||||
]
|
||||
},
|
||||
"css-grid": {
|
||||
"title": "CSS 网格",
|
||||
"intro": [
|
||||
"CSS 网格是一个较新的标准,用于构建复杂的响应布局。它通过把 HTML 元素转换为具有行和列的网格容器,以便将子元素放置在所需要的位置。",
|
||||
"在这个课程中,你将通过构建不同的复杂布局(包括博客)来学习 CSS 网格的基础知识。"
|
||||
]
|
||||
},
|
||||
"responsive-web-design-projects": {
|
||||
"title": "响应式网页设计项目",
|
||||
"intro": [
|
||||
"是时候使用你新学到的技能了。通过构建这些项目,你将有机会应用之前学到的所有技巧、原则和概念:HTML、CSS、视觉设计、无障碍等等。",
|
||||
"完成下面的五个网页编程项目,获得响应式网页设计认证。"
|
||||
]
|
||||
},
|
||||
"basic-html-cat-photo-app": {
|
||||
"title": "基础 HTML 猫图应用",
|
||||
"intro": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"basic-css-cafe-menu": {
|
||||
"title": "基础 CSS 咖啡菜单",
|
||||
"intro": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"css-variables-skyline": {
|
||||
"title": "CSS 变量 Skyline",
|
||||
"intro": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"javascript-algorithms-and-data-structures": {
|
||||
"title": "JavaScript 算法和数据结构",
|
||||
"intro": [
|
||||
"HTML 和 CSS 控制页面的内容和样式,JavaScript 则用于页面交互。在 JavaScript 算法和数据结构认证中,你将学习 JavaScript 的基础知识,包括变量、 数组、 对象、 循环和函数。",
|
||||
"打好基础之后,你将会通过创建算法来操作字符串、进行阶乘运算甚至计算国际空间站的轨道来应用这些知识。",
|
||||
"在这个过程中,你还会学习两种重要的编程方式或模式:面向对象的编程(OOP)和函数式编程(FP)。"
|
||||
],
|
||||
"blocks": {
|
||||
"basic-javascript": {
|
||||
"title": "基础 JavaScript",
|
||||
"intro": [
|
||||
"JavaScript 是一种用于网页交互的脚本语言。它和 HTML 和 CSS 一样,是网站的核心技术之一。所有现代浏览器都支持 JavaScript。",
|
||||
"在这个课程中,你将学习JavaScript 中的基本编程概念。你将从数字和字符串等基本数据结构开始,然后学习使用数组、对象、函数、循环、if/else 语句等等。"
|
||||
]
|
||||
},
|
||||
"es6": {
|
||||
"title": "ES6",
|
||||
"intro": [
|
||||
"ECMAScript(ES)是 JavaScript 的标准。因为所有主流浏览器都遵循此规范,所以 ECMAScript 和 JavaScript 是可以互换的。",
|
||||
"截至目前你所学到的 JavaScript 大多是在 2009 年定稿的 ES5(ECMAScript5)。你仍然可以使用 ES5 编写程序。JavaScript 在不断迭代,每年都会发布新功能。",
|
||||
"2015 年发布的 ES6 为该语言增加了许多强大的新功能。在这个课程中,你将学习这些新功能,包括 <code>let</code>、<code>const</code>、箭头函数、类、promises 和模块。"
|
||||
]
|
||||
},
|
||||
"regular-expressions": {
|
||||
"title": "正则表达式",
|
||||
"intro": [
|
||||
"正则表达式,常常缩写为 “regex” 或 “regexp”,是帮助程序员匹配、搜索和替换文本的模式。正则表达式非常强大,但可能难以阅读,因为它们使用特殊字符来做更复杂更灵活的匹配。",
|
||||
"在这个课程中,你将学习如何使用特殊字符、捕获组、正向或负向先行断言以及其他技巧来匹配你想要的文本。"
|
||||
]
|
||||
},
|
||||
"debugging": {
|
||||
"title": "调试",
|
||||
"intro": [
|
||||
"调试是检查代码、发现并修复问题的过程。",
|
||||
"代码中的问题通常有三种形式:1)语法错误导致程序停止运行, 2)代码无法执行或具有意外行为导致运行时错误,3)代码有语义(逻辑)错误,没有实现原来的意图。",
|
||||
"在这个课程中,你将学习如何使用 JavaScript 控制台来调试程序,防止出现常见问题。"
|
||||
]
|
||||
},
|
||||
"basic-data-structures": {
|
||||
"title": "基础数据结构",
|
||||
"intro": [
|
||||
"我们可以通过多种方式存储和访问数据。你已经知道数组和对象了,它们都是常见的 JavaScript 数据结构。",
|
||||
"在基础数据结构课程中,你会更深入地了解数组和对象之间的差异,以及在不同情况下应该使用哪个。你还将学习到一些好用的 JS 方法,例如 <code>splice()</code>,以及使用 <code>Object.keys()</code> 来访问和操作数据。"
|
||||
]
|
||||
},
|
||||
"basic-algorithm-scripting": {
|
||||
"title": "基础算法",
|
||||
"intro": [
|
||||
"算法是描述如何处理某个问题的一系列步骤。",
|
||||
"要写一个有效的算法,你需要先将一个特定的问题分解为小的部分,并仔细思考如何用代码解决每个部分。",
|
||||
"在这个课程中,你将通过编写算法来实现诸如转换温度、处理复杂的二维数组等,来学习算法思维的基础知识。"
|
||||
]
|
||||
},
|
||||
"object-oriented-programming": {
|
||||
"title": "面向对象编程",
|
||||
"intro": [
|
||||
"OOP,即面向对象编程,是软件开发过程的主要方法之一。在 OOP 中,我们用对象和类来组织代码,以描述事物的特点以及它们可以做什么。",
|
||||
"在这个课程中,你将会学习 JavaScript 中面向对象编程的基本原则,例如 <code>this</code> 关键词、原型链、构造器和继承。"
|
||||
]
|
||||
},
|
||||
"functional-programming": {
|
||||
"title": "函数式编程",
|
||||
"intro": [
|
||||
"函数式编程是另一种软件开发方法。在函数式编程中,代码被组织成较小的基本的函数,可以结合起来构建复杂的程序。",
|
||||
"在这个课程中,你将学习函数式编程的核心概念,包括纯函数,如何避免突变,如何使用 <code>.map()</code> 和 <code>.filter()</code> 等方法编写更整洁的代码。"
|
||||
]
|
||||
},
|
||||
"intermediate-algorithm-scripting": {
|
||||
"title": "中级算法",
|
||||
"intro": [
|
||||
"现在你了解了算法的基础知识、面向对象编程以及函数式编程。接下来我们将进入中级算法挑战来测试你的技能。"
|
||||
]
|
||||
},
|
||||
"javascript-algorithms-and-data-structures-projects": {
|
||||
"title": "JavaScript 算法和数据结构项目",
|
||||
"intro": [
|
||||
"是时候用上你新学到的 JavaScript 技能了!接下来的项目和前面的算法挑战很相近,但是难度会更高。",
|
||||
"完成这 5 个 JavaScript 项目,以获得 JavaScript 算法和数据结构认证。"
|
||||
]
|
||||
},
|
||||
"basic-javascript-rpg-game": {
|
||||
"title": "基础 JavaScript RPG 游戏",
|
||||
"intro": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"intermediate-javascript-calorie-counter": {
|
||||
"title": "中级 JavaScript 卡路里计算器",
|
||||
"intro": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"functional-programming-spreadsheet": {
|
||||
"title": "函数式编程电子表格",
|
||||
"intro": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"front-end-libraries": {
|
||||
"title": "前端开发库",
|
||||
"intro": [
|
||||
"你已经熟悉了 HTML、CSS 和 JavaScript。现在学习行业中一些流行的前端库来提升你的技能吧。",
|
||||
"在前端库认证中,你将学习如何使用 Bootstrap 快速设置网站样式,以及如何在 CSS 样式中添加逻辑,并使用 Sass 对其进行扩展。",
|
||||
"稍后,你将建立一个购物车和其他应用程序,学习如何使用 React 和 Redux 创建强大的单页应用程序(SPAs)。"
|
||||
],
|
||||
"blocks": {
|
||||
"bootstrap": {
|
||||
"title": "Bootstrap",
|
||||
"intro": [
|
||||
"Bootstrap 一个是用于设计响应性网页和应用程序的前端框架。它对网页开发采用移动优先的方法,具有预定义的 CSS 样式和 class,以及一些 JavaScript 功能。",
|
||||
"在这个课程中,你将学习如何使用 Bootstrap 来建立响应式网页,并使用它的 class 来设置按钮、图像、表格、导航和其他常见元素的样式。"
|
||||
]
|
||||
},
|
||||
"jquery": {
|
||||
"title": "jQuery",
|
||||
"intro": [
|
||||
"jQuery 是开发者们最常用的 JavaScript 库之一。",
|
||||
"在 jQuery 于 2006 年发布时,各种常用浏览器处理 JavaScript 的方式都略有不同。jQuery 简化了编写客户端 JavaScript 的过程,并确保代码在所有浏览器中以同样的方式运行。",
|
||||
"在这个课程中,你将学习如何使用 jQuery 选择、移除、克隆和修改页面上的不同元素。"
|
||||
]
|
||||
},
|
||||
"sass": {
|
||||
"title": "SASS",
|
||||
"intro": [
|
||||
"Sass,英文全称为 “Syntactically Awesome StyleSheets”,是对 CSS 的扩展。它添加了一些 CSS 语法不具有的新特性。Sass 简化了 CSS,这让维护样式表变得更容易。",
|
||||
"在 Sass 课程中,你将学习如何将数据存储在变量中、嵌套 CSS、创建可重用的样式、为样式添加逻辑和循环等等。"
|
||||
]
|
||||
},
|
||||
"react": {
|
||||
"title": "React",
|
||||
"intro": [
|
||||
"React 是一个流行的 JavaScript 库,用于为网页或应用程序构建可重用的组件驱动的用户界面。",
|
||||
"React 将 HTML 与 JavaScript 结合在了一起,以此创建出一个新的标签语言 JSX。React 还使得管理整个应用程序的数据流变得更容易。",
|
||||
"在这个课程中,你将学习如何创建不同的 React 组件,以 state props 管理数据,以及使用不同的生命周期方法(例如 <code>componentDidMount</code>)和更多内容。"
|
||||
]
|
||||
},
|
||||
"redux": {
|
||||
"title": "Redux",
|
||||
"intro": [
|
||||
"随着应用程序规模和范围的扩大,管理共享数据变得更加困难。 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 在组件级别本地管理状态,以及在整个应用程序中管理状态。"
|
||||
]
|
||||
},
|
||||
"front-end-libraries-projects": {
|
||||
"title": "前端开发库项目",
|
||||
"intro": [
|
||||
"现在是时候应用你的前端开发库技术进行测试。用 Bootstrap、jQuery、Sass、React、和 Redux 构建 5 个项目,测试你到现在所学到的知识。",
|
||||
"完成全部 5 个项目,然后你会获得前端开发库认证。"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"data-visualization": {
|
||||
"title": "数据可视化",
|
||||
"intro": [
|
||||
"数据无处不在。但是,如果没有上下文,数据就没有多大意义。",
|
||||
"在数据可视化认证中,你会用 D3.js 库来创建表格、图表和地图,以展示不同的数据。",
|
||||
"你还会学习 JSON(JavaScript 对象),以及如何使用 API(应用程序接口)使用在线的数据。"
|
||||
],
|
||||
"blocks": {
|
||||
"data-visualization-with-d3": {
|
||||
"title": "用 D3 实现数据可视化",
|
||||
"intro": [
|
||||
"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 技术的基础知识。"
|
||||
]
|
||||
},
|
||||
"data-visualization-projects": {
|
||||
"title": "数据可视化项目",
|
||||
"intro": [
|
||||
"现在你学习了如何使用 D3 、 APIs 和 AJAX 技术,构建这 5 个数据可视化项目来测试你的技术吧。",
|
||||
"在这些项目中,你需要获取数据并解析数据集,然后使用 D3 创建不同的数据可视化。完成之后,你可以获得数据可视化认证。"
|
||||
]
|
||||
},
|
||||
"d3-dashboard": {
|
||||
"title": "D3 面板",
|
||||
"intro": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"apis-and-microservices": {
|
||||
"title": "APIs 和 微服务",
|
||||
"intro": [
|
||||
"在这之前,你只是在前端使用 JavaScript 来给页面添加交互、解决算法挑战,或构建一个 SP。但 JavaScript 也可以用于后端或者服务器来构建整个 web 应用程序。",
|
||||
"今天,构建应用软件的广受欢迎的方法之一是微服务,这些微服务是一种小型模块化的应用,能够共同形成一个更大的整体。",
|
||||
"在 API 和微服务认证中,你将学习如何使用 Node.js 和 npm(Node 包管理工具)来写后端。你还将使用 Express 框架构建 web 应用程序,并使用 MongoDB 和 Mongoose 库构建一个 People Finder 微服务。"
|
||||
],
|
||||
"blocks": {
|
||||
"managing-packages-with-npm": {
|
||||
"title": "使用 NPM 管理软件包",
|
||||
"intro": [
|
||||
"npm(Node 包管理工具)是一个命令行工具,用于安装、创建和分享为 Node.js 编写的 JavaScript 代码包。在 npm 上有许多开放源码软件包,所以在项目启动之前,需要一些时间来探索,这样你就不会最后重新创建轮子来处理像日期或从 API 获取数据这样的事项。",
|
||||
"在这个课程中,你将学习使用 npm 的基本知识,包括如何使用 <code>package.json</code> 和如何管理已安装的依赖项。"
|
||||
]
|
||||
},
|
||||
"basic-node-and-express": {
|
||||
"title": "Node 和 Express 基础",
|
||||
"intro": [
|
||||
"Node.js 是一个 JavaScript 运行时,它允许开发人员在 JavaScript 中写入后端(服务器侧)程序。Node.js 有几个内置的模块——小型、独立的程序——来帮助实现这一点,一些核心模块包括像服务器一样运作的 HTTP 和文件系统,一个读取和修改文件的模块。",
|
||||
"在上一组课程中你学到了怎么从 npm下载和管理软件包,这些软件包是较小模块的集合,可以帮助你打造更大更复杂的程序。",
|
||||
"Express 是一个轻量级的网页应用框架,是最受欢迎的 npm 软件包之一。 Express 提供精简的基本 web 应用程序功能,包括应用的路由。路由在用户访问一个端点如 <pre>/blog</pre> 时将用户导向到相应的页面。",
|
||||
"在这个课程中,你将学习 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 课程中,你将学习使用的基本知识,包括如何建立模型,保存、删除并在数据库中查找文档。"
|
||||
]
|
||||
},
|
||||
"apis-and-microservices-projects": {
|
||||
"title": "API 和微服务项目",
|
||||
"intro": [
|
||||
"你之前用过 API,但是现在你知道 npm、Node、Express、MongoDB 和 Mongoose,是时候创建应用 了。用你到现在所学的所有知识来创建 5 个不同的微服务,这些微服务是使用范围有限的小应用。",
|
||||
"在创建这些微服务后,你会有 5 个很酷的微服务 API,你可以向朋友、家人和潜在的雇主展示。同时,你也会获得 API 和微服务认证。"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-assurance": {
|
||||
"title": "质量保证",
|
||||
"intro": [
|
||||
"随着你的程序或网页应用程序变得更加复杂,你将想要测试它们,以确保新的更改不会破坏它们的原有功能。",
|
||||
"在质量保证认证中, 你将学习如何通过 Chai 测试,以确保你的应用程序能够按照你的期望运行。",
|
||||
"然后你将创建一个聊天应用程序来学习高级 Node 和 Express 概念。你还将使用 Pug 作为模板引擎,用于身份验证的 Passport 和 用于服务器和客户端之间实时通信的 Socket.io。"
|
||||
],
|
||||
"blocks": {
|
||||
"quality-assurance-and-testing-with-chai": {
|
||||
"title": "使用 Chai 进行质量保证和测试",
|
||||
"intro": [
|
||||
"Chai 是一个JavaScript测试库,帮助你确保程序能够在你更改代码后按照你的期望运行。",
|
||||
"使用 Chai,你可以写测试描述你的程序的要求,并查看你的程序是否符合这些要求。",
|
||||
"在这个课程中,你会了解测试 JavaScript 应用程序的断言、测试 API 和其他测试 JavaScript 应用的基础知识。"
|
||||
]
|
||||
},
|
||||
"advanced-node-and-express": {
|
||||
"title": "高级 Node 和 Express",
|
||||
"intro": [
|
||||
"现在是时候来使用高级 Node.js 和 Express.js 创建一个具有登录系统的聊天应用了。",
|
||||
"为了创建一个安全的登录系统,你需要学习验证,这是一个验证个人身份或者过程的的操作。",
|
||||
"在这个课程中,你将学习如何使用 Passport 管理身份验证,如何使用 Pug 创建可重用的模板以快速构建前端,以及如何使用 web sockets 在客户端和服务器之间进行实时通信。"
|
||||
]
|
||||
},
|
||||
"quality-assurance-projects": {
|
||||
"title": "质量保证项目",
|
||||
"intro": [
|
||||
"现在你对前端和后端都非常精通,是时候应用你所学到的所有技能和概念了。你将构建 5 个不同的 web 应用程序,并为每个应用程序编写测试,以确保它们正常工作并可以处理不同的情况。",
|
||||
"完成这 5 个质量保证项目后,你将获得一个新的认证,你可以在自己的作品集中展示这 5 个项目和认证。"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"scientific-computing-with-python": {
|
||||
"title": "Python 和科学计算",
|
||||
"intro": [
|
||||
"Python 是目前最火、最灵活的编程语言之一。你可以用它来做很多事,包括从基础算法到机器学习。",
|
||||
"在这个认证中,你会学习 Python 基础知识,例如变量、循环、条件和函数。然后你会马上很快学习到复杂数据结构、网络,关系数据库和数据可视化。"
|
||||
],
|
||||
"blocks": {
|
||||
"python-for-everybody": {
|
||||
"title": "通用 Python 课程",
|
||||
"intro": [
|
||||
"通用 Python 课程是一个讲解 Python 3 基础的系列免费视频课程。",
|
||||
"这些课程是 Dr. Charles Severance(Dr. Chuck)创建的。他是密歇根信息大学的实践教授,他教授各种技术课程,包括编程、数据库设计和 web 开发。"
|
||||
]
|
||||
},
|
||||
"scientific-computing-with-python-projects": {
|
||||
"title": "Python 与科学计算项目",
|
||||
"intro": [
|
||||
"是时候测试一下你的 Python 技术了。通过完成这些项目,你可以证明和展示自己已经掌握了 Python 基础知识,并能获得认证。"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"data-analysis-with-python": {
|
||||
"title": "Python 和数据分析",
|
||||
"intro": [
|
||||
"数据分析已经存在很长时间了。但是直到几年前,开发人员还是使用昂贵的闭源工具(如 Tableau)来做数据分析。如今,Python、SQL 和其他开放的库永远改变了数据分析领域。",
|
||||
"在这个认证中,你会学习使用 Python 做数据分析的基础知识。然后,你会学习怎么从 CSV、SQL 等数据源读取数据,并且怎么使用 Numpy、Pandas、Matplotlib 和 Seaborn 等库来处理和可视化数据。"
|
||||
],
|
||||
"blocks": {
|
||||
"data-analysis-with-python-course": {
|
||||
"title": "Python 和数据分析",
|
||||
"intro": [
|
||||
"在 Santiago Basulto 创建的这些综合视频课程中,你会学习整个数据分析的过程。你会从 CSV、SQL、Excel 读取数据,用 Numpy和 Pandas 来处理这些数据,以及使用 Matplotlib 和 Seaborn 来可视化数据。",
|
||||
"此外,你还可以通过完整的 Jupyter Notebook 课程和 Python 资料来刷新自己的编程技能。"
|
||||
]
|
||||
},
|
||||
"numpy": {
|
||||
"title": "Numpy",
|
||||
"intro": [
|
||||
"通过下方 Keith Galli 创建的视频课程学习 NumPy 库基础知识。",
|
||||
"在这个课程中,你将学习如何使用 NumPy 以及它与 Python 内置列表的区别。你还将学习如何使用 NumPy 编程,以及索引、调整形状、应用统计信息等等知识。"
|
||||
]
|
||||
},
|
||||
"data-analysis-with-python-projects": {
|
||||
"title": "Python 与数据分析",
|
||||
"intro": [
|
||||
"使用 Python 分析数据的方法很多。通过完成这些项目,你可以证明自己掌握了使用 Python 进行数据分析的基础知识。",
|
||||
"完成所有项目,即可获得 Python 与数据分析认证。"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"information-security": {
|
||||
"title": "信息安全",
|
||||
"intro": [
|
||||
"通过我们在线上的一切行为,我们的电子邮件地址、密码、电话号码等等大量敏感信息处于风险之中。",
|
||||
"通过信息安全认证,你将使用 HelmetJS 构建安全的 Web 应用程序,以学习信息安全的基础知识。",
|
||||
"你还将使用 Python 构建一个 TCP 客户端以及一个 Nmap 和端口扫描程序,从而学习渗透测试的基础知识。渗透测试是良好信息安全的重要组成部分。"
|
||||
],
|
||||
"blocks": {
|
||||
"information-security-with-helmetjs": {
|
||||
"title": "HelmetJS 与信息安全",
|
||||
"intro": [
|
||||
"这个课程的重点是 HelmetJS。HelmetJS 是一种用于基于 Express 的应用程序的中间件,可以自动设置 HTTP 标头。这样,它可以防止敏感信息被无意间在服务器和客户端之间传递。",
|
||||
"以下课程将帮助你了解如何保护你的网站免遭恶意攻击。"
|
||||
]
|
||||
},
|
||||
"python-for-penetration-testing": {
|
||||
"title": "Python 与渗透测试",
|
||||
"intro": [
|
||||
"这些视频课程教你使用 Python 进行渗透测试。渗透测试(penetration testing)也叫作 “pen test”,它是对系统的模拟攻击,以检查漏洞。",
|
||||
"在这个课程中,你将学习套接字、创建 TCP 服务器和客户端、构建 Nmap 扫描仪以及渗透测试人员日常使用的其他工具和技术。"
|
||||
]
|
||||
},
|
||||
"information-security-projects": {
|
||||
"title": "信息安全项目",
|
||||
"intro": [
|
||||
"现在是时候运用你的信息安全技能了。通过这些项目,你可以运用所学的信息安全技能、原理和概念。",
|
||||
"完成后,您将拥有大量的信息安全项目,并获得认证,你可以向朋友、家人和雇主炫耀的证书。"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"machine-learning-with-python": {
|
||||
"title": "Python 与机器学习",
|
||||
"intro": [
|
||||
"机器学习有许多实际应用程序,你可以在项目中或工作中使用它们。",
|
||||
"在这个认证中,你将使用 TensorFlow 框架构建多个神经网络,同时,你将探索更先进的技术,例如自然语言处理和强化学习。",
|
||||
"你还将学习神经网络,并了解深度、递归和卷积神经网络背后的原理。"
|
||||
],
|
||||
"blocks": {
|
||||
"tensorflow": {
|
||||
"title": "Tensorflow",
|
||||
"intro": [
|
||||
"TensorFlow 是一个开源框架,使机器学习和神经网络更易于使用。",
|
||||
"以下视频课程是由 Tim Ruscica 创建的,也叫作 “Tech With Tim”。这个课程将帮助你了解 TensorFlow 及它的一些强大功能。"
|
||||
]
|
||||
},
|
||||
"how-neural-networks-work": {
|
||||
"title": "神经网络如何工作",
|
||||
"intro": [
|
||||
"神经网络是如今我们所谓的人工智能的核心。但是从历史上看,它们一直很难理解,特别是对于机器学习领域的初学者来说。",
|
||||
"即使你刚开始学习神经网络,Brandon Rohrer 的这些视频课程也可以帮助你熟悉它的概念和它背后的数学知识。"
|
||||
]
|
||||
},
|
||||
"machine-learning-with-python-projects": {
|
||||
"title": "Python 与机器学习项目",
|
||||
"intro": [
|
||||
"机器学习有许多实际应用。通过完成这些免费且具有挑战性的编程项目,你可以证明自己掌握了机器学习基础知识,并获得认证。"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"coding-interview-prep": {
|
||||
"title": "面试攻略",
|
||||
"intro": [
|
||||
"如果你正在寻找免费的编程训练来帮你为下一个工作面试做准备,我们已经帮你准备好了。",
|
||||
"这一部分包含了大量编程挑战,可以测试你的算法、数据结构和数学知识。这里还有一些你可以在家慢慢做的项目,用于提升你的技术,或者丰富你的作品集。"
|
||||
],
|
||||
"blocks": {
|
||||
"algorithms": {
|
||||
"title": "算法",
|
||||
"intro": [
|
||||
"这些免费的编程练习将教你一些现实生活中可能会遇到的常见算法。它们是提高你的逻辑和编程技能的绝佳机会。",
|
||||
"这些算法经常在工作面试中被用来测试候选人的技能。我们将为你提供简洁明了的解释,说明不同算法是如何运行的,以便你为每道算法题目编写解决方案。"
|
||||
]
|
||||
},
|
||||
"data-structures": {
|
||||
"title": "数据结构",
|
||||
"intro": [
|
||||
"这些免费的编程课程旨在帮助你处理可能你还不太熟悉的大型的、复杂的数据结构。",
|
||||
"通过下面的课程,你将学习不同类型的数据结构,并通过算法来增强你对它们的理解。"
|
||||
]
|
||||
},
|
||||
"take-home-projects": {
|
||||
"title": "私人项目",
|
||||
"intro": [
|
||||
"人们在编程面试的时候通常都是很紧张的。有时求职者会拿到一个带回家的项目,在面试之外完成它。这种类型的面试通常需要求职者做大量工作,但对于雇主来说,这是查看你在工作中表现如何的好方法。",
|
||||
"通过下方的额外的编程项目,进行更多练习。慢慢来,做得好一点,然后将它们放在你的简历或作品集中,以向潜在的雇主展示。"
|
||||
]
|
||||
},
|
||||
"rosetta-code": {
|
||||
"title": "罗塞塔代码",
|
||||
"intro": [
|
||||
"通过完成经典的罗塞塔代码库中的这些免费编程任务来提升你的创造性问题解决能力。",
|
||||
"这些挑战可能很困难,但是它们会将进一步提升你的算法逻辑。"
|
||||
]
|
||||
},
|
||||
"project-euler": {
|
||||
"title": "欧拉计划",
|
||||
"intro": [
|
||||
"完成下方来自欧拉计划的编程挑战,这将强化你的算法和数学知识。",
|
||||
"这些问题的难度很大,对于许多人来说,这是一个归纳性学习的过程。也就是说,通过解决一个问题,你将接触到一个新概念,然后你可以解决自己以前无法解决的问题。你能完成全部挑战吗?"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"misc-text": {
|
||||
"certification": "{{cert}} 认证",
|
||||
"browse-other": "浏览我们的其他免费认证\n(我们建议你按顺序学习)",
|
||||
"courses": "课程",
|
||||
"expand": "展开",
|
||||
"collapse": "折叠"
|
||||
}
|
||||
}
|
17
client/i18n/locales/chinese-traditional/links.json
Normal file
17
client/i18n/locales/chinese-traditional/links.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"help-translate-url": "https://contribute.freecodecamp.org/#/i18n/chinese/how-to-translate-files",
|
||||
"footer": {
|
||||
"about-url": "https://chinese.freecodecamp.org/news/about/",
|
||||
"shop-url": "https://www.freecodecamp.org/shop/",
|
||||
"support-url": "https://chinese.freecodecamp.org/news/support/",
|
||||
"sponsors-url": "https://www.freecodecamp.org/news/sponsors/",
|
||||
"honesty-url": "https://chinese.freecodecamp.org/news/academic-honesty-policy/",
|
||||
"coc-url": "https://chinese.freecodecamp.org/news/code-of-conduct/",
|
||||
"privacy-url": "https://www.freecodecamp.org/news/privacy-policy/",
|
||||
"tos-url": "https://www.freecodecamp.org/news/terms-of-service/",
|
||||
"copyright-url": "https://www.freecodecamp.org/news/copyright-policy/"
|
||||
},
|
||||
"donate": {
|
||||
"other-ways-url": "https://chinese.freecodecamp.org/news/how-to-donate-to-free-code-camp/"
|
||||
}
|
||||
}
|
27
client/i18n/locales/chinese-traditional/meta-tags.json
Normal file
27
client/i18n/locales/chinese-traditional/meta-tags.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"title": "免费学习编程 - Python、JavaScript、Java、Git 等",
|
||||
"description": "freeCodeCamp 是一个免费学习编程的开发者社区,涵盖 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等,还有活跃的技术论坛和丰富的社区活动,在你学习编程和找工作时为你提供建议和帮助。",
|
||||
"social-description": "免费学习编程",
|
||||
"keywords": [
|
||||
"freecodecamp",
|
||||
"编程",
|
||||
"前端",
|
||||
"后端",
|
||||
"程序员",
|
||||
"python",
|
||||
"javascript",
|
||||
"git",
|
||||
"aws",
|
||||
"json",
|
||||
"html",
|
||||
"css",
|
||||
"bootstrap",
|
||||
"react",
|
||||
"vue",
|
||||
"网站",
|
||||
"web",
|
||||
"开发",
|
||||
"课程"
|
||||
],
|
||||
"youre-unsubscribed": "你已取消订阅"
|
||||
}
|
819
client/i18n/locales/chinese-traditional/motivation.json
Normal file
819
client/i18n/locales/chinese-traditional/motivation.json
Normal file
@ -0,0 +1,819 @@
|
||||
{
|
||||
"compliments": [
|
||||
"Over the top!",
|
||||
"Down the rabbit hole we go!",
|
||||
"Bring that rain!",
|
||||
"Target acquired.",
|
||||
"Feel that need for speed!",
|
||||
"You've got guts!",
|
||||
"We have liftoff!",
|
||||
"To infinity and beyond!",
|
||||
"Encore!",
|
||||
"Onward!",
|
||||
"Challenge destroyed!",
|
||||
"It's on like Donkey Kong!",
|
||||
"Power level? It's over 9000!",
|
||||
"Coding spree!",
|
||||
"Code long and prosper.",
|
||||
"The crowd goes wild!",
|
||||
"One for the Guinness book!",
|
||||
"Flawless victory!",
|
||||
"Most efficient!",
|
||||
"You've got the touch!",
|
||||
"You're on fire!",
|
||||
"The town is now red!",
|
||||
"To the nines!",
|
||||
"To the Batmobile!",
|
||||
"Pull out all the stops!",
|
||||
"You're a wizard, Harry!",
|
||||
"You're an all-star!",
|
||||
"Way to go!",
|
||||
"Outta sight!",
|
||||
"You're crushing it!",
|
||||
"What sorcery is this?",
|
||||
"The world rejoices!",
|
||||
"That's the way it's done!",
|
||||
"You rock!",
|
||||
"Woo-hoo!",
|
||||
"We knew you could do it!",
|
||||
"Hyper Combo Finish!",
|
||||
"Nothing but net!",
|
||||
"Boom-shakalaka!",
|
||||
"You're a shooting star!",
|
||||
"You're unstoppable!",
|
||||
"Way cool!",
|
||||
"Walk on that sunshine!",
|
||||
"Keep on trucking!",
|
||||
"Off the charts!",
|
||||
"There is no spoon!",
|
||||
"Cranked it up to 11!",
|
||||
"Escape velocity reached!",
|
||||
"You make this look easy!",
|
||||
"Passed with flying colors!",
|
||||
"You've got this!",
|
||||
"Happy, happy, joy, joy!",
|
||||
"Tomorrow, the world!",
|
||||
"Your powers combined!",
|
||||
"It's alive. It's alive!",
|
||||
"Sonic Boom!",
|
||||
"Here's looking at you, Code!",
|
||||
"Ride like the wind!",
|
||||
"Legen - wait for it - dary!",
|
||||
"Ludicrous Speed! Go!",
|
||||
"Most triumphant!",
|
||||
"One loop to rule them all!",
|
||||
"By the power of Grayskull!",
|
||||
"You did it!",
|
||||
"Storm that castle!",
|
||||
"Face-melting guitar solo!",
|
||||
"Checkmate!",
|
||||
"Bodacious!",
|
||||
"Tubular!",
|
||||
"You're outta sight!",
|
||||
"Keep calm and code on!",
|
||||
"Even sad panda smiles!",
|
||||
"Even grumpy cat approves!",
|
||||
"Kool Aid Man says oh yeah!",
|
||||
"Bullseye!",
|
||||
"Far out!",
|
||||
"You're heating up!",
|
||||
"Standing ovation!",
|
||||
"Nice one!",
|
||||
"All right!",
|
||||
"Hasta la vista, challenge!",
|
||||
"Terminated.",
|
||||
"Off the hook!",
|
||||
"Thundercats, Hooo!",
|
||||
"Shiver me timbers!",
|
||||
"Raise the roof!",
|
||||
"Bingo!",
|
||||
"Even honeybadger cares!",
|
||||
"Helm, Warp Nine. Engage!",
|
||||
"Gotta code 'em all!",
|
||||
"Spool up the FTL drive!",
|
||||
"Cool beans!",
|
||||
"They're in another castle.",
|
||||
"Power UP!",
|
||||
"Pikachu chooses you!",
|
||||
"I gotta have more cowbell.",
|
||||
"Gotta go fast!",
|
||||
"Yipee!",
|
||||
"Cowabunga!",
|
||||
"Moon Prism Power!",
|
||||
"Plus Ultra!"
|
||||
],
|
||||
"motivationalQuotes": [
|
||||
{
|
||||
"quote": "Whatever you are, be a good one.",
|
||||
"author": "Abraham Lincoln"
|
||||
},
|
||||
{
|
||||
"quote": "A change in perspective is worth 80 IQ points.",
|
||||
"author": "Alan Kay"
|
||||
},
|
||||
{
|
||||
"quote": "The best way to predict the future is to invent it.",
|
||||
"author": "Alan Kay"
|
||||
},
|
||||
{
|
||||
"quote": "The future is not laid out on a track. It is something that we can decide, and to the extent that we do not violate any known laws of the universe, we can probably make it work the way that we want to.",
|
||||
"author": "Alan Kay"
|
||||
},
|
||||
{
|
||||
"quote": "We can only see a short distance ahead, but we can see plenty there that needs to be done.",
|
||||
"author": "Alan Turing"
|
||||
},
|
||||
{
|
||||
"quote": "In the depth of winter, I finally learned that within me there lay an invincible summer.",
|
||||
"author": "Albert Camus"
|
||||
},
|
||||
{
|
||||
"quote": "A person who never made a mistake never tried anything new.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "Creativity is intelligence having fun.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "I have no special talents. I am only passionately curious.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "Life is like riding a bicycle. To keep your balance, you must keep moving.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "Make everything as simple as possible, but not simpler.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "Never memorize something that you can look up.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "Once we accept our limits, we go beyond them.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "Play is the highest form of research.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "We cannot solve our problems with the same thinking we used when we created them.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "Wisdom is not a product of schooling but of the lifelong attempt to acquire it.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "Your imagination is your preview of life's coming attractions.",
|
||||
"author": "Albert Einstein"
|
||||
},
|
||||
{
|
||||
"quote": "There is only one corner of the universe you can be certain of improving, and that's your own self.",
|
||||
"author": "Aldous Huxley"
|
||||
},
|
||||
{
|
||||
"quote": "The most common way people give up their power is by thinking they don't have any.",
|
||||
"author": "Alice Walker"
|
||||
},
|
||||
{
|
||||
"quote": "Follow your inner moonlight. Don't hide the madness.",
|
||||
"author": "Allen Ginsberg"
|
||||
},
|
||||
{
|
||||
"quote": "The most difficult thing is the decision to act. The rest is merely tenacity.",
|
||||
"author": "Amelia Earhart"
|
||||
},
|
||||
{
|
||||
"quote": "Life shrinks or expands in proportion with one's courage.",
|
||||
"author": "Anaïs Nin"
|
||||
},
|
||||
{
|
||||
"quote": "Weeks of programming can save you hours of planning.",
|
||||
"author": "Unknown"
|
||||
},
|
||||
{
|
||||
"quote": "Quality is not an act, it is a habit.",
|
||||
"author": "Aristotle"
|
||||
},
|
||||
{
|
||||
"quote": "Start where you are. Use what you have. Do what you can.",
|
||||
"author": "Arthur Ashe"
|
||||
},
|
||||
{
|
||||
"quote": "Nothing is impossible, the word itself says \"I'm possible\"!",
|
||||
"author": "Audrey Hepburn"
|
||||
},
|
||||
{
|
||||
"quote": "Every strike brings me closer to the next home run.",
|
||||
"author": "Babe Ruth"
|
||||
},
|
||||
{
|
||||
"quote": "By failing to prepare, you are preparing to fail.",
|
||||
"author": "Benjamin Franklin"
|
||||
},
|
||||
{
|
||||
"quote": "Tell me and I forget. Teach me and I remember. Involve me and I learn.",
|
||||
"author": "Benjamin Franklin"
|
||||
},
|
||||
{
|
||||
"quote": "Well done is better than well said.",
|
||||
"author": "Benjamin Franklin"
|
||||
},
|
||||
{
|
||||
"quote": "There are no short cuts to any place worth going.",
|
||||
"author": "Beverly Sills"
|
||||
},
|
||||
{
|
||||
"quote": "Controlling complexity is the essence of computer programming.",
|
||||
"author": "Brian Kernighan"
|
||||
},
|
||||
{
|
||||
"quote": "I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.",
|
||||
"author": "Bruce Lee"
|
||||
},
|
||||
{
|
||||
"quote": "There are far, far better things ahead than any we leave behind.",
|
||||
"author": "C.S. Lewis"
|
||||
},
|
||||
{
|
||||
"quote": "We are what we believe we are.",
|
||||
"author": "C.S. Lewis"
|
||||
},
|
||||
{
|
||||
"quote": "With the possible exception of the equator, everything begins somewhere.",
|
||||
"author": "C.S. Lewis"
|
||||
},
|
||||
{
|
||||
"quote": "You are never too old to set another goal, or to dream a new dream.",
|
||||
"author": "C.S. Lewis"
|
||||
},
|
||||
{
|
||||
"quote": "Somewhere, something incredible is waiting to be known.",
|
||||
"author": "Carl Sagan"
|
||||
},
|
||||
{
|
||||
"quote": "If you're not making mistakes, then you're not making decisions.",
|
||||
"author": "Catherine Cook"
|
||||
},
|
||||
{
|
||||
"quote": "Find what you love and let it kill you.",
|
||||
"author": "Charles Bukowski"
|
||||
},
|
||||
{
|
||||
"quote": "What matters most is how well you walk through the fire.",
|
||||
"author": "Charles Bukowski"
|
||||
},
|
||||
{
|
||||
"quote": "It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change.",
|
||||
"author": "Charles Darwin"
|
||||
},
|
||||
{
|
||||
"quote": "Life is 10% what happens to you and 90% how you react to it.",
|
||||
"author": "Charles R. Swindoll"
|
||||
},
|
||||
{
|
||||
"quote": "You will do foolish things, but do them with enthusiasm.",
|
||||
"author": "Colette"
|
||||
},
|
||||
{
|
||||
"quote": "It does not matter how slowly you go as long as you do not stop.",
|
||||
"author": "Confucius"
|
||||
},
|
||||
{
|
||||
"quote": "Real knowledge is to know the extent of one's ignorance.",
|
||||
"author": "Confucius"
|
||||
},
|
||||
{
|
||||
"quote": "The past cannot be changed. The future is yet in your power.",
|
||||
"author": "Confucius"
|
||||
},
|
||||
{
|
||||
"quote": "Looking at code you wrote more than two weeks ago is like looking at code you are seeing for the first time.",
|
||||
"author": "Dan Hurvitz"
|
||||
},
|
||||
{
|
||||
"quote": "Someday is not a day of the week.",
|
||||
"author": "Denise Brennan-Nelson"
|
||||
},
|
||||
{
|
||||
"quote": "UNIX is simple. It just takes a genius to understand its simplicity.",
|
||||
"author": "Dennis Ritchie"
|
||||
},
|
||||
{
|
||||
"quote": "Computers are good at following instructions, but not at reading your mind.",
|
||||
"author": "Donald Knuth"
|
||||
},
|
||||
{
|
||||
"quote": "A good programmer is someone who always looks both ways before crossing a one-way street.",
|
||||
"author": "Doug Linder"
|
||||
},
|
||||
{
|
||||
"quote": "Tough times never last, but tough people do.",
|
||||
"author": "Dr. Robert Schuller"
|
||||
},
|
||||
{
|
||||
"quote": "If things start happening, don't worry, don't stew, just go right along and you'll start happening too.",
|
||||
"author": "Dr. Seuss"
|
||||
},
|
||||
{
|
||||
"quote": "Do not go gentle into that good night. Rage, rage against the dying of the light.",
|
||||
"author": "Dylan Thomas"
|
||||
},
|
||||
{
|
||||
"quote": "The question of whether computers can think is like the question of whether submarines can swim.",
|
||||
"author": "E.W. Dijkstra"
|
||||
},
|
||||
{
|
||||
"quote": "Any code of your own that you haven't looked at for six or more months might as well have been written by someone else.",
|
||||
"author": "Eagleson's Law"
|
||||
},
|
||||
{
|
||||
"quote": "Do one thing every day that scares you.",
|
||||
"author": "Eleanor Roosevelt"
|
||||
},
|
||||
{
|
||||
"quote": "With the new day comes new strength and new thoughts.",
|
||||
"author": "Eleanor Roosevelt"
|
||||
},
|
||||
{
|
||||
"quote": "You must do the things you think you cannot do.",
|
||||
"author": "Eleanor Roosevelt"
|
||||
},
|
||||
{
|
||||
"quote": "Light tomorrow with today.",
|
||||
"author": "Elizabeth Barrett Browning"
|
||||
},
|
||||
{
|
||||
"quote": "Forever is composed of nows.",
|
||||
"author": "Emily Dickinson"
|
||||
},
|
||||
{
|
||||
"quote": "Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.",
|
||||
"author": "Eric Raymond"
|
||||
},
|
||||
{
|
||||
"quote": "If you don't risk anything, you risk even more.",
|
||||
"author": "Erica Jong"
|
||||
},
|
||||
{
|
||||
"quote": "The world breaks everyone, and afterward, many are strong at the broken places.",
|
||||
"author": "Ernest Hemingway"
|
||||
},
|
||||
{
|
||||
"quote": "There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self.",
|
||||
"author": "Ernest Hemingway"
|
||||
},
|
||||
{
|
||||
"quote": "Never confuse a single defeat with a final defeat.",
|
||||
"author": "F. Scott Fitzgerald"
|
||||
},
|
||||
{
|
||||
"quote": "I attribute my success to this - I never gave or took any excuse.",
|
||||
"author": "Florence Nightingale"
|
||||
},
|
||||
{
|
||||
"quote": "The best revenge is massive success.",
|
||||
"author": "Frank Sinatra"
|
||||
},
|
||||
{
|
||||
"quote": "The only limit to our realization of tomorrow, will be our doubts of today.",
|
||||
"author": "Franklin D. Roosevelt"
|
||||
},
|
||||
{
|
||||
"quote": "Right or wrong, it's very pleasant to break something from time to time.",
|
||||
"author": "Fyodor Dostoevsky"
|
||||
},
|
||||
{
|
||||
"quote": "The harder I work, the luckier I get.",
|
||||
"author": "Gary Player"
|
||||
},
|
||||
{
|
||||
"quote": "Giving up is the only sure way to fail.",
|
||||
"author": "Gena Showalter"
|
||||
},
|
||||
{
|
||||
"quote": "The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-lined room with armed guards.",
|
||||
"author": "Gene Spafford"
|
||||
},
|
||||
{
|
||||
"quote": "A life spent making mistakes is not only more honorable, but more useful than a life spent doing nothing.",
|
||||
"author": "George Bernard Shaw"
|
||||
},
|
||||
{
|
||||
"quote": "First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack.",
|
||||
"author": "George Carrette"
|
||||
},
|
||||
{
|
||||
"quote": "Discovering the unexpected is more important than confirming the known.",
|
||||
"author": "George Box"
|
||||
},
|
||||
{
|
||||
"quote": "We only see what we know.",
|
||||
"author": "Goethe"
|
||||
},
|
||||
{
|
||||
"quote": "Without hard work, nothing grows but weeds.",
|
||||
"author": "Gordon B. Hinckley"
|
||||
},
|
||||
{
|
||||
"quote": "The function of good software is to make the complex appear to be simple.",
|
||||
"author": "Grady Booch"
|
||||
},
|
||||
{
|
||||
"quote": "When you know that you're capable of dealing with whatever comes, you have the only security the world has to offer.",
|
||||
"author": "Harry Browne"
|
||||
},
|
||||
{
|
||||
"quote": "Pain is inevitable. Suffering is optional.",
|
||||
"author": "Haruki Murakami"
|
||||
},
|
||||
{
|
||||
"quote": "Optimism is the faith that leads to achievement. Nothing can be done without hope and confidence.",
|
||||
"author": "Helen Keller"
|
||||
},
|
||||
{
|
||||
"quote": "The price of anything is the amount of life you exchange for it.",
|
||||
"author": "Henry David Thoreau"
|
||||
},
|
||||
{
|
||||
"quote": "Whether you think you can or think you can't, you're right.",
|
||||
"author": "Henry Ford"
|
||||
},
|
||||
{
|
||||
"quote": "The most exciting phrase to hear in science, the one that heralds discoveries, is not 'Eureka!' but 'Now that's funny…'",
|
||||
"author": "Isaac Asimov"
|
||||
},
|
||||
{
|
||||
"quote": "We are all failures. At least the best of us are.",
|
||||
"author": "J.M. Barrie"
|
||||
},
|
||||
{
|
||||
"quote": "You can't wait for inspiration. You have to go after it with a club.",
|
||||
"author": "Jack London"
|
||||
},
|
||||
{
|
||||
"quote": "Don't wish it were easier, wish you were better.",
|
||||
"author": "Jim Rohn"
|
||||
},
|
||||
{
|
||||
"quote": "By seeking and blundering we learn.",
|
||||
"author": "Johann Wolfgang von Goethe"
|
||||
},
|
||||
{
|
||||
"quote": "Knowing is not enough; we must apply. Wishing is not enough; we must do.",
|
||||
"author": "Johann Wolfgang von Goethe"
|
||||
},
|
||||
{
|
||||
"quote": "We first make our habits, then our habits make us.",
|
||||
"author": "John Dryden"
|
||||
},
|
||||
{
|
||||
"quote": "The power of imagination makes us infinite.",
|
||||
"author": "John Muir"
|
||||
},
|
||||
{
|
||||
"quote": "May you live every day of your life.",
|
||||
"author": "Jonathan Swift"
|
||||
},
|
||||
{
|
||||
"quote": "Perseverance is failing 19 times and succeeding the 20th.",
|
||||
"author": "Julie Andrews"
|
||||
},
|
||||
{
|
||||
"quote": "The work of today is the history of tomorrow, and we are its makers.",
|
||||
"author": "Juliette Gordon Low"
|
||||
},
|
||||
{
|
||||
"quote": "If you reveal your secrets to the wind, you should not blame the wind for revealing them to the trees.",
|
||||
"author": "Kahlil Gibran"
|
||||
},
|
||||
{
|
||||
"quote": "Optimism is an occupational hazard of programming; feedback is the treatment.",
|
||||
"author": "Kent Beck"
|
||||
},
|
||||
{
|
||||
"quote": "Opportunity does not knock, it presents itself when you beat down the door.",
|
||||
"author": "Kyle Chandler"
|
||||
},
|
||||
{
|
||||
"quote": "To iterate is human, to recurse divine.",
|
||||
"author": "Peter Deutsch"
|
||||
},
|
||||
{
|
||||
"quote": "A good traveler has no fixed plans and is not intent on arriving.",
|
||||
"author": "Lao Tzu"
|
||||
},
|
||||
{
|
||||
"quote": "An ant on the move does more than a dozing ox.",
|
||||
"author": "Lao Tzu"
|
||||
},
|
||||
{
|
||||
"quote": "Do the difficult things while they are easy and do the great things while they are small. A journey of a thousand miles must begin with a single step.",
|
||||
"author": "Lao Tzu"
|
||||
},
|
||||
{
|
||||
"quote": "That's the thing about people who think they hate computers. What they really hate is lousy programmers.",
|
||||
"author": "Larry Niven"
|
||||
},
|
||||
{
|
||||
"quote": "It had long since come to my attention that people of accomplishment rarely sat back and let things happen to them. They went out and happened to things.",
|
||||
"author": "Leonardo da Vinci"
|
||||
},
|
||||
{
|
||||
"quote": "If you're any good at all, you know you can be better.",
|
||||
"author": "Lindsay Buckingham"
|
||||
},
|
||||
{
|
||||
"quote": "If people never did silly things, nothing intelligent would ever get done.",
|
||||
"author": "Ludwig Wittgenstein"
|
||||
},
|
||||
{
|
||||
"quote": "You only live once, but if you do it right, once is enough.",
|
||||
"author": "Mae West"
|
||||
},
|
||||
{
|
||||
"quote": "Live as if you were to die tomorrow. Learn as if you were to live forever.",
|
||||
"author": "Mahatma Gandhi"
|
||||
},
|
||||
{
|
||||
"quote": "Strength does not come from physical capacity. It comes from an indomitable will.",
|
||||
"author": "Mahatma Gandhi"
|
||||
},
|
||||
{
|
||||
"quote": "One person's 'paranoia' is another person's 'engineering redundancy'.",
|
||||
"author": "Marcus J. Ranum"
|
||||
},
|
||||
{
|
||||
"quote": "Nothing in life is to be feared, it is only to be understood. Now is the time to understand more, so that we may fear less.",
|
||||
"author": "Marie Curie"
|
||||
},
|
||||
{
|
||||
"quote": "If you have everything under control, you're not moving fast enough.",
|
||||
"author": "Mario Andretti"
|
||||
},
|
||||
{
|
||||
"quote": "Education: the path from cocky ignorance to miserable uncertainty.",
|
||||
"author": "Mark Twain"
|
||||
},
|
||||
{
|
||||
"quote": "It ain't what you don't know that gets you into trouble. It's what you know for sure that just ain't so.",
|
||||
"author": "Mark Twain"
|
||||
},
|
||||
{
|
||||
"quote": "The secret of getting ahead is getting started.",
|
||||
"author": "Mark Twain"
|
||||
},
|
||||
{
|
||||
"quote": "The two most important days in your life are the day you are born and the day you find out why.",
|
||||
"author": "Mark Twain"
|
||||
},
|
||||
{
|
||||
"quote": "Twenty years from now you will be more disappointed by the things that you didn't do than by the ones you did do. So throw off the bowlines. Sail away from the safe harbor. Catch the trade winds in your sails.",
|
||||
"author": "Mark Twain"
|
||||
},
|
||||
{
|
||||
"quote": "Any fool can write code that a computer can understand. Good programmers write code that humans can understand.",
|
||||
"author": "Martin Fowler"
|
||||
},
|
||||
{
|
||||
"quote": "I know, somehow, that only when it is dark enough can you see the stars.",
|
||||
"author": "Martin Luther King Jr."
|
||||
},
|
||||
{
|
||||
"quote": "It is never too late to be what you might have been.",
|
||||
"author": "Mary Anne Evans"
|
||||
},
|
||||
{
|
||||
"quote": "Nothing will work unless you do.",
|
||||
"author": "Maya Angelou"
|
||||
},
|
||||
{
|
||||
"quote": "We delight in the beauty of the butterfly, but rarely admit the changes it has gone through to achieve that beauty.",
|
||||
"author": "Maya Angelou"
|
||||
},
|
||||
{
|
||||
"quote": "We may encounter many defeats, but we must not be defeated.",
|
||||
"author": "Maya Angelou"
|
||||
},
|
||||
{
|
||||
"quote": "Everybody has talent, but ability takes hard work.",
|
||||
"author": "Michael Jordan"
|
||||
},
|
||||
{
|
||||
"quote": "I've missed more than 9,000 shots during my career. I've lost almost 300 games. 26 times, I've been trusted to take the game winning shot and missed. I've failed over and over and over again in my life. And that is why I succeed.",
|
||||
"author": "Michael Jordan"
|
||||
},
|
||||
{
|
||||
"quote": "Impossible is just a big word thrown around by small men who find it easier to live in the world they've been given than to explore the power they have to change it. Impossible is not a fact. It's an opinion. Impossible is not a declaration. It's a dare. Impossible is potential. Impossible is temporary. Impossible is nothing.",
|
||||
"author": "Muhammad Ali"
|
||||
},
|
||||
{
|
||||
"quote": "A winner is a dreamer who never gives up.",
|
||||
"author": "Nelson Mandela"
|
||||
},
|
||||
{
|
||||
"quote": "It always seems impossible until it's done.",
|
||||
"author": "Nelson Mandela"
|
||||
},
|
||||
{
|
||||
"quote": "Failure will never overtake me if my determination to succeed is strong enough.",
|
||||
"author": "Og Mandino"
|
||||
},
|
||||
{
|
||||
"quote": "I am not young enough to know everything.",
|
||||
"author": "Oscar Wilde"
|
||||
},
|
||||
{
|
||||
"quote": "There is only one thing that makes a dream impossible to achieve: the fear of failure.",
|
||||
"author": "Paulo Coelho"
|
||||
},
|
||||
{
|
||||
"quote": "Never go to bed mad. Stay up and fight.",
|
||||
"author": "Phyllis Diller"
|
||||
},
|
||||
{
|
||||
"quote": "You can't cross the sea merely by standing and staring at the water.",
|
||||
"author": "Rabindranath Tagore"
|
||||
},
|
||||
{
|
||||
"quote": "The only person you are destined to become is the person you decide to be.",
|
||||
"author": "Ralph Waldo Emerson"
|
||||
},
|
||||
{
|
||||
"quote": "What you do speaks so loudly that I cannot hear what you say.",
|
||||
"author": "Ralph Waldo Emerson"
|
||||
},
|
||||
{
|
||||
"quote": "People who are crazy enough to think they can change the world, are the ones who do.",
|
||||
"author": "Rob Siltanen"
|
||||
},
|
||||
{
|
||||
"quote": "The best way out is always through.",
|
||||
"author": "Robert Frost"
|
||||
},
|
||||
{
|
||||
"quote": "Today's accomplishments were yesterday's impossibilities.",
|
||||
"author": "Robert H. Schuller"
|
||||
},
|
||||
{
|
||||
"quote": "Don't be satisfied with stories, how things have gone with others. Unfold your own myth.",
|
||||
"author": "Rumi"
|
||||
},
|
||||
{
|
||||
"quote": "Forget safety. Live where you fear to live. Destroy your reputation. Be notorious.",
|
||||
"author": "Rumi"
|
||||
},
|
||||
{
|
||||
"quote": "Sell your cleverness and buy bewilderment.",
|
||||
"author": "Rumi"
|
||||
},
|
||||
{
|
||||
"quote": "The cure for pain is in the pain.",
|
||||
"author": "Rumi"
|
||||
},
|
||||
{
|
||||
"quote": "Have no fear of perfection - you'll never reach it.",
|
||||
"author": "Salvador Dalí"
|
||||
},
|
||||
{
|
||||
"quote": "Don't watch the clock. Do what it does. Keep going.",
|
||||
"author": "Sam Levenson"
|
||||
},
|
||||
{
|
||||
"quote": "Ever Tried. Ever failed. No matter. Try again. Fail again. Fail better.",
|
||||
"author": "Samuel Beckett"
|
||||
},
|
||||
{
|
||||
"quote": "The more you know, the more you realize you know nothing.",
|
||||
"author": "Socrates"
|
||||
},
|
||||
{
|
||||
"quote": "The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.",
|
||||
"author": "Stephen Hawking"
|
||||
},
|
||||
{
|
||||
"quote": "The universe doesn't allow perfection.",
|
||||
"author": "Stephen Hawking"
|
||||
},
|
||||
{
|
||||
"quote": "Whether you want to uncover the secrets of the universe, or you want to pursue a career in the 21st century, basic computer programming is an essential skill to learn.",
|
||||
"author": "Stephen Hawking"
|
||||
},
|
||||
{
|
||||
"quote": "The scariest moment is always just before you start.",
|
||||
"author": "Stephen King"
|
||||
},
|
||||
{
|
||||
"quote": "You can, you should, and if you're brave enough to start, you will.",
|
||||
"author": "Stephen King"
|
||||
},
|
||||
{
|
||||
"quote": "Arise, Awake and Stop not until the goal is reached.",
|
||||
"author": "Swami Vivekananda"
|
||||
},
|
||||
{
|
||||
"quote": "It is said that your life flashes before your eyes just before you die. That is true, it's called Life.",
|
||||
"author": "Terry Pratchett"
|
||||
},
|
||||
{
|
||||
"quote": "Believe you can and you're halfway there.",
|
||||
"author": "Theodore Roosevelt"
|
||||
},
|
||||
{
|
||||
"quote": "I have not failed. I've just found 10,000 ways that won't work.",
|
||||
"author": "Thomas A. Edison"
|
||||
},
|
||||
{
|
||||
"quote": "Our greatest weakness lies in giving up. The most certain way to succeed is always to try just one more time.",
|
||||
"author": "Thomas A. Edison"
|
||||
},
|
||||
{
|
||||
"quote": "The harder the conflict, the more glorious the triumph.",
|
||||
"author": "Thomas Paine"
|
||||
},
|
||||
{
|
||||
"quote": "The Web as I envisaged it, we have not seen it yet. The future is still so much bigger than the past.",
|
||||
"author": "Tim Berners-Lee"
|
||||
},
|
||||
{
|
||||
"quote": "Failure is the condiment that gives success its flavor.",
|
||||
"author": "Truman Capote"
|
||||
},
|
||||
{
|
||||
"quote": "Those who says it cannot be done should not interrupt the person doing it.",
|
||||
"author": "Unknown"
|
||||
},
|
||||
{
|
||||
"quote": "Even if you fall on your face, you're still moving forward.",
|
||||
"author": "Victor Kiam"
|
||||
},
|
||||
{
|
||||
"quote": "It's not whether you get knocked down, it's whether you get up.",
|
||||
"author": "Vince Lombardi"
|
||||
},
|
||||
{
|
||||
"quote": "I dream my painting and I paint my dream.",
|
||||
"author": "Vincent van Gogh"
|
||||
},
|
||||
{
|
||||
"quote": "Let us cultivate our garden.",
|
||||
"author": "Voltaire"
|
||||
},
|
||||
{
|
||||
"quote": "Aim for the moon. If you miss, you may hit a star.",
|
||||
"author": "W. Clement Stone"
|
||||
},
|
||||
{
|
||||
"quote": "The way to get started is to quit talking and begin doing.",
|
||||
"author": "Walt Disney"
|
||||
},
|
||||
{
|
||||
"quote": "You miss 100% of the shots you don't take.",
|
||||
"author": "Wayne Gretzky"
|
||||
},
|
||||
{
|
||||
"quote": "Don't let yesterday take up too much of today.",
|
||||
"author": "Will Rogers"
|
||||
},
|
||||
{
|
||||
"quote": "Even if you're on the right track, you'll get run over if you just sit there.",
|
||||
"author": "Will Rogers"
|
||||
},
|
||||
{
|
||||
"quote": "Do not wait to strike till the iron is hot; but make it hot by striking.",
|
||||
"author": "William Butler Yeats"
|
||||
},
|
||||
{
|
||||
"quote": "You cannot swim for new horizons until you have courage to lose sight of the shore.",
|
||||
"author": "William Faulkner"
|
||||
},
|
||||
{
|
||||
"quote": "Be not afraid of greatness. Some are born great, some achieve greatness, and others have greatness thrust upon them.",
|
||||
"author": "William Shakespeare"
|
||||
},
|
||||
{
|
||||
"quote": "We know what we are, but not what we may be.",
|
||||
"author": "William Shakespeare"
|
||||
},
|
||||
{
|
||||
"quote": "In theory there is no difference between theory and practice. In practice there is.",
|
||||
"author": "Yogi Berra"
|
||||
},
|
||||
{
|
||||
"quote": "You can see a lot by just looking.",
|
||||
"author": "Yogi Berra"
|
||||
},
|
||||
{
|
||||
"quote": "There is no elevator to success, you have to take the stairs.",
|
||||
"author": "Zig Ziglar"
|
||||
},
|
||||
{
|
||||
"quote": "You don't have to be great to start, but you have to start to be great.",
|
||||
"author": "Zig Ziglar"
|
||||
}
|
||||
]
|
||||
}
|
556
client/i18n/locales/chinese-traditional/translations.json
Normal file
556
client/i18n/locales/chinese-traditional/translations.json
Normal file
@ -0,0 +1,556 @@
|
||||
{
|
||||
"buttons": {
|
||||
"logged-in-cta-btn": "开始学习(免费)",
|
||||
"logged-out-cta-btn": "登录以保存你的学习进度(免费)",
|
||||
"view-curriculum": "查看课程",
|
||||
"first-lesson": "访问第一个课程",
|
||||
"close": "关闭",
|
||||
"edit": "编辑",
|
||||
"show-code": "显示代码",
|
||||
"show-solution": "显示解决方案",
|
||||
"frontend": "前端",
|
||||
"backend": "后端",
|
||||
"view": "查看",
|
||||
"show-cert": "显示认证",
|
||||
"claim-cert": "申请认证",
|
||||
"save-progress": "保存进度",
|
||||
"accepted-honesty": "你已接受我们的《学术诚信条例》",
|
||||
"agree": "同意",
|
||||
"save-portfolio": "保存这个作品集项目",
|
||||
"remove-portfolio": "移除这个作品集项目",
|
||||
"add-portfolio": "增加一个新的作品集项目",
|
||||
"download-data": "下载你的数据",
|
||||
"public": "公开",
|
||||
"private": "仅自己可见",
|
||||
"off": "关闭",
|
||||
"on": "打开",
|
||||
"sign-in": "登录",
|
||||
"sign-out": "退出",
|
||||
"curriculum": "课程",
|
||||
"forum": "论坛",
|
||||
"radio": "电台",
|
||||
"profile": "个人资料",
|
||||
"news": "专栏",
|
||||
"donate": "捐款",
|
||||
"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": "在论坛发帖请求帮助",
|
||||
"cancel": "取消",
|
||||
"reset-lesson": "重置课程",
|
||||
"run": "运行",
|
||||
"run-test": "运行测试",
|
||||
"reset": "重置",
|
||||
"reset-code": "重置所有代码",
|
||||
"help": "帮助",
|
||||
"get-help": "获得帮助",
|
||||
"watch-video": "观看视频",
|
||||
"resubscribe": "你可以点击此处重新订阅",
|
||||
"click-here": "点击此处登陆",
|
||||
"save": "保存",
|
||||
"no-thanks": "不用,谢谢",
|
||||
"yes-please": "好的",
|
||||
"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": "媒体报道:",
|
||||
"testimonials": {
|
||||
"heading": "freeCodeCamp 校友感言:",
|
||||
"shawn": {
|
||||
"location": "<strong>Shawn Wang</strong> 新加坡",
|
||||
"occupation": "<strong>亚马逊</strong>软件工程师",
|
||||
"testimony": "\"转行挺困难的。我在学习了 freeCodeCamp 的数百个小时的免费课程之后,才对自己转行成为开发者有了信心。在一年内,我成为了一名年薪 6 位数的软件工程师。<strong>freeCodeCamp 改变了我的生活。</strong>\""
|
||||
},
|
||||
"sarah": {
|
||||
"location": "<strong>Sarah Chima</strong> 尼日利亚",
|
||||
"occupation": "<strong>ChatDesk</strong> 软件工程师",
|
||||
"testimony": "\"<strong>通过在 freeCodeCamp 学习,我转行成为一名软件工程师。</strong>它的精心设计的课程帮助我从一个完全的新手成长为非常自信的开发者。正是因为 freeCodeCamp 的学习资源和社区的帮助,我在一家很棒的公司获得了第一份开发工作。\""
|
||||
},
|
||||
"emma": {
|
||||
"location": "<strong>Emma Bostian</strong> 瑞典",
|
||||
"occupation": "<strong>Spotify</strong> 软件工程师",
|
||||
"testimony": "\"我一直努力学习 JavaScript,尝试了许多课程,最后是 freeCodeCamp 的课程吸引了我。在 freeCodeCamp 学习 JavaScript、数据结构和算法,<strong>我不仅掌握了技能,</strong>还变得更自信,所以才能获得理想中的工作,成为 Spotify 的一名软件工程师。\""
|
||||
}
|
||||
},
|
||||
"certification-heading": "获得以下免费认证:"
|
||||
},
|
||||
"settings": {
|
||||
"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。"
|
||||
},
|
||||
"labels": {
|
||||
"username": "用户名",
|
||||
"name": "名字",
|
||||
"location": "地点",
|
||||
"picture": "照片",
|
||||
"about": "关于",
|
||||
"personal": "个人网站",
|
||||
"title": "标题",
|
||||
"url": "URL",
|
||||
"image": "图片",
|
||||
"description": "描述",
|
||||
"project-name": "项目名称",
|
||||
"solution": "解决方案",
|
||||
"solution-for": "{{projectTitle}} 的解决方案",
|
||||
"my-profile": "我的个人资料",
|
||||
"my-name": "我的姓名",
|
||||
"my-location": "我的位置",
|
||||
"my-about": "我的介绍",
|
||||
"my-points": "我的分数",
|
||||
"my-heatmap": "我的热图",
|
||||
"my-certs": "我的认证",
|
||||
"my-portfolio": "我的作品集",
|
||||
"my-timeline": "我的时间线",
|
||||
"my-donations": "我的捐款",
|
||||
"night-mode": "夜间模式"
|
||||
},
|
||||
"headings": {
|
||||
"certs": "认证",
|
||||
"legacy-certs": "旧版证书",
|
||||
"honesty": "学术诚信条例",
|
||||
"internet": "你在各平台的账号",
|
||||
"portfolio": "作品集设置",
|
||||
"privacy": "隐私设置"
|
||||
},
|
||||
"danger": {
|
||||
"heading": "危险区域",
|
||||
"be-careful": "请注意,本节中的修改是永久性的。",
|
||||
"reset": "重置我的所有进度",
|
||||
"delete": "删除我的账号",
|
||||
"delete-title": "删除我的账号",
|
||||
"delete-p1": "这将删除你的所有数据,包括所有进度和账号信息。",
|
||||
"delete-p2": "即使你之后改变主意,我们也无法为你恢复任何信息。",
|
||||
"delete-p3": "如果有哪些方面我们可以做得更好,请发送邮件至 <0>{{email}}</0>,我们将尽力改善。",
|
||||
"nevermind": "我不想删除我的账号",
|
||||
"certain": "我完全确定要删除与此账号相关的所有信息",
|
||||
"reset-heading": "重置我的进度",
|
||||
"reset-p1": "这将删除你的所有进度、分数、已完成的挑战、我们对你的项目的记录,以及你获得的所有认证等所有内容。",
|
||||
"reset-p2": "即使你之后改变主意,我们也无法为你恢复任何信息。",
|
||||
"nevermind-2": "我不想删除我的所有进度",
|
||||
"reset-confirm": "重置所有内容,我想重新开始。"
|
||||
},
|
||||
"email": {
|
||||
"missing": "你的账号未绑定邮箱。",
|
||||
"heading": "邮件设置",
|
||||
"not-verified": "你的邮箱已验证。",
|
||||
"check": "请查看你的邮件,或<0>在此处请求新的验证邮件</0>。",
|
||||
"current": "当前邮箱",
|
||||
"new": "新邮箱",
|
||||
"confirm": "确认新邮箱",
|
||||
"weekly": "给我发 Quincy 的每周订阅邮件"
|
||||
},
|
||||
"honesty": {
|
||||
"p1": "申请认证前,你必须先接受我们的《学术诚信条例》,即:",
|
||||
"p2": "\"我理解剽窃意味着抄袭他人的作品,将其作为自己的作品来提交,且不明确注明原作者。\"",
|
||||
"p3": "\"我理解剽窃是一种知识上的不诚实行为。如果有人被发现有这种行为,那么他们通常会被大学(或其他单位)解雇。\"",
|
||||
"p4": "\"除了使用开源代码库(如 jQuery,Bootstrap)以及明确注明原作者的的代码片段之外,我的项目中的代码 100% 是由我自己编写的,或者是与另一位 freeCodeCamp 学员结对编程时编写的。\"",
|
||||
"p5": "\"我保证我提交给 freeCodeCamp 的作品都不是剽窃他人的。我理解 freeCodeCamp 团队将审核我提交的项目,以确认这一点。\"",
|
||||
"p6": "如果我们发现某学员的某部分课程项目有明显的剽窃现象,我们将不会发布该项目的认证,并注明 \"经过审核,该帐户已被标记为违反学术诚信条例。\"",
|
||||
"p7": "作为一个基于成就发布认证的学术机构,我们非常重视学术诚信。如果你对此条例有任何疑问,或者怀疑有人违反了该条例,可以发送邮件至 <0>{{email}}</0>,我们将进行调查。"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"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": "当前连续提交记录:",
|
||||
"portfolio": "作品集",
|
||||
"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}} 页"
|
||||
},
|
||||
"footer": {
|
||||
"tax-exempt-status": "freeCodeCamp 是捐助者支持的 501(c)(3) 条款下具有免税资格的非营利性组织(税号:82-0779546)。",
|
||||
"mission-statement": "我们的使命:帮助人们免费学习编程。我们通过创建成千上万的视频、文章和交互式编程课程——所有内容向公众免费开放——来实现这一目标。学员在世界各地自发成立数千个 freeCodeCamp 学习小组。",
|
||||
"donation-initiatives": "所有给 freeCodeCamp 的捐款都将用于我们的教育项目,购买服务器和其他服务,以及聘用员工。",
|
||||
"donate-text": "你可以",
|
||||
"donate-link": "点击此处免税捐款",
|
||||
"trending-guides": "精选文章",
|
||||
"our-nonprofit": "关于我们",
|
||||
"links": {
|
||||
"about": "简介",
|
||||
"alumni": "校友网络",
|
||||
"open-source": "开源",
|
||||
"shop": "商店",
|
||||
"support": "支持",
|
||||
"sponsors": "赞助商",
|
||||
"honesty": "学术诚信",
|
||||
"coc": "行为规范",
|
||||
"privacy": "隐私条例",
|
||||
"tos": "服务条款",
|
||||
"copyright": "版权条例"
|
||||
},
|
||||
"language": "语言:"
|
||||
},
|
||||
"learn": {
|
||||
"heading": "欢迎学习 freeCodeCamp 的课程。",
|
||||
"welcome-1": "欢迎回来,{{name}}。",
|
||||
"welcome-2": "欢迎来到 freeCodeCamp.org",
|
||||
"start-at-beginning": "如果你刚开始学习编程,我们建议你<0>从头开始</0>。",
|
||||
"read-this": {
|
||||
"heading": "请仔细阅读这里的内容。",
|
||||
"p1": "freeCodeCamp 是你获得第一份软件开发工作的有效途径。",
|
||||
"p2": "超过 40,000 人在完成这些课程后获得了开发者工作——包括进入谷歌、微软、阿里巴巴、腾讯等大型公司。",
|
||||
"p3": "如果你刚开始学习编程,我们建议你从头开始,按顺序获得认证。",
|
||||
"p4": "要获得每个认证,需要完成 5 个必做项目,并通过所有测试。",
|
||||
"p5": "你可以将这些认证添加到你的简历或 LinkedIn 个人资料。但是你在学习过程中所做的练习比获得认证更重要。",
|
||||
"p6": "如果你感到沮丧,很正常,因为编程本来就很难。",
|
||||
"p7": "练习是关键。练习,练习,再练习。",
|
||||
"p8": "这套课程需要你进行数千个小时的编程练习。",
|
||||
"p9": "如果你想学习更多数学和计算机科学理论,<0>freeCodeCamp 的 \n YouTube channel</0> 还有数千个小时的视频课程。",
|
||||
"p10": "如果你想获得开发者工作或者成为自由职业开发者找到客户,那么除了编程技能,你还需要搭建自己的社交网络,打造自己作为开发者的影响力。",
|
||||
"p11": "你可以在 Twitter、GitHub 和 <0>freeCodeCamp 论坛</0>搭建社交网络和打造影响力。",
|
||||
"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": "下载我的解决方案",
|
||||
"percent-complete": "完成 {{percent}}%",
|
||||
"tried-rsa": "如果你已经尝试了 <0>Read-Search-Ask(阅读-搜索-提问)</0>方法,那么你可以在 freeCodeCamp 论坛请求帮助。",
|
||||
"rsa": "阅读,搜索,提问",
|
||||
"reset": "重置这一节课程?",
|
||||
"reset-warn": "你确定要重置这一节课程吗?编辑器和测试将被重置。",
|
||||
"reset-warn-2": "这个操作不可撤销",
|
||||
"scrimba-tip": "注意:如果这个小浏览器窗口覆盖了代码,点击拖动它。同时,你可以随时暂停,在视频中编辑代码。",
|
||||
"chal-preview": "挑战预览",
|
||||
"cert-map-estimates": {
|
||||
"certs": "{{title}} 认证 (300小时)",
|
||||
"coding-prep": "{{title}}(数千小时的挑战)"
|
||||
},
|
||||
"editor-tabs": {
|
||||
"info": "信息",
|
||||
"code": "编程",
|
||||
"tests": "测试",
|
||||
"preview": "预览"
|
||||
},
|
||||
"help-translate": "我们仍然在翻译以下证书。",
|
||||
"help-translate-link": "帮助我们翻译。"
|
||||
},
|
||||
"donate": {
|
||||
"title": "支持我们的非营利组织",
|
||||
"processing": "我们正在处理你的捐款。",
|
||||
"thanks": "谢谢捐款",
|
||||
"thank-you": "谢谢你成为我们的支持者。",
|
||||
"thank-you-2": "谢谢你成为 freeCodeCamp 的支持者。现在你已设置定期捐款。",
|
||||
"additional": "你可以使用这个链接 <0>{{url}}</0> 额外进行一次性捐款:",
|
||||
"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": "成为我们非营利组织的支持者",
|
||||
"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>其他方式可以支持我们的非营利组织践行使命</0>.",
|
||||
"failed-pay": "呃,你的转账似乎没有成功,再试一次好吗?",
|
||||
"try-again": "请重试。",
|
||||
"card-number": "你的卡号:",
|
||||
"expiration": "到期日:",
|
||||
"only-you": "只有你可以看到此消息。祝贺你获得这项认证。获得认证不是一件容易的事情,运营 freeCodeCamp 也不容易,而且需要花费很多。请帮助我们更好地帮助你和世界各地的许多其他人。今天就为我们的非营利组织提供免税捐款,支持我们。"
|
||||
},
|
||||
"report": {
|
||||
"sign-in": "你需要先登录才能举报用户",
|
||||
"details": "请尽可能详细地描述你所举报的账号或行为。",
|
||||
"portfolio": "举报一个用户的作品集",
|
||||
"portfolio-2": "你想举报 {{username}} 的作品集滥用行为吗?",
|
||||
"notify-1": "我们将通知社区管理团队,并发送举报副本到你的邮箱:<strong>{{email}}</strong>",
|
||||
"notify-2": "如有需要,我们会联系你了解更多信息。",
|
||||
"what": "你想举报什么?",
|
||||
"submit": "提交举报"
|
||||
},
|
||||
"404": {
|
||||
"page-not-found": "未找到页面",
|
||||
"not-found": "404 未找到:",
|
||||
"heres-a-quote": "我们未找到你搜索的信息。这里分享一句名言:"
|
||||
},
|
||||
"search": {
|
||||
"label": "搜索",
|
||||
"placeholder": "搜索 300+ 篇教程",
|
||||
"see-results": "查看 {{searchQuery}} 的所有结果",
|
||||
"no-tutorials": "未找到教程",
|
||||
"try": "想要搜索信息?试试使用页面上的搜索框。",
|
||||
"no-results": "我们未找到关于 <0>{{query}}</0> 的任何信息"
|
||||
},
|
||||
"misc": {
|
||||
"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": "帮我们翻译"
|
||||
},
|
||||
"icons": {
|
||||
"gold-cup": "金奖杯",
|
||||
"avatar": "默认头像",
|
||||
"avatar-2": "正在电脑前编程的头像",
|
||||
"donate": "使用 PayPal 捐款",
|
||||
"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": "分支节点"
|
||||
},
|
||||
"aria": {
|
||||
"fcc-logo": "freeCodeCamp 徽标",
|
||||
"answer": "答案",
|
||||
"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}} 向团队发送副本报告"
|
||||
},
|
||||
"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",
|
||||
"http-url": "不能使用不安全的(http)URL。",
|
||||
"own-work-url": "记住要提交你自己的作业",
|
||||
"publicly-visible-url": "记得要提交一个公开可见的app URL"
|
||||
},
|
||||
"certification": {
|
||||
"executive": "执行董事,freeCodeCamp.org",
|
||||
"verify": "确认此认证 {{certURL}}",
|
||||
"issued": "发布日期",
|
||||
"fulltext": "<0>特证明</0> <1>{{user}}</1> <2>已完成 freeCodeCamp.org</2> <3>{{title}}</3> <4>开发者认证课程,约 {{time}} 课时。</4>",
|
||||
"project": {
|
||||
"heading-legacy-full-stack": "作为旧版全栈认证的一部分,{{user}} 完成了以下认证:",
|
||||
"heading": "作为此认证的一部分,{{user}} 构建了以下项目,并通过所有自动测试:",
|
||||
"solution": "解决方案",
|
||||
"source": "来源",
|
||||
"footnote": "如果你怀疑其中任何项目违反了<2>学术诚信条例</2>,请<5>向我们的团队报告</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": "显示本地天气",
|
||||
"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": "股票价格检查器",
|
||||
"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": "神经网络短信分类器"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
62
client/i18n/locales/chinese-traditional/trending.json
Normal file
62
client/i18n/locales/chinese-traditional/trending.json
Normal file
@ -0,0 +1,62 @@
|
||||
{
|
||||
"article0title": "Golang Benchmark",
|
||||
"article0link": "https://chinese.freecodecamp.org/news/golang-benchmark/",
|
||||
"article1title": "树莓派",
|
||||
"article1link": "https://chinese.freecodecamp.org/news/build-a-personal-dev-server-on-a-5-dollar-raspberry-pi/",
|
||||
"article2title": "如何发布一个网站",
|
||||
"article2link": "https://chinese.freecodecamp.org/news/publish-a-no-code-website-in-10-minutes/",
|
||||
"article3title": "PWA 入门与实践",
|
||||
"article3link": "https://chinese.freecodecamp.org/news/a-brief-introduction-to-pwa/",
|
||||
"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": "前端开发学习路线",
|
||||
"article6link": "https://chinese.freecodecamp.org/news/map-of-learning-front-end/",
|
||||
"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/",
|
||||
"article9title": "Webpack 多入口配置",
|
||||
"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 开发工程师",
|
||||
"article11link": "https://chinese.freecodecamp.org/news/the-practical-guide-to-becoming-a-professional-web-developer/",
|
||||
"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/",
|
||||
"article14title": "Python 快速排序算法",
|
||||
"article14link": "https://chinese.freecodecamp.org/news/sorting-in-python/",
|
||||
"article15title": "React 作品集",
|
||||
"article15link": "https://chinese.freecodecamp.org/news/portfolio-app-using-react/",
|
||||
"article16title": "JS 隐式类型转换",
|
||||
"article16link": "https://chinese.freecodecamp.org/news/javascript-implicit-type-conversion/",
|
||||
"article17title": "Deno 入门手册",
|
||||
"article17link": "https://chinese.freecodecamp.org/news/the-deno-handbook-with-examples/",
|
||||
"article18title": "前端和后端的区别",
|
||||
"article18link": "https://chinese.freecodecamp.org/news/front-end-developer-vs-back-end-developer-definition-and-meaning-in-practice/",
|
||||
"article19title": "JS 函数的 this 指向",
|
||||
"article19link": "https://chinese.freecodecamp.org/news/javascript-this/",
|
||||
"article20title": "GitHub Pages 部署网页",
|
||||
"article20link": "https://chinese.freecodecamp.org/news/create-a-free-static-site-with-github-pages-in-10-minutes/",
|
||||
"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": "前端学习路线",
|
||||
"article23link": "https://chinese.freecodecamp.org/news/map-of-learning-front-end/",
|
||||
"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 学习手册",
|
||||
"article26link": "https://chinese.freecodecamp.org/news/the-react-handbook/",
|
||||
"article27title": "JSON 文件注释",
|
||||
"article27link": "https://chinese.freecodecamp.org/news/json-comment/",
|
||||
"article28title": "Canvas 动画",
|
||||
"article28link": "https://chinese.freecodecamp.org/news/canvas-animation-performance-optimization-practice/",
|
||||
"article29title": "JWT 授权和认证",
|
||||
"article29link": "https://chinese.freecodecamp.org/news/java-spring-boot-jwt-authorization-and-authentication/"
|
||||
}
|
@ -14,6 +14,10 @@ const algoliaIndices = {
|
||||
chinese: {
|
||||
name: 'news-zh',
|
||||
searchPage: 'https://chinese.freecodecamp.org/news/search/'
|
||||
},
|
||||
'chinese-traditional': {
|
||||
name: 'news-zh',
|
||||
searchPage: 'https://chinese.freecodecamp.org/news/search'
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -2,8 +2,8 @@
|
||||
* from the .env file aren't found in their respective arrays below
|
||||
*/
|
||||
const availableLangs = {
|
||||
client: ['english', 'espanol', 'chinese'],
|
||||
curriculum: ['english', 'espanol', 'chinese']
|
||||
client: ['english', 'espanol', 'chinese', 'chinese-traditional'],
|
||||
curriculum: ['english', 'espanol', 'chinese', 'chinese-traditional']
|
||||
};
|
||||
|
||||
// Each client language needs an entry in the rest of the variables below
|
||||
@ -15,14 +15,16 @@ const availableLangs = {
|
||||
const i18nextCodes = {
|
||||
english: 'en',
|
||||
espanol: 'es',
|
||||
chinese: 'zh'
|
||||
chinese: 'zh',
|
||||
'chinese-traditional': 'zh'
|
||||
};
|
||||
|
||||
// These are for the language selector dropdown menu in the footer
|
||||
const langDisplayNames = {
|
||||
english: 'English',
|
||||
espanol: 'Español',
|
||||
chinese: '中文'
|
||||
chinese: '中文',
|
||||
'chinese-traditional': '古文'
|
||||
};
|
||||
|
||||
/* These are for formatting dates and numbers. Used with JS .toLocaleString().
|
||||
@ -32,7 +34,8 @@ const langDisplayNames = {
|
||||
const langCodes = {
|
||||
english: 'en-US',
|
||||
espanol: 'es-419',
|
||||
chinese: 'zh'
|
||||
chinese: 'zh',
|
||||
'chinese-traditional': 'zh-Hant'
|
||||
};
|
||||
|
||||
exports.availableLangs = availableLangs;
|
||||
|
5
tools/crowdin/actions/convert-chinese/action.yml
Normal file
5
tools/crowdin/actions/convert-chinese/action.yml
Normal file
@ -0,0 +1,5 @@
|
||||
name: 'Translate Simplified Chinese to Traditional'
|
||||
description: 'Converts Simplified Chinese characters to Traditional Chinese Characters'
|
||||
runs:
|
||||
using: 'node12'
|
||||
main: './index.js'
|
41
tools/crowdin/actions/convert-chinese/index.js
Normal file
41
tools/crowdin/actions/convert-chinese/index.js
Normal file
@ -0,0 +1,41 @@
|
||||
/* eslint-disable import/no-unresolved */
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const opencc = require('node-opencc');
|
||||
|
||||
const getFiles = async (directory, fileList = []) => {
|
||||
const files = await fs.readdir(directory);
|
||||
for (const file of files) {
|
||||
const fileStat = await fs.stat(path.join(directory, file));
|
||||
if (fileStat.isDirectory()) {
|
||||
fileList = await getFiles(path.join(directory, file), fileList);
|
||||
} else {
|
||||
fileList.push(path.join(directory, file));
|
||||
}
|
||||
}
|
||||
return fileList;
|
||||
};
|
||||
|
||||
(async () => {
|
||||
console.info('Getting file list...');
|
||||
const fileList = [];
|
||||
const curriculum = await getFiles(
|
||||
path.join(__dirname, '/../../../../curriculum/challenges/chinese')
|
||||
);
|
||||
fileList.push(...curriculum);
|
||||
|
||||
const client = await getFiles(
|
||||
path.join(__dirname, '/../../../../client/i18n/locales/chinese')
|
||||
);
|
||||
fileList.push(...client);
|
||||
|
||||
for (const file of fileList) {
|
||||
console.info(`Translating ${file}`);
|
||||
const fileText = await fs.readFile(file, 'utf-8');
|
||||
const translatedText = await opencc.simplifiedToTraditional(fileText);
|
||||
await fs.outputFile(
|
||||
file.replace('chinese', 'chinese-traditional'),
|
||||
translatedText
|
||||
);
|
||||
}
|
||||
})();
|
478
tools/crowdin/package-lock.json
generated
478
tools/crowdin/package-lock.json
generated
@ -1,8 +1,411 @@
|
||||
{
|
||||
"name": "@freecodecamp/crowdin",
|
||||
"version": "0.0.1",
|
||||
"lockfileVersion": 1,
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@freecodecamp/crowdin",
|
||||
"version": "0.0.1",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": {
|
||||
"@actions/core": "1.2.6",
|
||||
"@actions/github": "4.0.0",
|
||||
"dotenv": "8.2.0",
|
||||
"fs-extra": "9.1.0",
|
||||
"gray-matter": "4.0.2",
|
||||
"node-fetch": "2.6.1",
|
||||
"node-opencc": "2.0.1",
|
||||
"path": "0.12.7",
|
||||
"readdirp": "3.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 14.0.0",
|
||||
"npm": "^6.14.12"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/core": {
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz",
|
||||
"integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA=="
|
||||
},
|
||||
"node_modules/@actions/github": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/github/-/github-4.0.0.tgz",
|
||||
"integrity": "sha512-Ej/Y2E+VV6sR9X7pWL5F3VgEWrABaT292DRqRU6R4hnQjPtC/zD3nagxVdXWiRQvYDh8kHXo7IDmG42eJ/dOMA==",
|
||||
"dependencies": {
|
||||
"@actions/http-client": "^1.0.8",
|
||||
"@octokit/core": "^3.0.0",
|
||||
"@octokit/plugin-paginate-rest": "^2.2.3",
|
||||
"@octokit/plugin-rest-endpoint-methods": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/http-client": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.9.tgz",
|
||||
"integrity": "sha512-0O4SsJ7q+MK0ycvXPl2e6bMXV7dxAXOGjrXS1eTF9s2S401Tp6c/P3c3Joz04QefC1J6Gt942Wl2jbm3f4mLcg==",
|
||||
"dependencies": {
|
||||
"tunnel": "0.0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/auth-token": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz",
|
||||
"integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/core": {
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.5.tgz",
|
||||
"integrity": "sha512-+DCtPykGnvXKWWQI0E1XD+CCeWSBhB6kwItXqfFmNBlIlhczuDPbg+P6BtLnVBaRJDAjv+1mrUJuRsFSjktopg==",
|
||||
"dependencies": {
|
||||
"@octokit/auth-token": "^2.4.4",
|
||||
"@octokit/graphql": "^4.5.8",
|
||||
"@octokit/request": "^5.4.12",
|
||||
"@octokit/types": "^6.0.3",
|
||||
"before-after-hook": "^2.1.0",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/endpoint": {
|
||||
"version": "6.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz",
|
||||
"integrity": "sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.0.3",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/graphql": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.0.tgz",
|
||||
"integrity": "sha512-CJ6n7izLFXLvPZaWzCQDjU/RP+vHiZmWdOunaCS87v+2jxMsW9FB5ktfIxybRBxZjxuJGRnxk7xJecWTVxFUYQ==",
|
||||
"dependencies": {
|
||||
"@octokit/request": "^5.3.0",
|
||||
"@octokit/types": "^6.0.3",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/openapi-types": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-5.3.1.tgz",
|
||||
"integrity": "sha512-TvVk2QuIA0lQZcIMd6xbdGaGDVeNYIOa3l1ZVagAIk5K3t/WMYbcg4BISNDhzdVhm/TgQB26frAgd/GV81aHJA=="
|
||||
},
|
||||
"node_modules/@octokit/plugin-paginate-rest": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.11.0.tgz",
|
||||
"integrity": "sha512-7L9xQank2G3r1dGqrVPo1z62V5utbykOUzlmNHPz87Pww/JpZQ9KyG5CHtUzgmB4n5iDRKYNK/86A8D98HP0yA==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.11.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/plugin-rest-endpoint-methods": {
|
||||
"version": "4.13.4",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.13.4.tgz",
|
||||
"integrity": "sha512-MGxptzVfiP8O+aydC/riheYzS/yJ9P16M29OuvtZep/sF5sKuOCQP8Wf83YCKXRsQF+ZpYfke2snbPPSIMZKzg==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.12.0",
|
||||
"deprecation": "^2.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/request": {
|
||||
"version": "5.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.14.tgz",
|
||||
"integrity": "sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA==",
|
||||
"dependencies": {
|
||||
"@octokit/endpoint": "^6.0.1",
|
||||
"@octokit/request-error": "^2.0.0",
|
||||
"@octokit/types": "^6.7.1",
|
||||
"deprecation": "^2.0.0",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"node-fetch": "^2.6.1",
|
||||
"once": "^1.4.0",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/request-error": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz",
|
||||
"integrity": "sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.0.3",
|
||||
"deprecation": "^2.0.0",
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/types": {
|
||||
"version": "6.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.12.0.tgz",
|
||||
"integrity": "sha512-KwOf16soD7aDEEi/PgNeJlHzjZPfrmmNy+7WezSdrpnqZ7YImBJcNnX9+5RUHt1MnA4h8oISRHTqaZDGsX9DRQ==",
|
||||
"dependencies": {
|
||||
"@octokit/openapi-types": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/argparse": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||
"dependencies": {
|
||||
"sprintf-js": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/at-least-node": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
|
||||
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
|
||||
"engines": {
|
||||
"node": ">= 4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/before-after-hook": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.0.tgz",
|
||||
"integrity": "sha512-jH6rKQIfroBbhEXVmI7XmXe3ix5S/PgJqpzdDPnR8JGLHWNYLsYZ6tK5iWOF/Ra3oqEX0NobXGlzbiylIzVphQ=="
|
||||
},
|
||||
"node_modules/deprecation": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
|
||||
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
|
||||
"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/esprima": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
||||
"bin": {
|
||||
"esparse": "bin/esparse.js",
|
||||
"esvalidate": "bin/esvalidate.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/extend-shallow": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
||||
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
||||
"dependencies": {
|
||||
"is-extendable": "^0.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-extra": {
|
||||
"version": "9.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
||||
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
|
||||
"dependencies": {
|
||||
"at-least-node": "^1.0.0",
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.6",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
|
||||
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
|
||||
},
|
||||
"node_modules/gray-matter": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz",
|
||||
"integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==",
|
||||
"dependencies": {
|
||||
"js-yaml": "^3.11.0",
|
||||
"kind-of": "^6.0.2",
|
||||
"section-matter": "^1.0.0",
|
||||
"strip-bom-string": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"node_modules/is-extendable": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
|
||||
"integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-plain-object": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
|
||||
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "3.14.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||
"dependencies": {
|
||||
"argparse": "^1.0.7",
|
||||
"esprima": "^4.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"js-yaml": "bin/js-yaml.js"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonfile": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||
"dependencies": {
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/kind-of": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
|
||||
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
|
||||
"engines": {
|
||||
"node": "4.x || >=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-opencc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/node-opencc/-/node-opencc-2.0.1.tgz",
|
||||
"integrity": "sha512-SXhWq9oZU0V98xfxsJOEyfWRrcnec2f3zqKuugKta+UHmqtehNAd6QVYcEQ2CpwhmcRUVWaLovVLIIBm3jDXGg==",
|
||||
"engines": {
|
||||
"node": ">= 7.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/path": {
|
||||
"version": "0.12.7",
|
||||
"resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
|
||||
"integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
|
||||
"dependencies": {
|
||||
"process": "^0.11.1",
|
||||
"util": "^0.10.3"
|
||||
}
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
"node_modules/process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
|
||||
"engines": {
|
||||
"node": ">= 0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
|
||||
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
|
||||
"dependencies": {
|
||||
"picomatch": "^2.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/section-matter": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
|
||||
"integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
|
||||
"dependencies": {
|
||||
"extend-shallow": "^2.0.1",
|
||||
"kind-of": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
||||
},
|
||||
"node_modules/strip-bom-string": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
|
||||
"integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tunnel": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
||||
"engines": {
|
||||
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
||||
}
|
||||
},
|
||||
"node_modules/universal-user-agent": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
|
||||
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
|
||||
},
|
||||
"node_modules/universalify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/util": {
|
||||
"version": "0.10.4",
|
||||
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
|
||||
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
|
||||
"dependencies": {
|
||||
"inherits": "2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": {
|
||||
"version": "1.2.7",
|
||||
@ -132,6 +535,11 @@
|
||||
"sprintf-js": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"at-least-node": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
|
||||
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
|
||||
},
|
||||
"before-after-hook": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.0.tgz",
|
||||
@ -160,6 +568,22 @@
|
||||
"is-extendable": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "9.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
||||
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
|
||||
"requires": {
|
||||
"at-least-node": "^1.0.0",
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.6",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
|
||||
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
|
||||
},
|
||||
"gray-matter": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
|
||||
@ -171,6 +595,11 @@
|
||||
"strip-bom-string": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"is-extendable": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
|
||||
@ -190,6 +619,15 @@
|
||||
"esprima": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6",
|
||||
"universalify": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"kind-of": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
|
||||
@ -200,6 +638,11 @@
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
|
||||
},
|
||||
"node-opencc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/node-opencc/-/node-opencc-2.0.1.tgz",
|
||||
"integrity": "sha512-SXhWq9oZU0V98xfxsJOEyfWRrcnec2f3zqKuugKta+UHmqtehNAd6QVYcEQ2CpwhmcRUVWaLovVLIIBm3jDXGg=="
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
@ -208,15 +651,29 @@
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"path": {
|
||||
"version": "0.12.7",
|
||||
"resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
|
||||
"integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
|
||||
"requires": {
|
||||
"process": "^0.11.1",
|
||||
"util": "^0.10.3"
|
||||
}
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
|
||||
},
|
||||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
|
||||
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
|
||||
"requires": {
|
||||
"picomatch": "^2.2.1"
|
||||
}
|
||||
@ -250,6 +707,19 @@
|
||||
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
|
||||
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
|
||||
},
|
||||
"universalify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
|
||||
},
|
||||
"util": {
|
||||
"version": "0.10.4",
|
||||
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
|
||||
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
|
||||
"requires": {
|
||||
"inherits": "2.0.3"
|
||||
}
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
|
@ -25,8 +25,11 @@
|
||||
"@actions/core": "1.2.7",
|
||||
"@actions/github": "4.0.0",
|
||||
"dotenv": "8.5.1",
|
||||
"fs-extra": "9.1.0",
|
||||
"gray-matter": "4.0.3",
|
||||
"node-fetch": "2.6.1",
|
||||
"readdirp": "3.6.0"
|
||||
"node-opencc": "2.0.1",
|
||||
"path": "0.12.7",
|
||||
"readdirp": "3.5.0"
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,14 @@ const auditedCerts = {
|
||||
'data-visualization',
|
||||
'apis-and-microservices',
|
||||
'quality-assurance'
|
||||
],
|
||||
'chinese-traditional': [
|
||||
'responsive-web-design',
|
||||
'javascript-algorithms-and-data-structures',
|
||||
'front-end-libraries',
|
||||
'data-visualization',
|
||||
'apis-and-microservices',
|
||||
'quality-assurance'
|
||||
]
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user