Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions src/localization/zh-cn/cheatsheet.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{
"cheatsheet.anchors": "锚",
"cheatsheet.caret.title": "字符串或行的开头",
"cheatsheet.caret.description": "匹配字符串或行的开头。",
"cheatsheet.dollar.title": "字符串或行的末尾",
"cheatsheet.dollar.description": "匹配字符串或行的末尾。",
"cheatsheet.wordBoundary.title": "单词边界",
"cheatsheet.wordBoundary.description": "匹配单词字符或者末尾的位置",
"cheatsheet.notWordBoundary.title": "非单词边界",
"cheatsheet.notWordBoundary.description": "匹配一个不在词尾的单词字符或位置。",

"cheatsheet.characterClasses": "字符类",
"cheatsheet.characterSet.title": "字符集",
"cheatsheet.characterSet.description": "匹配集合中的任何字符",
"cheatsheet.negatedCharacterSet.title": "否定字符集",
"cheatsheet.negatedCharacterSet.description": "匹配不在集合中的任意字符。",
"cheatsheet.range.title": "范围",
"cheatsheet.range.description": "匹配两个字符之间的任何字符,包括它们本身。",
"cheatsheet.dot.title": "点",
"cheatsheet.dot.description": "匹配除换行符之外的任何字符。",
"cheatsheet.word.title": "单词",
"cheatsheet.word.description": "匹配任何字母数字字符。包括下划线。",
"cheatsheet.notWord.title": "非单词",
"cheatsheet.notWord.description": "匹配任何非字母数字字符",
"cheatsheet.digit.title": "数字",
"cheatsheet.digit.description": "匹配所有数字。",
"cheatsheet.notDigit.title": "非数字",
"cheatsheet.notDigit.description": "匹配所有非数字。",
"cheatsheet.space.title": "空格",
"cheatsheet.space.description": "匹配所有空格。",
"cheatsheet.notSpace.title": "非空格",
"cheatsheet.notSpace.description": "匹配所有非空格",

"cheatsheet.flags": "模式",
"cheatsheet.caseInsensitiveFlag.title": "忽略大小写",
"cheatsheet.caseInsensitiveFlag.description": "忽略大小写",
"cheatsheet.globalFlag.title": "全局",
"cheatsheet.globalFlag.description": "确保表达式匹配所有结果",
"cheatsheet.multilineFlag.title": "多行",
"cheatsheet.multilineFlag.description": "如果不启用,行开始和结束等于整个字符串的开始和结束。它不对每一行单独起作用。",

"cheatsheet.groupAndReferences": "组和引用",
"cheatsheet.group.title": "组",
"cheatsheet.group.description": "表达式分组",
"cheatsheet.reference.title": "引用",
"cheatsheet.reference.description": "引用分组的表达式。",
"cheatsheet.nonCapturingGroup.title": "非捕获组",
"cheatsheet.nonCapturingGroup.description": "创建无法引用的分组。",

"cheatsheet.lookarounds": "零宽断言",
"cheatsheet.positiveLookahead.title": "正先行断言",
"cheatsheet.negativeLookahead.title": "负先行断言",
"cheatsheet.positiveLookbehind.title": "正后发断言",
"cheatsheet.negativeLookbehind.title": "负后发断言",

"cheatsheet.quantifiersAndAlternation": "量词与分枝条件",
"cheatsheet.plus.title": "加号",
"cheatsheet.plus.description": "匹配一次或多次",
"cheatsheet.asterisk.title": "星号",
"cheatsheet.asterisk.description": "表达式匹配零个或多个",
"cheatsheet.quantifier.title": "重复",
"cheatsheet.quantifier.description": "指定范围内匹配的表达式。",
"cheatsheet.optional.title": "可选",
"cheatsheet.optional.description": "使某个字符可选",
"cheatsheet.alternation.title": "分枝条件",
"cheatsheet.alternation.description": "创建 `or` (`或`)判断条件。用于匹配多种可能的字符"
}
32 changes: 32 additions & 0 deletions src/localization/zh-cn/general.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"general.prev": "上一个",
"general.next": "下一个",
"general.result": "结果",
"general.regex": "正则表达式",
"general.text": "文本",
"general.completedStep": "完成步骤!",
"general.hintQuestion": "显示答案",
"general.reportStep": "报告问题",
"general.startLearning": "开始学习",
"general.comingSoon": "即将推出",
"general.becomeSponsor": "成为赞助商",
"general.learn": "学习",
"general.playground": "游乐场",
"general.cheatsheet": "讲义",
"general.ourSponsors": "我们的赞助商",

"notFound.intro": "您要寻找的页面不存在。",
"notFound.button": "回到主页",

"page.landing.title": "正则表达式学习 - 逐步从零基础到高阶。",
"page.learn.title": "正则表达式学习 - 正则表达式交互式课程",
"page.cheatsheet.title": "正则表达式学习 - 正则表达式讲义",
"page.404.title": "正则表达式学习 - 未找到",

"page.landing.description": "交互式学习正则表达式,在你的阶段练习、测试和分享你自己的正则表达式",
"page.learn.description": "逐步学习正则表达式。完成交互式课程会让你的学习更加简单和快速。",
"page.cheatsheet.description": "有时你只需记住正则表达式。参考讲义会让你更好理解和掌握。",

"alert.site.under.development": "网站正在开发中,你看到的内容可能会有所变动。",
"learn.safari.unsupportWarning": "Safari 浏览器不支持该步骤中的正则表达式。如果你在这一步遇到问题,你可以点击此处。"
}
13 changes: 13 additions & 0 deletions src/localization/zh-cn/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import cheatsheet from "./cheatsheet.json";
import general from "./general.json";
import landing from "./landing.json";
import learn from "./learn.json";

const messages = {
...cheatsheet,
...general,
...landing,
...learn
};

export default messages;
20 changes: 20 additions & 0 deletions src/localization/zh-cn/landing.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"landing.title": "逐步学习正则表达式,从零基础到高阶",
"landing.description": "学习正则比你想象的要容易得多,你可以用本工具轻松学习、练习、测试和分享正则表达式。",

"section.learn.title": "学习",
"section.learn.content": "`正则表达式`, 缩写为 RegEx 或 RegExp, 是在正则表达式语法框架内创建的字符串。你可以用正则表达式轻松管理你的数据,比如通过命令查找、匹配或编辑。正则表达式适用于 Python、SQL、Javascript、R、Google 分析工具、Google Data Studio 和整个编码过程中。现在通过 RegexLearn 的教程和示例在线学习正则表达式。",

"section.cheatsheet.button": "立即查看",
"section.cheatsheet.title": "讲义",
"section.cheatsheet.content": "通过`正则表达式讲义`,你能看到你所需的表达式用法,一切都能从这里查到。用正则表达式讲义浏览正则表达式的所有模式和符号。",

"section.playground.title": "游乐场",
"section.playground.content": "如果你想要生成正则表达式,你能通过游乐场轻松构建和测试你的正则表达式模式。作为正则表达式测试者,你将能验证正则表达式,并在团队协作中与其他人共享。",

"section.practice.title": "练习",
"section.practice.content": "如果你完成学习部分,那么是时候开始练习!在练习环节,你将能能检测你的正则表达式知识和作对应的水平练习。",

"section.opensource.title": "开源",
"section.opensource.content": "Regex Learn 是一个开源项目,欢迎社区贡献和免费使用。参与这个项目能让你磨炼技能、学习和协作。你能通过此处作出贡献和支持。"
}
163 changes: 163 additions & 0 deletions src/localization/zh-cn/learn.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
{
"examples.starter.title": "练习",
"examples.starter.description": "现在做些练习来巩固我们学到的东西。",

"examples.finish.title": "完成练习!",
"examples.finish.description": " ",

"steps.starter.title": "介绍",
"steps.starter.description": "RegEx 是正则表达式的简称。它便于匹配、寻找和管理文本。在输入框中键入“OK”开始第一步并了解更多的细节......",

"steps.whatIsRegex.title": "什么是「正则表达式」?",
"steps.whatIsRegex.description": "正则表达式是表示搜索模式的子符串,常缩写成 `RegEx` 或 `RegExp`。通常用于查找和替换文本中的字词。我们可以测试文本是否符合我们设置的规则。\\n\\n 例如,你有一个文件名的列表。你只想查找扩展名是 `pdf` 的文件。你跟着敲打 `^\\w+\\.pdf$` 就找到。随着课程的进行,表达式的含义会变得更加明朗。",

"steps.basicMatchers.title": "基本匹配",
"steps.basicMatchers.description": "我们想要查找的字符或单词是直接输入,就像我们搜索一样。例如,想要找出文本中的单词 `curious` ,敲相同的单词。",

"steps.dotCharacter.title": "点 `.`: 任何字符",
"steps.dotCharacter.description": "点 `.` 允许选择所有字符,包括特殊字符和空格。",

"steps.characterSet.title": "字符集 `[abc]`",
"steps.characterSet.description": "单词中的字符可以是任意一个,我们就将所有的替代字符写进方括号 `[]` 中。例如,为了查找文本中的所有单词,表达式可以用方括号 `[]` 键入所有的相似字符`a`, `e`, `i`, `o`, `u`。",

"steps.negatedCharacterSet.title": "否定字符集 `[^abc]`",
"steps.negatedCharacterSet.description": "为了查找以下文本的所有单词(`ber` 和 `bor` 除外)。在方括号`[]`中的`^`后面并排输入`e`和`o`.",

"steps.range.title": "字母范围`[a-z]`",
"steps.range.description": "要查找指定范围的字母,将起始字母和结束字母写进方括号`[]`中,中间用短划线`-`分隔。它区分大小写,输入表达式以选中`e`和`o`之间所有的小写字母,包括它们自己。",

"steps.rangeNumber.title": "数字范围`[0-9]`",
"steps.rangeNumber.description": "要查找指定范围的数字,在方括号`[]`中键入起始和结束数字,中间用短划线`-`分隔。写一个表达式以选中`3`和`6`之间的所有数字,包括它们自己。",

"examples.basicMatchers.title": "练习:基本匹配",
"examples.basicMatchers.description": "写一个匹配文本中`of`单词的表达式。",

"examples.dotCharacter.title": "练习:匹配任意字符",
"examples.dotCharacter.description": "写一个匹配文本中所有字母、数字、空格和特殊字符的表达式。必须匹配所有字符。",

"examples.characterSet.title": "练习:字符集",
"examples.characterSet.description": "写一个匹配文本中所有只是首字母不同的单词的表达式。",

"examples.negatedCharacterSet.title": "练习:否定字符集",
"examples.negatedCharacterSet.description": "写一个匹配除`beor`和`beur`以外的所有单词的表达式。用否定字符集完成。",

"examples.range.title": "练习:字母范围",
"examples.range.description": "写一个选中从`g`到`k`中间所有字母的,包括它们自己的表达式。",

"examples.rangeNumber.title": "练习:数字范围",
"examples.rangeNumber.description": "写一个选中从`2`到`7`中间所有字母的,包括它们自己的表达式。",

"steps.repetitions.title": "重复",
"steps.repetitions.description": "一些特殊字符用来指定在文本中重复的次数。它们分别是加号`+`、星号`*`和问号`?`。",

"steps.asterisk.title": "星号 `*`",
"steps.asterisk.description": "在字符后面加一个星号`*`,表示字符完全不匹配或匹配多次。比如让`e`不出现在文本中,或者让它并排出现多次",

"steps.plusCharacter.title": "加号 `+`",
"steps.plusCharacter.description": "为了让一个字符出现一次或多次,我们将加号`+`放其后面。比如让`e`在文本中出现一次或多次",

"steps.questionMark.title": "问号 `?`",
"steps.questionMark.description": "为表示一个字符是可选的,我们在其后面加一个问号`?`。比如表示以下字母`u`是可选的。",

"steps.quantifier.title": "大括号 - 1",
"steps.quantifier.description": "为表示一个字符的一定次数,我们在该字符的后面用大括号`{n}`来表示它最终出现的次数。比如以下字母`e`只能出现`2`次。",

"steps.quantifierMin.title": "大括号 - 2",
"steps.quantifierMin.description": "为表示一个字符至少出现一定次数,我们要在该字符的后面用大括号`{n, }`表示至少出现的次数,数字的末尾要加逗号`,`。比如以下字母`e`至少出现`3`次。",

"steps.quantifierRange.title": "大括号 - 3",
"steps.quantifierRange.description": "为表示一些字符在指定数字范围内出现,我们在大括号`{x,y}`中用逗号分隔始末字符表示。比如以下字母`e`只能出现在`1`和`3`之间。",

"examples.asterisk.title": "练习:星号 `*`",
"examples.asterisk.description": "写一个用星号`*`选择下面每个字母,适合文本中没有字母`e`并且存在多个字母的单词的表达式",

"examples.plusCharacter.title": "练习:加号 `+`",
"examples.plusCharacter.description": "写一个用加号`+`以选中文本中字母`e`出现一次或多次的单词。",

"examples.questionMark.title": "练习:问号 `?`",
"examples.questionMark.description": "写一个用问号`?`表示字母`n`在文本中是可选的表达式。使得`a`和`an`均可选中。",

"examples.quantifier.title": "练习:大括号 - 1",
"examples.quantifier.description": "用大括号`{}`写一个表达式,选中文本中从`0`到`9`的`4`位数字。",

"examples.quantifierMin.title": "练习:大括号 - 2",
"examples.quantifierMin.description": "用大括号`{}`写一个表达式,选中文本中至少出现`2`次的`0`和`9`之间的数字。",

"examples.quantifierRange.title": "练习:大括号 - 3",
"examples.quantifierRange.description": "用大括号`{}`写一个表达式,选中文本中介于`1`和`4`之间的从`0`到`9`的数字。",

"steps.groupping.title": "括号 `( )`: 分组",
"steps.groupping.description": "通过对表达示进行分组,来引用或强制执行某些规则。要对表达式分组,只需在表达式中用`()`闭合。现在尝试对`haa`分组。",

"steps.groupReference.title": "引用组",
"steps.groupReference.description": "单词`ha`和`haa`在以下示例中分组。第一组用`\\1`来避免重写。这里的`1`表示分组的顺序。在表达式的末尾键入`\\2`以引用第二组。",

"steps.nonCapturingGroupping.title": "括号 `(?: )`: 非捕获分组",
"steps.nonCapturingGroupping.description": "你可以对表达式进行分组,并确保它不被引用捕获。下面示例中有两个组,但是,我们用`\\1`表示的第一个组引用实际上是指向第二个组,因为第一个组是未被捕获的组。",

"steps.pipeCharacter.title": "竖线 `|`",
"steps.pipeCharacter.description": "竖线允许同一表达式包含多种规则。所有可能的声明用竖线`|`分隔。和字符集不同,字符集`[abc]`在字符层面上运作。分枝条件在表达式层面上运作。例如下面的表达式同时选择`cat`和`Cat`。在末尾添加另一条竖线`|`,键入`rat`以选择所有单词。",

"steps.escapeCharacter.title": "转义字符 `\\`",
"steps.escapeCharacter.description": "我们写正则时会用到一些特殊字符`{ } [ ] / \\ + * . $^ | ?`,因此我们需要通过`\\`转义使用。例如,要选择文本中的点`.`和星号`*`,我们需要在前面添加一个转义字符`\\`。",

"steps.caret.title": "插入符 `^`:\\n匹配字符串的开始",
"steps.caret.description": "我们用`[0-9]`查找数字,若仅查找行首的数字,请在表达式前面加上符号`^`。",

"steps.dollar.title": "美元符号 `$`:\\n匹配字符串的结束",
"steps.dollar.description": "我们在`html`值的后面用符号`$`来查找仅在行末的`html`文本",

"steps.wordCharacter.title": "文本字符 `\\w`: 字母、数字和下划线",
"steps.wordCharacter.description": "表达式`\\w`用于查找字母、数字和下划线。让我们用表达式`\\w`来查找文本中的文本字符。",

"steps.withoutWordCharacter.title": "非文本字符 `\\W`",
"steps.withoutWordCharacter.description": "`\\W` 匹配任意除字母、数字、下划线和汉字之外的字符。",

"steps.numberCharacter.title": "数字字符 `\\d`",
"steps.numberCharacter.description": "`\\d` 仅用来匹配数字",

"steps.withoutNumberCharacter.title": "非数字字符 `\\D`",
"steps.withoutNumberCharacter.description": "`\\D` 匹配任意非数字的字符。",

"steps.spaceCharacter.title": "空白符 `\\s`",
"steps.spaceCharacter.description": "`\\s` 匹配任意的空白符。",

"steps.withoutSpaceCharacter.title": "非空白符 `\\S`",
"steps.withoutSpaceCharacter.description": "`\\S` 匹配任意非空白符的字符",

"steps.lookarounds.title": "零断宽言",
"steps.lookarounds.description": "我们希望正在写的词语出现在另一个词语之前或之后,我们需要用\"lookaround\"。点击下一步开始学习如何使用\"lookaround\"。",

"steps.positiveLookahead.title": "正先行断言: `(?=)`",
"steps.positiveLookahead.description": "我们要在文本中选择小时值,仅选择后面有`PM`的数值。我们需要在表达式后面用正先行断言`(?=)`,在括号内的`=`后面添加`PM`。",

"steps.negativeLookahead.title": "负先行断言: `(?!)`",
"steps.negativeLookahead.description": "我们要在文本中选择小时值以外的数字。我们需要在表达式后面用负先行断言`(?!)`选择没有`PM`的数值。在括号内的`!`后面添加`PM`。",

"steps.positiveLookbehind.title": "正后发断言: `(?<=)`",
"steps.positiveLookbehind.description": "我们要在文本中选择价格,仅选择前面带有`$`的数字。我们要在表达式前面使用正后发断言`(?<=)`。在括号内的`=`后面添加`\\$`。",

"steps.negativeLookbehind.title": "负后发断言: `(?&lt;!)`",
"steps.negativeLookbehind.description": "我们要在文本中选择除价格外的数字,仅选择前面没有`$`的数字。我们要在表达式前用负后发断言`(?&lt;!)`。在括号内的`!`后面添加`\\$`。",

"steps.flags.title": "模式",
"steps.flags.description": "模式改变表达式的输出。这就是为什么模式也叫作`修饰符`。确定表达式的类型是将文本视作单独的行、区分大小写还是查找所有匹配项。继续下一步学习模式。",

"steps.flagsGlobal.title": "全局模式",
"steps.flagsGlobal.description": "全局模式使表达式选中所有的匹配项,否则只选择第一个匹配项。现在启用全局模式,以便选择所有匹配项。",

"steps.flagsMultiline.title": "多行模式",
"steps.flagsMultiline.description": "正则表达式将所有文本视作一行。但如果我们用多行模式就会单独处理每一行。这次,我们根据每一行行末的规律来写出表达式,现在启用多行模式来查找所有匹配。",

"steps.flagsCaseInsensitive.title": "忽略大小写模式",
"steps.flagsCaseInsensitive.description": "用`忽略大小写模式`来避免表达式的大小写敏感。",

"steps.greedyMatching.title": "贪婪匹配",
"steps.greedyMatching.description": "正则表达式默认执行贪婪匹配。这意味着匹配尽可能长。下面的示例选中以`r`结尾的任何匹配项,并且可以是前面带有它的任何字符,但它并不止于第一个字符`r`。",

"steps.lazyMatching.title": "懒惰匹配",
"steps.lazyMatching.description": "懒惰匹配在第一次匹配时停止。下面的例子中,在`*` 之后添加`?`以查找以`*` 结尾且前面带有任何字符的第一个匹配项。这意味着这次匹配将会在第一个字母`*` 停止。",

"steps.completeAllSteps.title": "恭喜,您已完成所有步骤!",
"steps.completeAllSteps.description": "您可以随时返回到前面的步骤,并且可以轻松浏览已通过的所有步骤。"
}