From ec58261f01b8ad1577d82231c4e9bbd732ef8a56 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Mon, 21 Nov 2022 18:56:23 +0800 Subject: [PATCH 01/30] Create Cheatsheet.json --- src/localization/zh-tw/Cheatsheet.json | 70 ++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/localization/zh-tw/Cheatsheet.json diff --git a/src/localization/zh-tw/Cheatsheet.json b/src/localization/zh-tw/Cheatsheet.json new file mode 100644 index 00000000..7c2976e3 --- /dev/null +++ b/src/localization/zh-tw/Cheatsheet.json @@ -0,0 +1,70 @@ +{ + "cheatsheet.section.title": "正規表示式小抄", + "cheatsheet.section.description": "透過正規表示式小抄探索所有正規表示式配對模式與符號。", + + "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": "Matches a word character or position that is not at the end of a word.", + + "cheatsheet.characterClasses": "Character Classes", + "cheatsheet.characterSet.title": "Character Set", + "cheatsheet.characterSet.description": "Matches any character in the set.", + "cheatsheet.negatedCharacterSet.title": "Negated Character Set", + "cheatsheet.negatedCharacterSet.description": "Matches any character not in the set.", + "cheatsheet.range.title": "Range", + "cheatsheet.range.description": "Matches all characters between two characters, including themselves.", + "cheatsheet.dot.title": "Dot", + "cheatsheet.dot.description": "Matches any character except line breaks.", + "cheatsheet.word.title": "Word", + "cheatsheet.word.description": "Matches any alphanumeric character. Including the underline.", + "cheatsheet.notWord.title": "Not Word", + "cheatsheet.notWord.description": "Matches any non-alphanumeric character.", + "cheatsheet.digit.title": "Digit", + "cheatsheet.digit.description": "Matches any numeric character.", + "cheatsheet.notDigit.title": "Not Digit", + "cheatsheet.notDigit.description": "Matches any non-numeric character.", + "cheatsheet.space.title": "Whitespace", + "cheatsheet.space.description": "Matches any whitespace character.", + "cheatsheet.notSpace.title": "Not Whitespace", + "cheatsheet.notSpace.description": "Matches any non-whitespace character.", + + "cheatsheet.flags": "Flags", + "cheatsheet.caseInsensitiveFlag.title": "Ignore Case", + "cheatsheet.caseInsensitiveFlag.description": "Makes the expression case insensitive.", + "cheatsheet.globalFlag.title": "Global", + "cheatsheet.globalFlag.description": "Ensures that the expression does not stop on the first match.", + "cheatsheet.multilineFlag.title": "Multiline", + "cheatsheet.multilineFlag.description": "If not enabled, line start and end equals the beginning and end of the entire string. It doesn't work for each row individually.", + + "cheatsheet.groupAndReferences": "Group & References", + "cheatsheet.group.title": "Group", + "cheatsheet.group.description": "Groups an expression.", + "cheatsheet.reference.title": "Reference", + "cheatsheet.reference.description": "References a grouped expression.", + "cheatsheet.nonCapturingGroup.title": "Non Capturing Group", + "cheatsheet.nonCapturingGroup.description": "Makes a grouping that cannot be referenced.", + + "cheatsheet.lookarounds": "Lookarounds", + "cheatsheet.positiveLookahead.title": "Positive Lookahead", + "cheatsheet.negativeLookahead.title": "Negative Lookahead", + "cheatsheet.positiveLookbehind.title": "Positive Lookbehind", + "cheatsheet.negativeLookbehind.title": "Negative Lookbehind", + + "cheatsheet.quantifiersAndAlternation": "Quantifiers And Alternation", + "cheatsheet.plus.title": "Plus", + "cheatsheet.plus.description": "Expression matches one or more.", + "cheatsheet.asterisk.title": "Asterisk", + "cheatsheet.asterisk.description": "Expression matches zero or more.", + "cheatsheet.quantifier.title": "Quantifier", + "cheatsheet.quantifier.description": "Expression matches within specified ranges.", + "cheatsheet.optional.title": "Optional", + "cheatsheet.optional.description": "Makes the expression optional.", + "cheatsheet.alternation.title": "Alternation", + "cheatsheet.alternation.description": "Or it works like. It waits for one of the expressions it reserved to match." +} From 6552eea97345e603f7ebbabe4b82a6faca529227 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 23 Nov 2022 12:58:35 +0800 Subject: [PATCH 02/30] Update Cheatsheet.json --- src/localization/zh-tw/Cheatsheet.json | 54 +++++++++++++------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/localization/zh-tw/Cheatsheet.json b/src/localization/zh-tw/Cheatsheet.json index 7c2976e3..d50ae6f9 100644 --- a/src/localization/zh-tw/Cheatsheet.json +++ b/src/localization/zh-tw/Cheatsheet.json @@ -10,36 +10,36 @@ "cheatsheet.wordBoundary.title": "文字邊界", "cheatsheet.wordBoundary.description": "配對文字字元或是文件結尾位置。", "cheatsheet.notWordBoundary.title": "非文字邊界", - "cheatsheet.notWordBoundary.description": "Matches a word character or position that is not at the end of a word.", + "cheatsheet.notWordBoundary.description": "配對文字字元或位置不在文字結尾。", - "cheatsheet.characterClasses": "Character Classes", - "cheatsheet.characterSet.title": "Character Set", - "cheatsheet.characterSet.description": "Matches any character in the set.", - "cheatsheet.negatedCharacterSet.title": "Negated Character Set", - "cheatsheet.negatedCharacterSet.description": "Matches any character not in the set.", - "cheatsheet.range.title": "Range", - "cheatsheet.range.description": "Matches all characters between two characters, including themselves.", - "cheatsheet.dot.title": "Dot", - "cheatsheet.dot.description": "Matches any character except line breaks.", - "cheatsheet.word.title": "Word", - "cheatsheet.word.description": "Matches any alphanumeric character. Including the underline.", - "cheatsheet.notWord.title": "Not Word", - "cheatsheet.notWord.description": "Matches any non-alphanumeric character.", - "cheatsheet.digit.title": "Digit", - "cheatsheet.digit.description": "Matches any numeric character.", - "cheatsheet.notDigit.title": "Not Digit", - "cheatsheet.notDigit.description": "Matches any non-numeric character.", - "cheatsheet.space.title": "Whitespace", - "cheatsheet.space.description": "Matches any whitespace character.", - "cheatsheet.notSpace.title": "Not Whitespace", - "cheatsheet.notSpace.description": "Matches any non-whitespace character.", + "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": "Flags", - "cheatsheet.caseInsensitiveFlag.title": "Ignore Case", - "cheatsheet.caseInsensitiveFlag.description": "Makes the expression case insensitive.", - "cheatsheet.globalFlag.title": "Global", + "cheatsheet.flags": "標記", + "cheatsheet.caseInsensitiveFlag.title": "忽略大小寫", + "cheatsheet.caseInsensitiveFlag.description": "讓表示式忽略大小寫。", + "cheatsheet.globalFlag.title": "全域", "cheatsheet.globalFlag.description": "Ensures that the expression does not stop on the first match.", - "cheatsheet.multilineFlag.title": "Multiline", + "cheatsheet.multilineFlag.title": "多行", "cheatsheet.multilineFlag.description": "If not enabled, line start and end equals the beginning and end of the entire string. It doesn't work for each row individually.", "cheatsheet.groupAndReferences": "Group & References", From 46e104bca0530f46a59ab655e24601cec122e7eb Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 30 Nov 2022 15:24:12 +0800 Subject: [PATCH 03/30] Update Cheatsheet.json --- src/localization/zh-tw/Cheatsheet.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/localization/zh-tw/Cheatsheet.json b/src/localization/zh-tw/Cheatsheet.json index d50ae6f9..97c1ff2b 100644 --- a/src/localization/zh-tw/Cheatsheet.json +++ b/src/localization/zh-tw/Cheatsheet.json @@ -38,17 +38,17 @@ "cheatsheet.caseInsensitiveFlag.title": "忽略大小寫", "cheatsheet.caseInsensitiveFlag.description": "讓表示式忽略大小寫。", "cheatsheet.globalFlag.title": "全域", - "cheatsheet.globalFlag.description": "Ensures that the expression does not stop on the first match.", + "cheatsheet.globalFlag.description": "確保表示式不會停在第一次吻合。", "cheatsheet.multilineFlag.title": "多行", - "cheatsheet.multilineFlag.description": "If not enabled, line start and end equals the beginning and end of the entire string. It doesn't work for each row individually.", + "cheatsheet.multilineFlag.description": "如果不啟用,行開頭與結尾等於整個字串的開頭與結尾,不會為個別行作用。", - "cheatsheet.groupAndReferences": "Group & References", - "cheatsheet.group.title": "Group", - "cheatsheet.group.description": "Groups an expression.", - "cheatsheet.reference.title": "Reference", - "cheatsheet.reference.description": "References a grouped expression.", - "cheatsheet.nonCapturingGroup.title": "Non Capturing Group", - "cheatsheet.nonCapturingGroup.description": "Makes a grouping that cannot be referenced.", + "cheatsheet.groupAndReferences": "群組與參照", + "cheatsheet.group.title": "群組", + "cheatsheet.group.description": "將表示式群組。", + "cheatsheet.reference.title": "參照", + "cheatsheet.reference.description": "參照已經群組的表示式。", + "cheatsheet.nonCapturingGroup.title": "非補捉群組", + "cheatsheet.nonCapturingGroup.description": "標記群組不能被參照。", "cheatsheet.lookarounds": "Lookarounds", "cheatsheet.positiveLookahead.title": "Positive Lookahead", From 3e92ce2f9a5d9a2f9704ab44f8b3766f93331dc6 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 30 Nov 2022 16:18:45 +0800 Subject: [PATCH 04/30] Update Cheatsheet.json --- src/localization/zh-tw/Cheatsheet.json | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/localization/zh-tw/Cheatsheet.json b/src/localization/zh-tw/Cheatsheet.json index 97c1ff2b..e0d74399 100644 --- a/src/localization/zh-tw/Cheatsheet.json +++ b/src/localization/zh-tw/Cheatsheet.json @@ -50,21 +50,21 @@ "cheatsheet.nonCapturingGroup.title": "非補捉群組", "cheatsheet.nonCapturingGroup.description": "標記群組不能被參照。", - "cheatsheet.lookarounds": "Lookarounds", - "cheatsheet.positiveLookahead.title": "Positive Lookahead", - "cheatsheet.negativeLookahead.title": "Negative Lookahead", - "cheatsheet.positiveLookbehind.title": "Positive Lookbehind", - "cheatsheet.negativeLookbehind.title": "Negative Lookbehind", + "cheatsheet.lookarounds": "環顧", + "cheatsheet.positiveLookahead.title": "正向向前選取", + "cheatsheet.negativeLookahead.title": "負向向前選取", + "cheatsheet.positiveLookbehind.title": "正向向後選取", + "cheatsheet.negativeLookbehind.title": "負向向後選取", - "cheatsheet.quantifiersAndAlternation": "Quantifiers And Alternation", - "cheatsheet.plus.title": "Plus", - "cheatsheet.plus.description": "Expression matches one or more.", - "cheatsheet.asterisk.title": "Asterisk", - "cheatsheet.asterisk.description": "Expression matches zero or more.", - "cheatsheet.quantifier.title": "Quantifier", - "cheatsheet.quantifier.description": "Expression matches within specified ranges.", - "cheatsheet.optional.title": "Optional", - "cheatsheet.optional.description": "Makes the expression optional.", - "cheatsheet.alternation.title": "Alternation", - "cheatsheet.alternation.description": "Or it works like. It waits for one of the expressions it reserved to match." + "cheatsheet.quantifiersAndAlternation": "量詞與替代建構", + "cheatsheet.plus.title": "正數", + "cheatsheet.plus.description": "表示式吻合一次或多次。", + "cheatsheet.asterisk.title": "星號", + "cheatsheet.asterisk.description": "表示式吻合0次或多次。", + "cheatsheet.quantifier.title": "量詞", + "cheatsheet.quantifier.description": "表示式吻合特定的範圍。", + "cheatsheet.optional.title": "選擇性的", + "cheatsheet.optional.description": "標記表示式為選擇性的。", + "cheatsheet.alternation.title": "替代建構", + "cheatsheet.alternation.description": "或者這樣可以運作,會等待其中存起來的一個表示式吻合。" } From f12b494e82ff37b0a16d1d648c4e582f6325c60b Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 30 Nov 2022 17:00:34 +0800 Subject: [PATCH 05/30] Create general.json --- src/localization/zh-tw/general.json | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/localization/zh-tw/general.json diff --git a/src/localization/zh-tw/general.json b/src/localization/zh-tw/general.json new file mode 100644 index 00000000..845aed93 --- /dev/null +++ b/src/localization/zh-tw/general.json @@ -0,0 +1,39 @@ +{ + "general.prev": "先前", + "general.next": "之後", + "general.result": "結果", + "general.regex": "正規表示式", + "general.text": "文字", + "general.watch": "關注", + "general.start": "開始", + "general.continue": "繼續", + "general.completedStep": "完成步驟!", + "general.hintQuestion": "顯示解答", + "general.reportStep": "回報問題", + "general.startLearning": "開始課程", + "general.comingSoon": "即將來臨", + "general.becomeSponsor": "成為贊助者", + "general.learn": "學習", + "general.playground": "遊樂場", + "general.cheatsheet": "小抄", + "general.ourSponsors": "我們的贊助者", + "general.share": "分享", + "general.shareLinkCopied": "已經複製分享連結!", + "general.somethingWentWrong": "有東西出錯了!", + + "notFound.intro": "你在找的頁面並不存在。", + "notFound.button": "回到首頁", + + "page.landing.title": "學習正規表示式 - 一步步來,從入門到進階。", + "page.learn.title": "學習正規表示式 - 正規表示式互動課程", + "page.cheatsheet.title": "學習正規表示式 - 正規表示式小抄", + "page.playground.title": "學習正規表示式 - 遊樂場", + "page.404.title": "學習正規表示式 - 找不到", + + "page.landing.description": "互動方式學習正規表示式,以你的程度來學習、測驗與分享你自己的正規表示式。", + "page.learn.description": "一步步學習正規表示式,完成互動學習課程讓你學習過程更容易與更快。", + "page.cheatsheet.description": "有時候你只是需要記下正規表示式的語法,試試小抄讓一切更容易理解與記憶。", + "page.playground.description": "你可以透過線上的遊樂場來更容易建構與測試你的正規表示式模組。", + + "learn.safari.unsupportWarning": "這一步驟的正規表示式有些瀏覽器並不支援,如果你在這一步遇到問題,你可以點這裡。" +} From 27823e7e52e9b6b2a2a9637ee466f5f49db27ddc Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 30 Nov 2022 17:01:32 +0800 Subject: [PATCH 06/30] Create index.js --- src/localization/zh-tw/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/localization/zh-tw/index.js diff --git a/src/localization/zh-tw/index.js b/src/localization/zh-tw/index.js new file mode 100644 index 00000000..a30a668d --- /dev/null +++ b/src/localization/zh-tw/index.js @@ -0,0 +1,17 @@ +import cheatsheet from './cheatsheet.json'; +import general from './general.json'; +import landing from './landing.json'; +import learn from './learn.json'; +import lessons from './lessons.json'; +import regexForSeo from './lessons/regexForSeo.json'; + +const messages = { + ...cheatsheet, + ...general, + ...landing, + ...learn, + ...lessons, + ...regexForSeo, +}; + +export default messages; From 9bd3cc1b0b89407aa904257e245b1b4f1df5fc2e Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 30 Nov 2022 17:11:36 +0800 Subject: [PATCH 07/30] Update general.json --- src/localization/zh-tw/general.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/localization/zh-tw/general.json b/src/localization/zh-tw/general.json index 845aed93..90936240 100644 --- a/src/localization/zh-tw/general.json +++ b/src/localization/zh-tw/general.json @@ -4,7 +4,7 @@ "general.result": "結果", "general.regex": "正規表示式", "general.text": "文字", - "general.watch": "關注", + "general.watch": "觀看", "general.start": "開始", "general.continue": "繼續", "general.completedStep": "完成步驟!", From acc6a2fcc5410e1ed4667d3eea63bc535f2f5739 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Thu, 1 Dec 2022 16:36:12 +0800 Subject: [PATCH 08/30] Create landing.json --- src/localization/zh-tw/landing.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/localization/zh-tw/landing.json diff --git a/src/localization/zh-tw/landing.json b/src/localization/zh-tw/landing.json new file mode 100644 index 00000000..ac2d76d9 --- /dev/null +++ b/src/localization/zh-tw/landing.json @@ -0,0 +1,26 @@ +{ + "landing.title": "一步步學習正規表示式,從入門到進階。", + "landing.description": "學習正規表示式比你想像得還要容易,你可以使用這工具來輕鬆`學習`、`練習`、`測驗`與`分享`正規表示式。", + "landing.imageAltText": "一個男士坐姿輕鬆腿放在桌子上的插圖。", + + "section.learn.title": "學習", + "section.learn.content": "`正規表示式`,英文叫 Regex 或是 Regexp,是一組藉由正規表示式語法規則創造,由字元組成的字串。You can easily manage your data with Regex, which uses commands like finding, matching, and editing. Regex can be used in programming languages such as Python, SQL, JavaScript, R, Google Analytics, Google Data Studio, and throughout the coding process. Learn regex online with examples and tutorials on RegexLearn now.", + "section.learn.imageAltText": "Illustration of a mountain with a flag on its summit.", + + "section.cheatsheet.button": "現在檢視吧!", + "section.cheatsheet.title": "Cheatsheet", + "section.cheatsheet.content": "With `RegexLearn Cheatsheet`, you can see all of the usages you need at once and check them directly from the one page. Explore all Regex patterns and symbols with the Regex cheat sheet.", + "section.cheatsheet.imageAltText": "Illustration of a man viewing pages through binoculars.", + + "section.playground.title": "遊樂場", + "section.playground.content": "If you want to generate a Regex, you can easily build and test your Regex pattern via the Playground. As a Regex tester, you can validate and share your Regex with others for collaborative work.", + "section.playground.imageAltText": "Illustration of a cat about to drop a full glass.", + + "section.practice.title": "練習", + "section.practice.content": "If you complete the learning part, it's time to PRACTICE! In the practice section, you can test your Regex knowledge and practice with Regex tutorials based on your level. Soon.", + "section.practice.imageAltText": "Illustration of a woman taking notes from a book.", + + "section.opensource.title": "開放原始碼", + "section.opensource.content": "Regex Learn is an open-source project that welcomes community contributions and is free to use. Working on this project allows you to hone your skills, study, and collaborate. You can contribute & support here.", + "section.opensource.imageAltText": "Illustration of a woman, a man, and a cat putting together puzzle pieces." +} From f5c515e8c3e979073b8f233ef170fc95f2d74550 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Thu, 8 Dec 2022 18:03:46 +0800 Subject: [PATCH 09/30] Update landing.json --- src/localization/zh-tw/landing.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/localization/zh-tw/landing.json b/src/localization/zh-tw/landing.json index ac2d76d9..f6e268df 100644 --- a/src/localization/zh-tw/landing.json +++ b/src/localization/zh-tw/landing.json @@ -5,22 +5,22 @@ "section.learn.title": "學習", "section.learn.content": "`正規表示式`,英文叫 Regex 或是 Regexp,是一組藉由正規表示式語法規則創造,由字元組成的字串。You can easily manage your data with Regex, which uses commands like finding, matching, and editing. Regex can be used in programming languages such as Python, SQL, JavaScript, R, Google Analytics, Google Data Studio, and throughout the coding process. Learn regex online with examples and tutorials on RegexLearn now.", - "section.learn.imageAltText": "Illustration of a mountain with a flag on its summit.", + "section.learn.imageAltText": "山頂有旗幟的插圖。", "section.cheatsheet.button": "現在檢視吧!", - "section.cheatsheet.title": "Cheatsheet", - "section.cheatsheet.content": "With `RegexLearn Cheatsheet`, you can see all of the usages you need at once and check them directly from the one page. Explore all Regex patterns and symbols with the Regex cheat sheet.", - "section.cheatsheet.imageAltText": "Illustration of a man viewing pages through binoculars.", + "section.cheatsheet.title": "小抄", + "section.cheatsheet.content": "有了`RegexLearn小抄`,你可以直接在一個頁面當中,一次看到所有的用法。透過 Regex 小抄瀏覽所有正規表示式模式與符號。", + "section.cheatsheet.imageAltText": "人透過望遠鏡瀏覽頁面的插圖。", "section.playground.title": "遊樂場", - "section.playground.content": "If you want to generate a Regex, you can easily build and test your Regex pattern via the Playground. As a Regex tester, you can validate and share your Regex with others for collaborative work.", - "section.playground.imageAltText": "Illustration of a cat about to drop a full glass.", + "section.playground.content": "如果你想要產生正規表示式的話,你可以輕易透過遊樂場來測式正規表示式模式。而做為正規表示式測試者,你可以跟其他人合作驗證與分享正規表示式模式。", + "section.playground.imageAltText": "一隻貓即將摔破玻璃杯的插圖。", "section.practice.title": "練習", - "section.practice.content": "If you complete the learning part, it's time to PRACTICE! In the practice section, you can test your Regex knowledge and practice with Regex tutorials based on your level. Soon.", - "section.practice.imageAltText": "Illustration of a woman taking notes from a book.", + "section.practice.content": "如果你完成學習課程,如今是練習時間!在練習部分,你可以測試侚的正規表示式知識,以及之後推出,依據你程度練習正規表示式教學的練習題目。", + "section.practice.imageAltText": "一位女士看書記筆記的插圖。", "section.opensource.title": "開放原始碼", - "section.opensource.content": "Regex Learn is an open-source project that welcomes community contributions and is free to use. Working on this project allows you to hone your skills, study, and collaborate. You can contribute & support here.", - "section.opensource.imageAltText": "Illustration of a woman, a man, and a cat putting together puzzle pieces." + "section.opensource.content": "正規表示式學習是開源的專案,因此歡迎各方貢獻R,以及免費使用。貢獻專案將會打摩你的技能、學習與合作。你可以來這邊貢獻與支援。", + "section.opensource.imageAltText": "女士、男士與貓一起組拼圖的插圖。" } From fa25ddf1673339a2cbbc8daa007208854b443c4c Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Fri, 9 Dec 2022 13:25:52 +0800 Subject: [PATCH 10/30] Create learn.json --- src/localization/zh-tw/learn.json | 163 ++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 src/localization/zh-tw/learn.json diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json new file mode 100644 index 00000000..d2457151 --- /dev/null +++ b/src/localization/zh-tw/learn.json @@ -0,0 +1,163 @@ +{ + "examples.starter.title": "練習", + "examples.starter.description": "Now it's time to do some practice to consolidate what we've learned.", + + "examples.finish.title": "完成練習!", + "examples.finish.description": " ", + + "steps.starter.title": "介紹", + "steps.starter.description": "Regex is short for `Regular Expression`. It helps to match, find or manage text. Start by typing `OK` in the Regex field to proceed to the first step and access the more detailed description..", + + "steps.whatIsRegex.title": "什麼是正規表示式 `Regex`?", + "steps.whatIsRegex.description": "Regular Expressions are a string of characters that express a search pattern. Often abbreviated as `Regex` or `Regexp`. It is especially used to find or replace words in texts. In addition, we can test whether a text complies with the rules we set.\\n\\n For example, let's say you have a list of filenames. And you only want to find files with the `pdf` extension. Following typing an expression `^\\w+\\.pdf$` will work. The meaning of the definitions in this expression will become clearer as the steps progress.", + + "steps.basicMatchers.title": "基本吻合", + "steps.basicMatchers.description": "The character or word we want to find is written directly. It is similar to a normal search process. For example, to find the word `curious` in the text, type the same.", + + "steps.dotCharacter.title": "點 `.`: 任何字元", + "steps.dotCharacter.description": "The period `.` allows selecting any character, including special characters and spaces. Type a period `.` in the Regex field to proceed.", + + "steps.characterSet.title": "字元集 `[abc]`", + "steps.characterSet.description": "If one of the characters in a word can be various characters, we write it in square brackets `[]` with all alternative characters. For example, to write an expression that can find all the words in the text, type the characters `a`, `e`, `i`, `o`, `u` adjacently within square brackets `[]`.", + + "steps.negatedCharacterSet.title": "排除字元集 `[^abc]`", + "steps.negatedCharacterSet.description": "To find all words in the text below, except for `ber` and `bor`, type `e` and `o` side by side after the caret `^` character inside square brackets `[]`.", + + "steps.range.title": "字母範圍`[a-z]`", + "steps.range.description": "To find the letters in the specified range, the starting letter and the ending letter are written in square brackets `[]` with a dash between them `-`. It is case-sensitive. Type the expression that will select all lowercase letters between `e` and `o`, including themselves.", + + "steps.rangeNumber.title": "數字範圍`[0-9]`", + "steps.rangeNumber.description": "To find the numbers in the specified range, the starting number and the ending number are written in square brackets `[]` with a dash `-` between them. Write an expression that will select all numbers between `3` and `6`, including themselves.", + + "examples.basicMatchers.title": "練習:基本吻合", + "examples.basicMatchers.description": "Write the expression that will select the words `of` in the text.", + + "examples.dotCharacter.title": "練習:任何字元", + "examples.dotCharacter.description": "Type the expression to select individual letters, numbers, spaces, and special characters in the text. The expression you type must match any character.", + + "examples.characterSet.title": "練習:字元組", + "examples.characterSet.description": "Write the phrase that matches each word in the text. The only characters that change are the initials of the words.", + + "examples.negatedCharacterSet.title": "練習:排除字元組", + "examples.negatedCharacterSet.description": "Write down the expression that will match anything other than the words `beor` and `beur` in the text. Do this using the negated character set.", + + "examples.range.title": "練習:字母範圍", + "examples.range.description": "Write the expression that will select the letters from `g` to `k` in the text.\\n`g` and `k` letters should also be included in this range.", + + "examples.rangeNumber.title": "練習:數字範圍", + "examples.rangeNumber.description": "Type an expression to select numbers from `2` to `7` in the text.\\n`2` and `7` should also be included in this range.", + + "steps.repetitions.title": "重覆", + "steps.repetitions.description": "Some special characters are used to specify how many times a character will be repeated in the text. These special characters are the plus `+`, the asterisk `*`, and the question mark `?`.", + + "steps.asterisk.title": "星號 `*`", + "steps.asterisk.description": "We put an asterisk `*` after a character to indicate that the character may either not match at all or can match many times. For example, indicate that the letter `e` should never occur in the text, or it can occur once or more side by side.", + + "steps.plusCharacter.title": "加號 `+`", + "steps.plusCharacter.description": "To indicate that a character can occur one or more times, we put a plus sign `+` after a character. For example, indicate that the letter `e` can occur one or more times in the text.", + + "steps.questionMark.title": "問號 `?`", + "steps.questionMark.description": "To indicate that a character is optional, we put a `?` question mark after a character. For example, indicate that the following letter `u` is optional.", + + "steps.quantifier.title": "大括號 - 1", + "steps.quantifier.description": "To express a certain number of occurrences of a character, at the end we write curly braces `{n}` along with how many times we want it to occur. For example, indicate that the following letter `e` can occur only `2` times.", + + "steps.quantifierMin.title": "大括號 - 2", + "steps.quantifierMin.description": "To express at least a certain number of occurrences of a character, immediately after the character we write at least how many times we want it to occur followed by a comma `,` and wrapped inside curly braces `{n, }`. For example, indicate that the following letter `e` can occur at least `3` times.", + + "steps.quantifierRange.title": "大括號 - 3", + "steps.quantifierRange.description": "To express the occurrence of a character in a certain number range, we write curly braces `{x,y}` with the interval we want to go to the end. For example, indicate that the following letter `e` can only occur between `1` and `3`.", + + "examples.asterisk.title": "練習:星號 `*`", + "examples.asterisk.description": "Use the asterisk `*` to write the expression that will select each word, suitable for the absence of the letter `e` in the text and the presence of one or more.", + + "examples.plusCharacter.title": "練習:加號 `+`", + "examples.plusCharacter.description": "Write the expression using the plus sign `+` to select words in which the letter `e` occurs one or more times in the text.", + + "examples.questionMark.title": "練習:問號 `?`", + "examples.questionMark.description": "Write the expression indicating that the letter `n` is optional in the text, using the question mark `?`. Thus, both the words `a` and `an` can be selected.", + + "examples.quantifier.title": "練習:大括號 - 1", + "examples.quantifier.description": "Write the expression using curly braces `{}` that will find texts containing `4` numbers side by side. Remember that the range `[0-9]` will match a single digit.", + + "examples.quantifierMin.title": "Practice: Curly Braces - 2", + "examples.quantifierMin.description": "Write the expression using curly braces `{}` that will find texts containing at least `2` numbers side by side.", + + "examples.quantifierRange.title": "Practice: Curly Braces - 3", + "examples.quantifierRange.description": "Write the expression using curly braces `{}` that will find texts containing at least `1` and at most `4` numbers side by side.", + + "steps.groupping.title": "Parentheses `( )`: Grouping", + "steps.groupping.description": "We can group an expression and use these groups to reference or enforce some rules. To group an expression, we enclose `()` in parentheses. For now just group `haa` below.", + + "steps.groupReference.title": "Referencing a Group", + "steps.groupReference.description": "The words `ha` and `haa` are grouped below. The first group is used by writing `\\1` to avoid rewriting. Here `1` denotes the order of grouping. Type `\\2` at the end of the expression to refer to the second group.", + + "steps.nonCapturingGroupping.title": "Parentheses `(?: )`: Non-capturing Grouping", + "steps.nonCapturingGroupping.description": "You can group an expression and ensure that it is not captured by references. For example, below are two groups. However, the first group reference we denote with `\\1` actually indicates the second group, as the first is a non-capturing group.", + + "steps.pipeCharacter.title": "Pipe Character `|`", + "steps.pipeCharacter.description": "It allows to specify that an expression can be in different expressions. Thus, all possible statements are written separated by the pipe sign `|`. This differs from charset `[abc]`, charsets operate at the character level. Alternatives are at the expression level. For example, the following expression would select both `cat` and `rat`. Add another pipe sign `|` to the end of the expression and type `dog` so that all words are selected.", + + "steps.escapeCharacter.title": "Escape Character `\\`", + "steps.escapeCharacter.description": "There are special characters that we use when writing regex. `{ } [ ] / \\ + * . $^ | ?` Before we can select these characters themselves, we need to use an escape character `\\`. For example, to select the dot `.` and asterisk `*` characters in the text, let's add an escape character `\\` before it.", + + "steps.caret.title": "Caret Sign `^`:\\nSelecting by Line Start", + "steps.caret.description": "We were using `[0-9]` to find numbers. To find only numbers at the beginning of a line, prefix this expression with the `^` sign.", + + "steps.dollar.title": "Dollar Sign `$`:\\nSelecting by End of Line", + "steps.dollar.description": "Let's use the `$` sign after the `html` value to find the `html` texts only at the end of the line.", + + "steps.wordCharacter.title": "Word Character `\\w`: Letter, Number and Underscore", + "steps.wordCharacter.description": "The expression `\\w` is used to find letters, numbers and underscore characters. Let's use the expression `\\w` to find word characters in the text.", + + "steps.withoutWordCharacter.title": "Except Word Character `\\W`", + "steps.withoutWordCharacter.description": "The expression `\\W` is used to find characters other than letters, numbers, and underscores.", + + "steps.numberCharacter.title": "Number Character `\\d`", + "steps.numberCharacter.description": "`\\d` is used to find only number characters.", + + "steps.withoutNumberCharacter.title": "Except Number Character `\\D`", + "steps.withoutNumberCharacter.description": "`\\D` is used to find non-numeric characters.", + + "steps.spaceCharacter.title": "Space Character `\\s`", + "steps.spaceCharacter.description": "`\\s` is used to find only space characters.", + + "steps.withoutSpaceCharacter.title": "Except Space Character `\\S`", + "steps.withoutSpaceCharacter.description": "`\\S` is used to find non-space characters.", + + "steps.lookarounds.title": "Lookarounds", + "steps.lookarounds.description": "If we want the phrase we're writing to come before or after another phrase, we need to \"lookaround\". Take the next step to learn how to \"lookaround\".", + + "steps.positiveLookahead.title": "Positive Lookahead: `(?=)`", + "steps.positiveLookahead.description": "For example, we want to select the hour value in the text. Therefore, to select only the numerical values that have `PM` after them, we need to write the positive look-ahead expression `(?=)` after our expression. Include `PM` after the `=` sign inside the parentheses.", + + "steps.negativeLookahead.title": "Negative Lookahead: `(?!)`", + "steps.negativeLookahead.description": "For example, we want to select numbers other than the hour value in the text. Therefore, we need to write the negative look-ahead `(?!)` expression after our expression to select only the numerical values that do not have `PM` after them. Include `PM` after the `!` sign inside the parentheses.", + + "steps.positiveLookbehind.title": "Positive Lookbehind: `(?<=)`", + "steps.positiveLookbehind.description": "For example, we want to select the price value in the text. Therefore, to select only the number values that are preceded by `$`, we need to write the positive lookbehind expression `(?<=)` before our expression. Add `\\$` after the `=` sign inside the parenthesis.", + + "steps.negativeLookbehind.title": "Negative Lookbehind: `(?<!)`", + "steps.negativeLookbehind.description": "For example, we want to select numbers in the text other than the price value. Therefore, to select only numeric values that are not preceded by `$`, we need to write the negative lookbehind `(?<!)` before our expression. Add `\\$` after the `!` inside the parenthesis.", + + "steps.flags.title": "Flags", + "steps.flags.description": "Flags change the output of the expression. That's why flags are also called `modifiers`. Flags determine whether the typed expression treats text as separate lines, is case sensitive, or finds all matches. Continue to the next step to learn the flags.", + + "steps.flagsGlobal.title": "Global Flag", + "steps.flagsGlobal.description": "The `global` flag causes the expression to select all matches. If not used it will only select the first match. Now enable the `global` flag to be able to select all matches.", + + "steps.flagsMultiline.title": "Multiline Flag", + "steps.flagsMultiline.description": "Regex sees all text as one line. But we use the `multiline` flag to handle each line separately. In this way, the expressions we write to identify patterns at the end of lines work separately for each line. Now enable the `multiline` flag to find all matches.", + + "steps.flagsCaseInsensitive.title": "Case-insensitive Flag", + "steps.flagsCaseInsensitive.description": "In order to remove the case-sensitivity of the expression we have written, we must activate the `case-insensitive` flag.", + + "steps.greedyMatching.title": "Greedy Matching", + "steps.greedyMatching.description": "Regex does a greedy match by default. This means that the matchmaking will be as long as possible. Check out the example below. It refers to any match that ends in `r` and can be any character preceded by it. But it does not stop at the first letter `r`.", + + "steps.lazyMatching.title": "Lazy Matching", + "steps.lazyMatching.description": "Lazy matchmaking, unlike greedy matching, stops at the first matching. For example, in the example below, add a `?` after `*` to find the first match that ends with the letter `r` and is preceded by any character. It means that this match will stop at the first letter `r`.", + + "steps.completeAllSteps.title": "Congratulations, you have completed all the steps!", + "steps.completeAllSteps.description": "You can return to the previous steps whenever you want, and you can easily navigate through all the steps you have passed." +} From 367904812fdee0cea55cd56ff6f3043d416d5400 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 14 Dec 2022 13:13:31 +0800 Subject: [PATCH 11/30] Create lessons.json --- src/localization/zh-tw/lessons.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/localization/zh-tw/lessons.json diff --git a/src/localization/zh-tw/lessons.json b/src/localization/zh-tw/lessons.json new file mode 100644 index 00000000..c0912c99 --- /dev/null +++ b/src/localization/zh-tw/lessons.json @@ -0,0 +1,7 @@ +{ + "lessons.regex101.title": "Regex 101 - ZH-TW", + "lessons.regex101.description": "你可以在本次教學學習基礎的正規表示式知識。", + + "lessons.regexForSeo.title": "Regex for SEO - ZH-TW", + "lessons.regexForSeo.description": "在這次課程中,你可以學習與應用正規表示式在 SEO 的用途。" +} From 2a15d7c88ec8eb68bccb032418480696d7f4261a Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 14 Dec 2022 23:46:55 +0800 Subject: [PATCH 12/30] Update learn.json --- src/localization/zh-tw/learn.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index d2457151..e18fd06d 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -6,7 +6,7 @@ "examples.finish.description": " ", "steps.starter.title": "介紹", - "steps.starter.description": "Regex is short for `Regular Expression`. It helps to match, find or manage text. Start by typing `OK` in the Regex field to proceed to the first step and access the more detailed description..", + "steps.starter.description": "Regex 是`正規表示式`(Regular Expression)的縮寫,能幫助你吻合、尋找與管理文字。先從在正規表示式欄位輸入`OK`開始第一步,並且察看更為詳細的說明。", "steps.whatIsRegex.title": "什麼是正規表示式 `Regex`?", "steps.whatIsRegex.description": "Regular Expressions are a string of characters that express a search pattern. Often abbreviated as `Regex` or `Regexp`. It is especially used to find or replace words in texts. In addition, we can test whether a text complies with the rules we set.\\n\\n For example, let's say you have a list of filenames. And you only want to find files with the `pdf` extension. Following typing an expression `^\\w+\\.pdf$` will work. The meaning of the definitions in this expression will become clearer as the steps progress.", @@ -80,16 +80,16 @@ "examples.quantifier.title": "練習:大括號 - 1", "examples.quantifier.description": "Write the expression using curly braces `{}` that will find texts containing `4` numbers side by side. Remember that the range `[0-9]` will match a single digit.", - "examples.quantifierMin.title": "Practice: Curly Braces - 2", + "examples.quantifierMin.title": "練習:大括號 - 2", "examples.quantifierMin.description": "Write the expression using curly braces `{}` that will find texts containing at least `2` numbers side by side.", - "examples.quantifierRange.title": "Practice: Curly Braces - 3", + "examples.quantifierRange.title": "練習:大括號 - 3", "examples.quantifierRange.description": "Write the expression using curly braces `{}` that will find texts containing at least `1` and at most `4` numbers side by side.", - "steps.groupping.title": "Parentheses `( )`: Grouping", + "steps.groupping.title": "Parentheses `( )`: 群組", "steps.groupping.description": "We can group an expression and use these groups to reference or enforce some rules. To group an expression, we enclose `()` in parentheses. For now just group `haa` below.", - "steps.groupReference.title": "Referencing a Group", + "steps.groupReference.title": "參照群組", "steps.groupReference.description": "The words `ha` and `haa` are grouped below. The first group is used by writing `\\1` to avoid rewriting. Here `1` denotes the order of grouping. Type `\\2` at the end of the expression to refer to the second group.", "steps.nonCapturingGroupping.title": "Parentheses `(?: )`: Non-capturing Grouping", From 9b63487e06ff96aa5e70bbcad1265ab9b52da3ad Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Fri, 31 May 2024 11:48:12 +0800 Subject: [PATCH 13/30] Create regexForSeo.json start translation --- .../zh-tw/lessons/regexForSeo.json | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/localization/zh-tw/lessons/regexForSeo.json diff --git a/src/localization/zh-tw/lessons/regexForSeo.json b/src/localization/zh-tw/lessons/regexForSeo.json new file mode 100644 index 00000000..bcf22cc2 --- /dev/null +++ b/src/localization/zh-tw/lessons/regexForSeo.json @@ -0,0 +1,49 @@ +{ + "lesson.regexForSeo.starter.title": "Regex for SEO", + "lesson.regexForSeo.starter.description": "Regex is a set of regular expressions frequently used in many fields, especially by people who want to increase their productivity. The advantages of using Regex for SEO are that it makes it easier to analyze big data and write richer filters. We recommend starting with the `Regex 101` tutorial if you are new to Regex. \\n\\nStart by typing `OK` in the Regex field to proceed to the first step and access more detailed explanations.", + + "lesson.regexForSeo.usage.title": "Use Cases", + "lesson.regexForSeo.usage.description": "You can use Regex for SEO on platforms such as `Google Analytics`, `Google Data Studio`, `Google Sheets`, `Google Search Console`, `Ahrefs`, `Deepcrawl`, `Screaming Frog`. It is also frequently used in `.htaccess` and `robots.txt (regex-like syntax)` files.\\n\\nBelow is a sample regex that will select only texts in the list that start with `Google`.", + + "lesson.regexForSeo.basics.title": "Basics", + "lesson.regexForSeo.basics.description": "Let's take a look at some Regexes that you will use frequently. We recommend that you review the `Regex 101` tutorial to learn more about these. Type `Yes` to get started.", + + "lesson.regexForSeo.or.title": "Or Operator `|`", + "lesson.regexForSeo.or.description": "We use the Or operator `|` to filter out multiple expressions. For example, filter text containing `seo` and `regex` by writing the two words, separating them with the Or operator `|`.", + + "lesson.regexForSeo.optional.title": "Optional Operator `?`", + "lesson.regexForSeo.optional.description": "We use it to express that an expression or character is optional. For example, we want to filter text containing both `http` and `https`. We can use the Or operator `|` for this operation, but there is a better way for these two almost identical words.\\n\\nIn this example, the letter `s` is optional. Instead, add a question mark `?` to the end of the letter `s`.", + + "lesson.regexForSeo.any.title": "Anything `.*`", + "lesson.regexForSeo.any.description": "In regex, the period `.` can match anything, including spaces. But this match is only for a single character where it is used. The asterisk character `*` means that the preceding item does not exist at all or occurs more than once in the text. When the two are used together, it means that there can be an element of unlimited length where used.\\n\\nBelow are various keywords. Add `.*` to the end of the regex to write the expression that starts with `how to write` and matches everything after it.", + + "lesson.regexForSeo.contains.title": "Contains", + "lesson.regexForSeo.contains.description": "To filter the text that contains the words or phrases we're looking for, we write the word we're looking for between our two phrases `.*` that match everything. For example, type `.*buy.*` to filter out what includes `buy`.", + + "lesson.regexForSeo.negated.title": "Negated Character Sets `[^abc]`", + "lesson.regexForSeo.negated.description": "We use the negated character sets `[^]` to denote characters we don't want to be included. The characters we do not want to be included are written in square brackets with a caret at the beginning. Below are both `http` and `https`. Since `http` occurs in both, it will also choose `https`. Type `[^s]` after the letter `p` to exclude the letter `s`.", + + "lesson.regexForSeo.caret.title": "Caret Sign `^`", + "lesson.regexForSeo.caret.description": "Let's say we have a list of URLs, and we want to find only those URLs that start with `http`. But URLs also contain `http` in different parts other than their beginning. So add a caret `^` to the beginning of the following expression to filter out only those starting with `http`.", + + "lesson.regexForSeo.dollarAndEscape.title": "Dollar Sign `$` and Escape Character `\\`", + "lesson.regexForSeo.dollarAndEscape.description": "Again we have a list of URLs. We want to find only those URLs ending in `.htm`.\\n\\nSince the period `.` is a special character that matches everything, we first need to disable the period before `htm` using the escape character `\\`. This applies to all special characters.\\n\\nThen add a `$` sign to the end of the expression. This ensures that the text to be filtered ends with the expression written before it.", + + "lesson.regexForSeo.limitation.title": "Length Restrictions `{n}`", + "lesson.regexForSeo.limitation.description": "We may want to filter the results by character lengths. For example, to filter URLs that are `35` characters long, type the number you want to use for the length, `{35}`, using curly braces at the end of the period `.`.", + + "lesson.regexForSeo.maxLimitation.title": "Length Restrictions (Maximum) `{n,m}`", + "lesson.regexForSeo.maxLimitation.description": "To filter URLs with a maximum length of `35` characters, type `{1,35}` the minimum and maximum number values we will use for the length, using curly braces at the end of the period `.`.", + + "lesson.regexForSeo.minLimitation.title": "Length Restrictions (Minumum) `{n,}`", + "lesson.regexForSeo.minLimitation.description": "To filter URLs with a minimum length of `35` characters, type `{35,}` using curly braces at the end of the period and ending with a comma for the minimum number value we will use for the length.", + + "lesson.regexForSeo.robots.title": "robots.txt (regex-like syntax)", + "lesson.regexForSeo.robots.description": "Here is an example of regex-like usage in the `robots.txt` file. The example states that bots should not crawl links with the extension `pdf`.", + + "lesson.regexForSeo.htaccess.title": ".htaccess", + "lesson.regexForSeo.htaccess.description": "Here is an example of using regex in the `.htaccess` file. In the example, `php` extension links are directed to `html` extensions with `301` code.", + + "lesson.regexForSeo.outro.title": "Outro", + "lesson.regexForSeo.outro.description": "Regex knowledge is a skill that increases productivity on any platform that allows you to use regex. Once you start using it and improve this skill, it will help you complete many repetitive tasks faster and save time for other things. To better understand the basics of Regex, you can visit the `Regex 101` tutorial. You can use the `Playground` page to test your expressions on your texts." +} From 9ec951071404a4af01aa6149e90341c4e4c9686f Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Fri, 31 May 2024 12:01:46 +0800 Subject: [PATCH 14/30] Update learn.json translate subtitle --- src/localization/zh-tw/learn.json | 48 +++++++++++++++---------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index e18fd06d..cb757833 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -1,6 +1,6 @@ { "examples.starter.title": "練習", - "examples.starter.description": "Now it's time to do some practice to consolidate what we've learned.", + "examples.starter.description": "現在透過練習來強化所學。", "examples.finish.title": "完成練習!", "examples.finish.description": " ", @@ -92,72 +92,72 @@ "steps.groupReference.title": "參照群組", "steps.groupReference.description": "The words `ha` and `haa` are grouped below. The first group is used by writing `\\1` to avoid rewriting. Here `1` denotes the order of grouping. Type `\\2` at the end of the expression to refer to the second group.", - "steps.nonCapturingGroupping.title": "Parentheses `(?: )`: Non-capturing Grouping", + "steps.nonCapturingGroupping.title": "圓括號 `(?: )`: 非捕捉群組", "steps.nonCapturingGroupping.description": "You can group an expression and ensure that it is not captured by references. For example, below are two groups. However, the first group reference we denote with `\\1` actually indicates the second group, as the first is a non-capturing group.", - "steps.pipeCharacter.title": "Pipe Character `|`", + "steps.pipeCharacter.title": "管道字元 `|`", "steps.pipeCharacter.description": "It allows to specify that an expression can be in different expressions. Thus, all possible statements are written separated by the pipe sign `|`. This differs from charset `[abc]`, charsets operate at the character level. Alternatives are at the expression level. For example, the following expression would select both `cat` and `rat`. Add another pipe sign `|` to the end of the expression and type `dog` so that all words are selected.", - "steps.escapeCharacter.title": "Escape Character `\\`", + "steps.escapeCharacter.title": "逃脫字元 `\\`", "steps.escapeCharacter.description": "There are special characters that we use when writing regex. `{ } [ ] / \\ + * . $^ | ?` Before we can select these characters themselves, we need to use an escape character `\\`. For example, to select the dot `.` and asterisk `*` characters in the text, let's add an escape character `\\` before it.", - "steps.caret.title": "Caret Sign `^`:\\nSelecting by Line Start", + "steps.caret.title": "插入記號 `^`:\\nSelecting by Line Start", "steps.caret.description": "We were using `[0-9]` to find numbers. To find only numbers at the beginning of a line, prefix this expression with the `^` sign.", - "steps.dollar.title": "Dollar Sign `$`:\\nSelecting by End of Line", + "steps.dollar.title": "金錢符號 `$`:\\nSelecting by End of Line", "steps.dollar.description": "Let's use the `$` sign after the `html` value to find the `html` texts only at the end of the line.", - "steps.wordCharacter.title": "Word Character `\\w`: Letter, Number and Underscore", + "steps.wordCharacter.title": "文字字元 `\\w`: 字母、數字與底線", "steps.wordCharacter.description": "The expression `\\w` is used to find letters, numbers and underscore characters. Let's use the expression `\\w` to find word characters in the text.", - "steps.withoutWordCharacter.title": "Except Word Character `\\W`", + "steps.withoutWordCharacter.title": "排除文字字元 `\\W`", "steps.withoutWordCharacter.description": "The expression `\\W` is used to find characters other than letters, numbers, and underscores.", - "steps.numberCharacter.title": "Number Character `\\d`", + "steps.numberCharacter.title": "數字字元 `\\d`", "steps.numberCharacter.description": "`\\d` is used to find only number characters.", - "steps.withoutNumberCharacter.title": "Except Number Character `\\D`", + "steps.withoutNumberCharacter.title": "排除數字字元 `\\D`", "steps.withoutNumberCharacter.description": "`\\D` is used to find non-numeric characters.", - "steps.spaceCharacter.title": "Space Character `\\s`", + "steps.spaceCharacter.title": "空白字元 `\\s`", "steps.spaceCharacter.description": "`\\s` is used to find only space characters.", - "steps.withoutSpaceCharacter.title": "Except Space Character `\\S`", + "steps.withoutSpaceCharacter.title": "排除空白字元 `\\S`", "steps.withoutSpaceCharacter.description": "`\\S` is used to find non-space characters.", - "steps.lookarounds.title": "Lookarounds", + "steps.lookarounds.title": "環顧", "steps.lookarounds.description": "If we want the phrase we're writing to come before or after another phrase, we need to \"lookaround\". Take the next step to learn how to \"lookaround\".", - "steps.positiveLookahead.title": "Positive Lookahead: `(?=)`", + "steps.positiveLookahead.title": "正面向前環顧: `(?=)`", "steps.positiveLookahead.description": "For example, we want to select the hour value in the text. Therefore, to select only the numerical values that have `PM` after them, we need to write the positive look-ahead expression `(?=)` after our expression. Include `PM` after the `=` sign inside the parentheses.", - "steps.negativeLookahead.title": "Negative Lookahead: `(?!)`", + "steps.negativeLookahead.title": "負面向前環顧: `(?!)`", "steps.negativeLookahead.description": "For example, we want to select numbers other than the hour value in the text. Therefore, we need to write the negative look-ahead `(?!)` expression after our expression to select only the numerical values that do not have `PM` after them. Include `PM` after the `!` sign inside the parentheses.", - "steps.positiveLookbehind.title": "Positive Lookbehind: `(?<=)`", + "steps.positiveLookbehind.title": "正面向後環顧: `(?<=)`", "steps.positiveLookbehind.description": "For example, we want to select the price value in the text. Therefore, to select only the number values that are preceded by `$`, we need to write the positive lookbehind expression `(?<=)` before our expression. Add `\\$` after the `=` sign inside the parenthesis.", - "steps.negativeLookbehind.title": "Negative Lookbehind: `(?<!)`", + "steps.negativeLookbehind.title": "負面向後環顧: `(?<!)`", "steps.negativeLookbehind.description": "For example, we want to select numbers in the text other than the price value. Therefore, to select only numeric values that are not preceded by `$`, we need to write the negative lookbehind `(?<!)` before our expression. Add `\\$` after the `!` inside the parenthesis.", - "steps.flags.title": "Flags", + "steps.flags.title": "修飾詞", "steps.flags.description": "Flags change the output of the expression. That's why flags are also called `modifiers`. Flags determine whether the typed expression treats text as separate lines, is case sensitive, or finds all matches. Continue to the next step to learn the flags.", - "steps.flagsGlobal.title": "Global Flag", + "steps.flagsGlobal.title": "全域修飾詞", "steps.flagsGlobal.description": "The `global` flag causes the expression to select all matches. If not used it will only select the first match. Now enable the `global` flag to be able to select all matches.", - "steps.flagsMultiline.title": "Multiline Flag", + "steps.flagsMultiline.title": "多行修飾詞", "steps.flagsMultiline.description": "Regex sees all text as one line. But we use the `multiline` flag to handle each line separately. In this way, the expressions we write to identify patterns at the end of lines work separately for each line. Now enable the `multiline` flag to find all matches.", - "steps.flagsCaseInsensitive.title": "Case-insensitive Flag", + "steps.flagsCaseInsensitive.title": "不區分大小寫修飾詞", "steps.flagsCaseInsensitive.description": "In order to remove the case-sensitivity of the expression we have written, we must activate the `case-insensitive` flag.", - "steps.greedyMatching.title": "Greedy Matching", + "steps.greedyMatching.title": "貪心比對", "steps.greedyMatching.description": "Regex does a greedy match by default. This means that the matchmaking will be as long as possible. Check out the example below. It refers to any match that ends in `r` and can be any character preceded by it. But it does not stop at the first letter `r`.", - "steps.lazyMatching.title": "Lazy Matching", + "steps.lazyMatching.title": "偷懶比對", "steps.lazyMatching.description": "Lazy matchmaking, unlike greedy matching, stops at the first matching. For example, in the example below, add a `?` after `*` to find the first match that ends with the letter `r` and is preceded by any character. It means that this match will stop at the first letter `r`.", - "steps.completeAllSteps.title": "Congratulations, you have completed all the steps!", + "steps.completeAllSteps.title": "恭喜你,你已經完成所有步驟了!", "steps.completeAllSteps.description": "You can return to the previous steps whenever you want, and you can easily navigate through all the steps you have passed." } From 0ea387fe139e45c7cc501600c85de208dc508ad0 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Fri, 31 May 2024 12:03:35 +0800 Subject: [PATCH 15/30] Update index.ts add zh-tw icon --- src/localization/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/localization/index.ts b/src/localization/index.ts index 96ea6a3e..2ecf67e2 100644 --- a/src/localization/index.ts +++ b/src/localization/index.ts @@ -6,6 +6,7 @@ export const langNames = { tr: '🇹🇷', ru: '🇷🇺', 'zh-cn': '🇨🇳', + 'zh-tw': '🇹🇼', uk: '🇺🇦', ka: '🇬🇪', ko: '🇰🇷', From 423132614d4e5fe56633cd500b5b938ce2ab129a Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Fri, 31 May 2024 18:21:00 +0800 Subject: [PATCH 16/30] Update learn.json --- src/localization/zh-tw/learn.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index cb757833..fc9670e1 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -9,7 +9,7 @@ "steps.starter.description": "Regex 是`正規表示式`(Regular Expression)的縮寫,能幫助你吻合、尋找與管理文字。先從在正規表示式欄位輸入`OK`開始第一步,並且察看更為詳細的說明。", "steps.whatIsRegex.title": "什麼是正規表示式 `Regex`?", - "steps.whatIsRegex.description": "Regular Expressions are a string of characters that express a search pattern. Often abbreviated as `Regex` or `Regexp`. It is especially used to find or replace words in texts. In addition, we can test whether a text complies with the rules we set.\\n\\n For example, let's say you have a list of filenames. And you only want to find files with the `pdf` extension. Following typing an expression `^\\w+\\.pdf$` will work. The meaning of the definitions in this expression will become clearer as the steps progress.", + "steps.whatIsRegex.description": "正規表示式是一系列表現搜尋模式的字元組合,通常英文縮寫為 `Regex` 或是 `Regexp`,通常會用來尋找或是取代文字片段當中的字。除此之外,我們也能測試文字是否符合我們設定的規則。\\n\\n例如說,你手上有檔案名稱清單,你只想要找副檔名有 `pdf` 的檔案,只要打上 `^\\w+\\.pdf$` 就可以找出來了。這意味著採用正規表示式會隨著步驟走越來越清楚了。", "steps.basicMatchers.title": "基本吻合", "steps.basicMatchers.description": "The character or word we want to find is written directly. It is similar to a normal search process. For example, to find the word `curious` in the text, type the same.", @@ -156,8 +156,8 @@ "steps.greedyMatching.description": "Regex does a greedy match by default. This means that the matchmaking will be as long as possible. Check out the example below. It refers to any match that ends in `r` and can be any character preceded by it. But it does not stop at the first letter `r`.", "steps.lazyMatching.title": "偷懶比對", - "steps.lazyMatching.description": "Lazy matchmaking, unlike greedy matching, stops at the first matching. For example, in the example below, add a `?` after `*` to find the first match that ends with the letter `r` and is preceded by any character. It means that this match will stop at the first letter `r`.", + "steps.lazyMatching.description": "偷懶比對,不像貪心比對那樣,會在第一次吻合時就停止了。例如說,以下的例子來說,在 `*` 新增 `?` 則會在吻合字前面有任何字母,字結尾有 `r` 時,吻合一次就會停止,意味著吻合到第一個 `r` 字母。", "steps.completeAllSteps.title": "恭喜你,你已經完成所有步驟了!", - "steps.completeAllSteps.description": "You can return to the previous steps whenever you want, and you can easily navigate through all the steps you have passed." + "steps.completeAllSteps.description": "你可以在任何時候回到先前的步驟,而且可以瀏覽先前通過的步驟。" } From dc07b6177369b3255041cd9d46540119f327d2a2 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Wed, 5 Jun 2024 15:02:07 +0800 Subject: [PATCH 17/30] Update learn.json --- src/localization/zh-tw/learn.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index fc9670e1..9429cff6 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -12,19 +12,19 @@ "steps.whatIsRegex.description": "正規表示式是一系列表現搜尋模式的字元組合,通常英文縮寫為 `Regex` 或是 `Regexp`,通常會用來尋找或是取代文字片段當中的字。除此之外,我們也能測試文字是否符合我們設定的規則。\\n\\n例如說,你手上有檔案名稱清單,你只想要找副檔名有 `pdf` 的檔案,只要打上 `^\\w+\\.pdf$` 就可以找出來了。這意味著採用正規表示式會隨著步驟走越來越清楚了。", "steps.basicMatchers.title": "基本吻合", - "steps.basicMatchers.description": "The character or word we want to find is written directly. It is similar to a normal search process. For example, to find the word `curious` in the text, type the same.", + "steps.basicMatchers.description": "我們想要找的字元或是文字已經寫好了,整個過程類似尋找。例如,在段落當中尋找`好奇`,也一樣輸入。", "steps.dotCharacter.title": "點 `.`: 任何字元", - "steps.dotCharacter.description": "The period `.` allows selecting any character, including special characters and spaces. Type a period `.` in the Regex field to proceed.", + "steps.dotCharacter.description": "點 `.` 允許選擇任何字元,包括特殊字元與空白。在正規表示式欄位輸入點 `.`。", "steps.characterSet.title": "字元集 `[abc]`", - "steps.characterSet.description": "If one of the characters in a word can be various characters, we write it in square brackets `[]` with all alternative characters. For example, to write an expression that can find all the words in the text, type the characters `a`, `e`, `i`, `o`, `u` adjacently within square brackets `[]`.", + "steps.characterSet.description": "如果文字當中的其中一個字元是任何字元,我們會在括號 `[]` 內輸入所有不同字元。例如,如果要撰寫表示式找段落當中出現的所有文字,則在括號 `[]` 內彼此相鄰輸入字元 `a`、`e`、`i`、`o`、`u`。", "steps.negatedCharacterSet.title": "排除字元集 `[^abc]`", - "steps.negatedCharacterSet.description": "To find all words in the text below, except for `ber` and `bor`, type `e` and `o` side by side after the caret `^` character inside square brackets `[]`.", + "steps.negatedCharacterSet.description": "要找尋下列段落所有文字當中,除了 `ber` 與 `bor` 之外的文字,在括號 `[]` 內插入記號 `^` 後彼此相鄰輸入 `e`、`o`。", "steps.range.title": "字母範圍`[a-z]`", - "steps.range.description": "To find the letters in the specified range, the starting letter and the ending letter are written in square brackets `[]` with a dash between them `-`. It is case-sensitive. Type the expression that will select all lowercase letters between `e` and `o`, including themselves.", + "steps.range.description": "要找尋特定範圍內的字母,可以在括號 `[]` 內填寫開始與結束的字母,並且在中間 `-` 連結,這種方式是區分大小寫的。請輸入包括 `e` 與 `o` 兩者之間的小寫字母。", "steps.rangeNumber.title": "數字範圍`[0-9]`", "steps.rangeNumber.description": "To find the numbers in the specified range, the starting number and the ending number are written in square brackets `[]` with a dash `-` between them. Write an expression that will select all numbers between `3` and `6`, including themselves.", From 03e98abc848cf0dbe510383de26cfe051412524b Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Thu, 6 Jun 2024 16:32:43 +0800 Subject: [PATCH 18/30] Update learn.json --- src/localization/zh-tw/learn.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index 9429cff6..4745e68c 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -24,13 +24,13 @@ "steps.negatedCharacterSet.description": "要找尋下列段落所有文字當中,除了 `ber` 與 `bor` 之外的文字,在括號 `[]` 內插入記號 `^` 後彼此相鄰輸入 `e`、`o`。", "steps.range.title": "字母範圍`[a-z]`", - "steps.range.description": "要找尋特定範圍內的字母,可以在括號 `[]` 內填寫開始與結束的字母,並且在中間 `-` 連結,這種方式是區分大小寫的。請輸入包括 `e` 與 `o` 兩者之間的小寫字母。", + "steps.range.description": "要找尋特定範圍內的字母,可以在括號 `[]` 內填寫開始與結束的字母,並且在中間用折線 `-` 連結,這種方式是區分大小寫的。請輸入包括 `e` 與 `o` 則會選擇包括本身兩者之間的小寫字母。", "steps.rangeNumber.title": "數字範圍`[0-9]`", - "steps.rangeNumber.description": "To find the numbers in the specified range, the starting number and the ending number are written in square brackets `[]` with a dash `-` between them. Write an expression that will select all numbers between `3` and `6`, including themselves.", + "steps.rangeNumber.description": "要找尋特定範圍內的數字,可以在括號 `[]` 內填寫開始與結束的數字,並且在中間用折線 `-` 連結。請輸入包括 `3` 與 `6`,則會選擇包括本身兩者之間數字。", "examples.basicMatchers.title": "練習:基本吻合", - "examples.basicMatchers.description": "Write the expression that will select the words `of` in the text.", + "examples.basicMatchers.description": "撰寫選取段落當中 `of` 文字的表示式。", "examples.dotCharacter.title": "練習:任何字元", "examples.dotCharacter.description": "Type the expression to select individual letters, numbers, spaces, and special characters in the text. The expression you type must match any character.", From 405ee36a7f693876ec5bc5f21832eb12029ad2d1 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Mon, 24 Jun 2024 10:55:53 +0800 Subject: [PATCH 19/30] Update learn.json --- src/localization/zh-tw/learn.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index 4745e68c..15c07350 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -33,25 +33,25 @@ "examples.basicMatchers.description": "撰寫選取段落當中 `of` 文字的表示式。", "examples.dotCharacter.title": "練習:任何字元", - "examples.dotCharacter.description": "Type the expression to select individual letters, numbers, spaces, and special characters in the text. The expression you type must match any character.", + "examples.dotCharacter.description": "輸入這一表示式來選擇文字當中的單一字母、數字、空白與特殊符號。表示式能找到任何字元。", "examples.characterSet.title": "練習:字元組", - "examples.characterSet.description": "Write the phrase that matches each word in the text. The only characters that change are the initials of the words.", + "examples.characterSet.description": "撰寫表示式來吻合段落中的文字,只有開頭的文字要改變。", "examples.negatedCharacterSet.title": "練習:排除字元組", - "examples.negatedCharacterSet.description": "Write down the expression that will match anything other than the words `beor` and `beur` in the text. Do this using the negated character set.", + "examples.negatedCharacterSet.description": "撰寫表示式,吻合除了 `beor` 與 `beur` 之外段落當中的文字。請使用排除字元組。", "examples.range.title": "練習:字母範圍", - "examples.range.description": "Write the expression that will select the letters from `g` to `k` in the text.\\n`g` and `k` letters should also be included in this range.", + "examples.range.description": "撰寫表示式來選擇段落當中範圍從 `g` 到 `k` 之間的字母。\\n`g` 到 `k` 這兩個字母也必須包括在範圍內。", "examples.rangeNumber.title": "練習:數字範圍", - "examples.rangeNumber.description": "Type an expression to select numbers from `2` to `7` in the text.\\n`2` and `7` should also be included in this range.", + "examples.rangeNumber.description": "撰寫表示式來選擇段落當中範圍從 `2` 到 `7` 之間的數字。\\n`2` 到 `7` 這兩個數字也必須包括在範圍內。", "steps.repetitions.title": "重覆", - "steps.repetitions.description": "Some special characters are used to specify how many times a character will be repeated in the text. These special characters are the plus `+`, the asterisk `*`, and the question mark `?`.", + "steps.repetitions.description": "有些特殊字元用在表示段落當中特定字元重覆次數。這些特殊字元有加號 `+`、星號 `*` 以及問號 `?`。", "steps.asterisk.title": "星號 `*`", - "steps.asterisk.description": "We put an asterisk `*` after a character to indicate that the character may either not match at all or can match many times. For example, indicate that the letter `e` should never occur in the text, or it can occur once or more side by side.", + "steps.asterisk.description": "我們在字元後面加上星號 `*` 來表示可能沒吻合,或是吻合多次。例如說,指示字母 `e` 沒有出現在文字當中,或是有出現一次或者接連多次出現。", "steps.plusCharacter.title": "加號 `+`", "steps.plusCharacter.description": "To indicate that a character can occur one or more times, we put a plus sign `+` after a character. For example, indicate that the letter `e` can occur one or more times in the text.", From 5489620eb0a5682c17ba1d895ee2b416e82117f7 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Thu, 25 Jul 2024 01:12:20 +0800 Subject: [PATCH 20/30] Update learn.json --- src/localization/zh-tw/learn.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index 15c07350..cb88fb61 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -144,16 +144,16 @@ "steps.flags.description": "Flags change the output of the expression. That's why flags are also called `modifiers`. Flags determine whether the typed expression treats text as separate lines, is case sensitive, or finds all matches. Continue to the next step to learn the flags.", "steps.flagsGlobal.title": "全域修飾詞", - "steps.flagsGlobal.description": "The `global` flag causes the expression to select all matches. If not used it will only select the first match. Now enable the `global` flag to be able to select all matches.", + "steps.flagsGlobal.description": "`全域`修飾詞造成表示式會找出所有吻合結果。如果不啟用則只會顯示第一筆吻合結果。如果啟用`全域`修飾詞則會選取所有吻合結果。", "steps.flagsMultiline.title": "多行修飾詞", - "steps.flagsMultiline.description": "Regex sees all text as one line. But we use the `multiline` flag to handle each line separately. In this way, the expressions we write to identify patterns at the end of lines work separately for each line. Now enable the `multiline` flag to find all matches.", + "steps.flagsMultiline.description": "正規表示式會視所有文字為一行,但當我們使用`多行`修飾詞時表示一行一行來處理資料。這種方式之下,我們撰寫表示式來區別每一行行末不同模式。如果啟用`多行`模式則會找出所有吻合結果。", "steps.flagsCaseInsensitive.title": "不區分大小寫修飾詞", - "steps.flagsCaseInsensitive.description": "In order to remove the case-sensitivity of the expression we have written, we must activate the `case-insensitive` flag.", + "steps.flagsCaseInsensitive.description": "為了要移除表示式的區分大小寫的設定,我們需要啟用`不區別大小寫`的修飾詞。", "steps.greedyMatching.title": "貪心比對", - "steps.greedyMatching.description": "Regex does a greedy match by default. This means that the matchmaking will be as long as possible. Check out the example below. It refers to any match that ends in `r` and can be any character preceded by it. But it does not stop at the first letter `r`.", + "steps.greedyMatching.description": "正規表示式預設是啟用貪心模式來比對,這意味著吻合時會盡可能越長越好。檢視以下範圍,意思是任何結尾是 `r` ,而且前面是任何字元的吻合結果,但不會只停在第一個字母 `r`。", "steps.lazyMatching.title": "偷懶比對", "steps.lazyMatching.description": "偷懶比對,不像貪心比對那樣,會在第一次吻合時就停止了。例如說,以下的例子來說,在 `*` 新增 `?` 則會在吻合字前面有任何字母,字結尾有 `r` 時,吻合一次就會停止,意味著吻合到第一個 `r` 字母。", From b943e8ee77bd815ae5ed10bd17eb871742ec639b Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Fri, 21 Mar 2025 17:23:40 +0800 Subject: [PATCH 21/30] Update learn.json --- src/localization/zh-tw/learn.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index cb88fb61..0c0205ad 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -54,25 +54,25 @@ "steps.asterisk.description": "我們在字元後面加上星號 `*` 來表示可能沒吻合,或是吻合多次。例如說,指示字母 `e` 沒有出現在文字當中,或是有出現一次或者接連多次出現。", "steps.plusCharacter.title": "加號 `+`", - "steps.plusCharacter.description": "To indicate that a character can occur one or more times, we put a plus sign `+` after a character. For example, indicate that the letter `e` can occur one or more times in the text.", + "steps.plusCharacter.description": "我們在字元後面加上加號 `+` 來表示吻合一次或是更多次。例如說,表示字母 `e` 可以在段落中吻合一次或更多次。", "steps.questionMark.title": "問號 `?`", - "steps.questionMark.description": "To indicate that a character is optional, we put a `?` question mark after a character. For example, indicate that the following letter `u` is optional.", + "steps.questionMark.description": "我們在字元後面加上問號 `?`,例如說,表示 `u` 後面的字母是可有可無。", "steps.quantifier.title": "大括號 - 1", - "steps.quantifier.description": "To express a certain number of occurrences of a character, at the end we write curly braces `{n}` along with how many times we want it to occur. For example, indicate that the following letter `e` can occur only `2` times.", + "steps.quantifier.description": "我們在結尾加上大括號 `{n}` 來表示我們希望字元吻合的次數。例如說,表示字母 `e` 只能吻合 `2` 次。", "steps.quantifierMin.title": "大括號 - 2", - "steps.quantifierMin.description": "To express at least a certain number of occurrences of a character, immediately after the character we write at least how many times we want it to occur followed by a comma `,` and wrapped inside curly braces `{n, }`. For example, indicate that the following letter `e` can occur at least `3` times.", + "steps.quantifierMin.description": "要來表示某個字元出現的最少吻合次數,我們在字元後立即寫出我們希望出現的最少次數,後面跟著逗號 `,`,並用大括號 `{n, }` 包起來。例如說,表示以下字母 `e` 最少吻合 `3` 次。", "steps.quantifierRange.title": "大括號 - 3", - "steps.quantifierRange.description": "To express the occurrence of a character in a certain number range, we write curly braces `{x,y}` with the interval we want to go to the end. For example, indicate that the following letter `e` can only occur between `1` and `3`.", + "steps.quantifierRange.description": "要來表示某個字元的吻合次數範圍,我們寫大括號 `{x,y}` 裡頭寫出開始到結尾的區間。例如說,這表示接續的字母 `e` 只可以吻合`1` 到 `3` 次。", "examples.asterisk.title": "練習:星號 `*`", - "examples.asterisk.description": "Use the asterisk `*` to write the expression that will select each word, suitable for the absence of the letter `e` in the text and the presence of one or more.", + "examples.asterisk.description": "使用星號 `*` 來撰寫表示式選取每個文字,適合文字當中沒有或是一次或是多次出現字母 `e` 的情形。", "examples.plusCharacter.title": "練習:加號 `+`", - "examples.plusCharacter.description": "Write the expression using the plus sign `+` to select words in which the letter `e` occurs one or more times in the text.", + "examples.plusCharacter.description": "使用加號 `+` 來撰寫表示式選取文字當中吻合一次或是多次字母 `e` 的情形。Write the expression using the plus sign `+` to select words in which the letter `e` occurs one or more times in the text.", "examples.questionMark.title": "練習:問號 `?`", "examples.questionMark.description": "Write the expression indicating that the letter `n` is optional in the text, using the question mark `?`. Thus, both the words `a` and `an` can be selected.", From 72255aee6c1d6c16e84533a3659bcd0f2263a9dd Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Fri, 21 Mar 2025 23:43:45 +0800 Subject: [PATCH 22/30] Update learn.json --- src/localization/zh-tw/learn.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index 0c0205ad..cb455961 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -72,25 +72,25 @@ "examples.asterisk.description": "使用星號 `*` 來撰寫表示式選取每個文字,適合文字當中沒有或是一次或是多次出現字母 `e` 的情形。", "examples.plusCharacter.title": "練習:加號 `+`", - "examples.plusCharacter.description": "使用加號 `+` 來撰寫表示式選取文字當中吻合一次或是多次字母 `e` 的情形。Write the expression using the plus sign `+` to select words in which the letter `e` occurs one or more times in the text.", + "examples.plusCharacter.description": "使用加號 `+` 來撰寫表示式選取文字當中吻合一次或是多次字母 `e` 的情形。", "examples.questionMark.title": "練習:問號 `?`", - "examples.questionMark.description": "Write the expression indicating that the letter `n` is optional in the text, using the question mark `?`. Thus, both the words `a` and `an` can be selected.", + "examples.questionMark.description": "使用問號 `?` 撰寫表示式表達文字當中字母 `n` 是選擇性的。因此 `a` 與 `an` 都會被選擇。", "examples.quantifier.title": "練習:大括號 - 1", - "examples.quantifier.description": "Write the expression using curly braces `{}` that will find texts containing `4` numbers side by side. Remember that the range `[0-9]` will match a single digit.", + "examples.quantifier.description": "使用大括號 `{}` 來找文字當中含有連續的 `4` 數字。記住範圍 `[0-9]` 會找出吻合的單一位數字。", "examples.quantifierMin.title": "練習:大括號 - 2", - "examples.quantifierMin.description": "Write the expression using curly braces `{}` that will find texts containing at least `2` numbers side by side.", + "examples.quantifierMin.description": "使用大括號 `{}` 來找出文字當中連續出現至少 `2` 的文字。", "examples.quantifierRange.title": "練習:大括號 - 3", - "examples.quantifierRange.description": "Write the expression using curly braces `{}` that will find texts containing at least `1` and at most `4` numbers side by side.", + "examples.quantifierRange.description": "使用大括號 `{}` 找出文字當中連續出現現至少 `1` 以及最多 `4` 的文字。", "steps.groupping.title": "Parentheses `( )`: 群組", - "steps.groupping.description": "We can group an expression and use these groups to reference or enforce some rules. To group an expression, we enclose `()` in parentheses. For now just group `haa` below.", + "steps.groupping.description": "我可以群組表示式,並且採用群組來參照或是套用一些規則。要群組表示式,則需要在 `()` 括號內。現在我自來群組下面的 `haa`。", "steps.groupReference.title": "參照群組", - "steps.groupReference.description": "The words `ha` and `haa` are grouped below. The first group is used by writing `\\1` to avoid rewriting. Here `1` denotes the order of grouping. Type `\\2` at the end of the expression to refer to the second group.", + "steps.groupReference.description": "`ha` 與 `haa` 已經在下面群組了。第一個群組用 `\\1` 來撰寫避免再重寫。這邊 `1` 表示群組的順序。在表示式結尾輸入 `\\2` 表示第二個群組。", "steps.nonCapturingGroupping.title": "圓括號 `(?: )`: 非捕捉群組", "steps.nonCapturingGroupping.description": "You can group an expression and ensure that it is not captured by references. For example, below are two groups. However, the first group reference we denote with `\\1` actually indicates the second group, as the first is a non-capturing group.", From 916a8e02b59ee5bfd3f6805b6b98cf6cd59305c8 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Sun, 23 Mar 2025 13:16:02 +0800 Subject: [PATCH 23/30] Update learn.json --- src/localization/zh-tw/learn.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index cb455961..b04d3bf6 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -93,40 +93,40 @@ "steps.groupReference.description": "`ha` 與 `haa` 已經在下面群組了。第一個群組用 `\\1` 來撰寫避免再重寫。這邊 `1` 表示群組的順序。在表示式結尾輸入 `\\2` 表示第二個群組。", "steps.nonCapturingGroupping.title": "圓括號 `(?: )`: 非捕捉群組", - "steps.nonCapturingGroupping.description": "You can group an expression and ensure that it is not captured by references. For example, below are two groups. However, the first group reference we denote with `\\1` actually indicates the second group, as the first is a non-capturing group.", + "steps.nonCapturingGroupping.description": "你可以指定群組的表達式是非參照捕捉群組。例如下列的兩組群組。然後,第一個群組參照用 `\\1` 修飾實際是表示第二個群組,因為第一個群組是非博捉群組。", "steps.pipeCharacter.title": "管道字元 `|`", - "steps.pipeCharacter.description": "It allows to specify that an expression can be in different expressions. Thus, all possible statements are written separated by the pipe sign `|`. This differs from charset `[abc]`, charsets operate at the character level. Alternatives are at the expression level. For example, the following expression would select both `cat` and `rat`. Add another pipe sign `|` to the end of the expression and type `dog` so that all words are selected.", + "steps.pipeCharacter.description": "這個選項允許表示式有不同的表示式。因此,所有可能的聲稱用管道符號 `|` 分隔。這個選項與 `[abc]` 字元組是以字元為層次運作,其他的是以表示式的層次。例如,下列的表示式會同時選擇 `cat` 與 `rat`。新增其他管道符號 `|` 在表示式結尾再打上 `dog` 則會所有文字都會被選到。", "steps.escapeCharacter.title": "逃脫字元 `\\`", - "steps.escapeCharacter.description": "There are special characters that we use when writing regex. `{ } [ ] / \\ + * . $^ | ?` Before we can select these characters themselves, we need to use an escape character `\\`. For example, to select the dot `.` and asterisk `*` characters in the text, let's add an escape character `\\` before it.", + "steps.escapeCharacter.description": "當撰寫表示式時使用一些特殊字元, `{ } [ ] / \\ + * . $^ | ?` 。當然我們也可以選擇這些字元,但我們需要用跳脫字元 `\\`。例如,選擇文字當中的句號 `.` 和星號 `*` 字元,就能在前面加上逃脫字元 `\\`。", - "steps.caret.title": "插入記號 `^`:\\nSelecting by Line Start", - "steps.caret.description": "We were using `[0-9]` to find numbers. To find only numbers at the beginning of a line, prefix this expression with the `^` sign.", + "steps.caret.title": "插入記號 `^`:\\n在一行開始處選擇", + "steps.caret.description": "我們使用 `[0-9]` 來找數字,要只在一行的開頭找數字的話,請在前面加上前綴 `^` 符號。", - "steps.dollar.title": "金錢符號 `$`:\\nSelecting by End of Line", + "steps.dollar.title": "金錢符號 `$`:\\n在一行結束處選擇", "steps.dollar.description": "Let's use the `$` sign after the `html` value to find the `html` texts only at the end of the line.", "steps.wordCharacter.title": "文字字元 `\\w`: 字母、數字與底線", - "steps.wordCharacter.description": "The expression `\\w` is used to find letters, numbers and underscore characters. Let's use the expression `\\w` to find word characters in the text.", + "steps.wordCharacter.description": "表示式 `\\w` 是用來找字母、數字與底線字元。讓我們使用表示式 `\\w` 來找文字當中的文字字元。", "steps.withoutWordCharacter.title": "排除文字字元 `\\W`", - "steps.withoutWordCharacter.description": "The expression `\\W` is used to find characters other than letters, numbers, and underscores.", + "steps.withoutWordCharacter.description": "表示式 `\\W` 是用來排除字母、數字與底線的字元。", "steps.numberCharacter.title": "數字字元 `\\d`", - "steps.numberCharacter.description": "`\\d` is used to find only number characters.", + "steps.numberCharacter.description": "`\\d` 是只用來找數字字元", "steps.withoutNumberCharacter.title": "排除數字字元 `\\D`", - "steps.withoutNumberCharacter.description": "`\\D` is used to find non-numeric characters.", + "steps.withoutNumberCharacter.description": "`\\D` 是用來排除數字字元。", "steps.spaceCharacter.title": "空白字元 `\\s`", - "steps.spaceCharacter.description": "`\\s` is used to find only space characters.", + "steps.spaceCharacter.description": "`\\s` 是只用來找空白字元。", "steps.withoutSpaceCharacter.title": "排除空白字元 `\\S`", - "steps.withoutSpaceCharacter.description": "`\\S` is used to find non-space characters.", + "steps.withoutSpaceCharacter.description": "`\\S` 是用來排除空白字元。", "steps.lookarounds.title": "環顧", - "steps.lookarounds.description": "If we want the phrase we're writing to come before or after another phrase, we need to \"lookaround\". Take the next step to learn how to \"lookaround\".", + "steps.lookarounds.description": "如果你想要某個詞出現在某個詞之前或是之後的話,我們需要 \"環顧\"。接著來學習如何 \"環顧\".", "steps.positiveLookahead.title": "正面向前環顧: `(?=)`", "steps.positiveLookahead.description": "For example, we want to select the hour value in the text. Therefore, to select only the numerical values that have `PM` after them, we need to write the positive look-ahead expression `(?=)` after our expression. Include `PM` after the `=` sign inside the parentheses.", From 9d4c423c6c029dbef08d241689fa8fd7ef074c21 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Sun, 23 Mar 2025 16:40:30 +0800 Subject: [PATCH 24/30] Update learn.json --- src/localization/zh-tw/learn.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index b04d3bf6..dcb60f80 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -129,19 +129,19 @@ "steps.lookarounds.description": "如果你想要某個詞出現在某個詞之前或是之後的話,我們需要 \"環顧\"。接著來學習如何 \"環顧\".", "steps.positiveLookahead.title": "正面向前環顧: `(?=)`", - "steps.positiveLookahead.description": "For example, we want to select the hour value in the text. Therefore, to select only the numerical values that have `PM` after them, we need to write the positive look-ahead expression `(?=)` after our expression. Include `PM` after the `=` sign inside the parentheses.", + "steps.positiveLookahead.description": "例如,我們希望選取文字當中的時間數值,因此我們只要選取在後面有接 `PM` 的數字,我們需要在表示式後接上正面向前環顧表示式 `(?=)`,包括括號內 `=` 符號後接續 `PM`。", "steps.negativeLookahead.title": "負面向前環顧: `(?!)`", - "steps.negativeLookahead.description": "For example, we want to select numbers other than the hour value in the text. Therefore, we need to write the negative look-ahead `(?!)` expression after our expression to select only the numerical values that do not have `PM` after them. Include `PM` after the `!` sign inside the parentheses.", + "steps.negativeLookahead.description": "例如,我們希望選取文字當中數字而非時間,因此我們在表示式後撰寫負面向前環顧 `(?!)` 表示式,就只會選取數字,而非後面接有 `PM`。包括括號內 `!` 符號後接續 `PM`。", "steps.positiveLookbehind.title": "正面向後環顧: `(?<=)`", "steps.positiveLookbehind.description": "For example, we want to select the price value in the text. Therefore, to select only the number values that are preceded by `$`, we need to write the positive lookbehind expression `(?<=)` before our expression. Add `\\$` after the `=` sign inside the parenthesis.", "steps.negativeLookbehind.title": "負面向後環顧: `(?<!)`", - "steps.negativeLookbehind.description": "For example, we want to select numbers in the text other than the price value. Therefore, to select only numeric values that are not preceded by `$`, we need to write the negative lookbehind `(?<!)` before our expression. Add `\\$` after the `!` inside the parenthesis.", + "steps.negativeLookbehind.description": "例如,我們想要選取文字當中的數字但非價格,因此我們不選取 `$` 後有數字的數字,我們需要在表示式前撰寫負面向後環顧 `(?<!)`。在括號內 `!` 後新增表示 `\\$`。", "steps.flags.title": "修飾詞", - "steps.flags.description": "Flags change the output of the expression. That's why flags are also called `modifiers`. Flags determine whether the typed expression treats text as separate lines, is case sensitive, or finds all matches. Continue to the next step to learn the flags.", + "steps.flags.description": "修飾詞改變表示式的輸出,這也是為什麼又稱為`旗旘`。修飾詞能夠決定表示式處理文字的方式,像是分行、是否大小寫敏感,或是尋找所有吻合狀態。接下來的步驟會詳細解釋修飾詞。", "steps.flagsGlobal.title": "全域修飾詞", "steps.flagsGlobal.description": "`全域`修飾詞造成表示式會找出所有吻合結果。如果不啟用則只會顯示第一筆吻合結果。如果啟用`全域`修飾詞則會選取所有吻合結果。", From 3b8a332fa228c65c8e7d8bc04b66e30648ea35cc Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Sun, 23 Mar 2025 16:42:22 +0800 Subject: [PATCH 25/30] Update learn.json --- src/localization/zh-tw/learn.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/localization/zh-tw/learn.json b/src/localization/zh-tw/learn.json index dcb60f80..a686551a 100644 --- a/src/localization/zh-tw/learn.json +++ b/src/localization/zh-tw/learn.json @@ -141,7 +141,7 @@ "steps.negativeLookbehind.description": "例如,我們想要選取文字當中的數字但非價格,因此我們不選取 `$` 後有數字的數字,我們需要在表示式前撰寫負面向後環顧 `(?<!)`。在括號內 `!` 後新增表示 `\\$`。", "steps.flags.title": "修飾詞", - "steps.flags.description": "修飾詞改變表示式的輸出,這也是為什麼又稱為`旗旘`。修飾詞能夠決定表示式處理文字的方式,像是分行、是否大小寫敏感,或是尋找所有吻合狀態。接下來的步驟會詳細解釋修飾詞。", + "steps.flags.description": "修飾詞改變表示式的輸出,這也是為什麼又稱為`旗旘`。修飾詞能夠決定表示式處理文字的方式,像是分行、是否大小寫敏感,或是尋找所有吻合狀態。接下來的課程會詳細解釋修飾詞運作方式。", "steps.flagsGlobal.title": "全域修飾詞", "steps.flagsGlobal.description": "`全域`修飾詞造成表示式會找出所有吻合結果。如果不啟用則只會顯示第一筆吻合結果。如果啟用`全域`修飾詞則會選取所有吻合結果。", @@ -158,6 +158,6 @@ "steps.lazyMatching.title": "偷懶比對", "steps.lazyMatching.description": "偷懶比對,不像貪心比對那樣,會在第一次吻合時就停止了。例如說,以下的例子來說,在 `*` 新增 `?` 則會在吻合字前面有任何字母,字結尾有 `r` 時,吻合一次就會停止,意味著吻合到第一個 `r` 字母。", - "steps.completeAllSteps.title": "恭喜你,你已經完成所有步驟了!", + "steps.completeAllSteps.title": "恭喜你,你已經完成所有課程了!", "steps.completeAllSteps.description": "你可以在任何時候回到先前的步驟,而且可以瀏覽先前通過的步驟。" } From e6f258468a1c8d265a0c8541103e0f44185d8638 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Sun, 23 Mar 2025 16:46:13 +0800 Subject: [PATCH 26/30] Update regexForSeo.json --- .../zh-tw/lessons/regexForSeo.json | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/localization/zh-tw/lessons/regexForSeo.json b/src/localization/zh-tw/lessons/regexForSeo.json index bcf22cc2..2c61d2fa 100644 --- a/src/localization/zh-tw/lessons/regexForSeo.json +++ b/src/localization/zh-tw/lessons/regexForSeo.json @@ -1,49 +1,49 @@ { - "lesson.regexForSeo.starter.title": "Regex for SEO", + "lesson.regexForSeo.starter.title": "SEO 當中的正規表示式", "lesson.regexForSeo.starter.description": "Regex is a set of regular expressions frequently used in many fields, especially by people who want to increase their productivity. The advantages of using Regex for SEO are that it makes it easier to analyze big data and write richer filters. We recommend starting with the `Regex 101` tutorial if you are new to Regex. \\n\\nStart by typing `OK` in the Regex field to proceed to the first step and access more detailed explanations.", - "lesson.regexForSeo.usage.title": "Use Cases", + "lesson.regexForSeo.usage.title": "使用情境", "lesson.regexForSeo.usage.description": "You can use Regex for SEO on platforms such as `Google Analytics`, `Google Data Studio`, `Google Sheets`, `Google Search Console`, `Ahrefs`, `Deepcrawl`, `Screaming Frog`. It is also frequently used in `.htaccess` and `robots.txt (regex-like syntax)` files.\\n\\nBelow is a sample regex that will select only texts in the list that start with `Google`.", - "lesson.regexForSeo.basics.title": "Basics", + "lesson.regexForSeo.basics.title": "基本", "lesson.regexForSeo.basics.description": "Let's take a look at some Regexes that you will use frequently. We recommend that you review the `Regex 101` tutorial to learn more about these. Type `Yes` to get started.", - "lesson.regexForSeo.or.title": "Or Operator `|`", + "lesson.regexForSeo.or.title": "或是運算子 `|`", "lesson.regexForSeo.or.description": "We use the Or operator `|` to filter out multiple expressions. For example, filter text containing `seo` and `regex` by writing the two words, separating them with the Or operator `|`.", - "lesson.regexForSeo.optional.title": "Optional Operator `?`", + "lesson.regexForSeo.optional.title": "選擇性的運算子 `?`", "lesson.regexForSeo.optional.description": "We use it to express that an expression or character is optional. For example, we want to filter text containing both `http` and `https`. We can use the Or operator `|` for this operation, but there is a better way for these two almost identical words.\\n\\nIn this example, the letter `s` is optional. Instead, add a question mark `?` to the end of the letter `s`.", - "lesson.regexForSeo.any.title": "Anything `.*`", + "lesson.regexForSeo.any.title": "任何 `.*`", "lesson.regexForSeo.any.description": "In regex, the period `.` can match anything, including spaces. But this match is only for a single character where it is used. The asterisk character `*` means that the preceding item does not exist at all or occurs more than once in the text. When the two are used together, it means that there can be an element of unlimited length where used.\\n\\nBelow are various keywords. Add `.*` to the end of the regex to write the expression that starts with `how to write` and matches everything after it.", - "lesson.regexForSeo.contains.title": "Contains", + "lesson.regexForSeo.contains.title": "包含", "lesson.regexForSeo.contains.description": "To filter the text that contains the words or phrases we're looking for, we write the word we're looking for between our two phrases `.*` that match everything. For example, type `.*buy.*` to filter out what includes `buy`.", - "lesson.regexForSeo.negated.title": "Negated Character Sets `[^abc]`", + "lesson.regexForSeo.negated.title": "負面字元集 `[^abc]`", "lesson.regexForSeo.negated.description": "We use the negated character sets `[^]` to denote characters we don't want to be included. The characters we do not want to be included are written in square brackets with a caret at the beginning. Below are both `http` and `https`. Since `http` occurs in both, it will also choose `https`. Type `[^s]` after the letter `p` to exclude the letter `s`.", - "lesson.regexForSeo.caret.title": "Caret Sign `^`", + "lesson.regexForSeo.caret.title": "插入符號 `^`", "lesson.regexForSeo.caret.description": "Let's say we have a list of URLs, and we want to find only those URLs that start with `http`. But URLs also contain `http` in different parts other than their beginning. So add a caret `^` to the beginning of the following expression to filter out only those starting with `http`.", - "lesson.regexForSeo.dollarAndEscape.title": "Dollar Sign `$` and Escape Character `\\`", + "lesson.regexForSeo.dollarAndEscape.title": "錢幣符號 `$` 與跳脫字元 `\\`", "lesson.regexForSeo.dollarAndEscape.description": "Again we have a list of URLs. We want to find only those URLs ending in `.htm`.\\n\\nSince the period `.` is a special character that matches everything, we first need to disable the period before `htm` using the escape character `\\`. This applies to all special characters.\\n\\nThen add a `$` sign to the end of the expression. This ensures that the text to be filtered ends with the expression written before it.", - "lesson.regexForSeo.limitation.title": "Length Restrictions `{n}`", + "lesson.regexForSeo.limitation.title": "長度限制 `{n}`", "lesson.regexForSeo.limitation.description": "We may want to filter the results by character lengths. For example, to filter URLs that are `35` characters long, type the number you want to use for the length, `{35}`, using curly braces at the end of the period `.`.", - "lesson.regexForSeo.maxLimitation.title": "Length Restrictions (Maximum) `{n,m}`", + "lesson.regexForSeo.maxLimitation.title": "長度限制 (最大) `{n,m}`", "lesson.regexForSeo.maxLimitation.description": "To filter URLs with a maximum length of `35` characters, type `{1,35}` the minimum and maximum number values we will use for the length, using curly braces at the end of the period `.`.", - "lesson.regexForSeo.minLimitation.title": "Length Restrictions (Minumum) `{n,}`", + "lesson.regexForSeo.minLimitation.title": "長度限制 (最小) `{n,}`", "lesson.regexForSeo.minLimitation.description": "To filter URLs with a minimum length of `35` characters, type `{35,}` using curly braces at the end of the period and ending with a comma for the minimum number value we will use for the length.", - "lesson.regexForSeo.robots.title": "robots.txt (regex-like syntax)", + "lesson.regexForSeo.robots.title": "robots.txt (類似正規表示式語法)", "lesson.regexForSeo.robots.description": "Here is an example of regex-like usage in the `robots.txt` file. The example states that bots should not crawl links with the extension `pdf`.", "lesson.regexForSeo.htaccess.title": ".htaccess", "lesson.regexForSeo.htaccess.description": "Here is an example of using regex in the `.htaccess` file. In the example, `php` extension links are directed to `html` extensions with `301` code.", - "lesson.regexForSeo.outro.title": "Outro", + "lesson.regexForSeo.outro.title": "其他", "lesson.regexForSeo.outro.description": "Regex knowledge is a skill that increases productivity on any platform that allows you to use regex. Once you start using it and improve this skill, it will help you complete many repetitive tasks faster and save time for other things. To better understand the basics of Regex, you can visit the `Regex 101` tutorial. You can use the `Playground` page to test your expressions on your texts." } From 8ca287e566c5554ba7b8aa3bfdda129825161896 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Sun, 23 Mar 2025 16:58:22 +0800 Subject: [PATCH 27/30] Update regexForSeo.json --- src/localization/zh-tw/lessons/regexForSeo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/localization/zh-tw/lessons/regexForSeo.json b/src/localization/zh-tw/lessons/regexForSeo.json index 2c61d2fa..22486280 100644 --- a/src/localization/zh-tw/lessons/regexForSeo.json +++ b/src/localization/zh-tw/lessons/regexForSeo.json @@ -1,15 +1,15 @@ { "lesson.regexForSeo.starter.title": "SEO 當中的正規表示式", - "lesson.regexForSeo.starter.description": "Regex is a set of regular expressions frequently used in many fields, especially by people who want to increase their productivity. The advantages of using Regex for SEO are that it makes it easier to analyze big data and write richer filters. We recommend starting with the `Regex 101` tutorial if you are new to Regex. \\n\\nStart by typing `OK` in the Regex field to proceed to the first step and access more detailed explanations.", + "lesson.regexForSeo.starter.description": "Regex 是一組各領域常用的正規表示式,特別是想增進他們生產力的人們。使用正規表示式在 SEO 的好處是更容易分析巨量資料以及撰寫更豐富的篩選規則。我們建議你如果是新手則從 `正規表示式 101` 教學開始。 \\n\n從 Regex 欄位打 `OK` 開始第一課,然後閱讀更詳細的解釋。", "lesson.regexForSeo.usage.title": "使用情境", - "lesson.regexForSeo.usage.description": "You can use Regex for SEO on platforms such as `Google Analytics`, `Google Data Studio`, `Google Sheets`, `Google Search Console`, `Ahrefs`, `Deepcrawl`, `Screaming Frog`. It is also frequently used in `.htaccess` and `robots.txt (regex-like syntax)` files.\\n\\nBelow is a sample regex that will select only texts in the list that start with `Google`.", + "lesson.regexForSeo.usage.description": "你在 SEO 的正規表示式應用到平台上,例如 `Google Analytics`、`Ahrefs`、`Deepcrawl`、`Screaming Frog`。而且也會常用在 `.htaccess` 與 `robots.txt` (類似正規表示式語法) 檔案當中。\\n\n以下是一些簡單的正規表示式範例,能夠選取 `Google` 開頭的文字。", "lesson.regexForSeo.basics.title": "基本", - "lesson.regexForSeo.basics.description": "Let's take a look at some Regexes that you will use frequently. We recommend that you review the `Regex 101` tutorial to learn more about these. Type `Yes` to get started.", + "lesson.regexForSeo.basics.description": "我們從一些常用的正規表示式例子講起,我們推薦你再次閱讀 `正規表示式 101` 教學來學習更多資訊。按 `是` 來開始。", "lesson.regexForSeo.or.title": "或是運算子 `|`", - "lesson.regexForSeo.or.description": "We use the Or operator `|` to filter out multiple expressions. For example, filter text containing `seo` and `regex` by writing the two words, separating them with the Or operator `|`.", + "lesson.regexForSeo.or.description": "我們使用或運算子 `|` 來篩選出多重表示式。例如我們想要篩選文字包含 `seo` 與 `regex` 兩個字,就用或是運算子 `|` 來分隔。", "lesson.regexForSeo.optional.title": "選擇性的運算子 `?`", "lesson.regexForSeo.optional.description": "We use it to express that an expression or character is optional. For example, we want to filter text containing both `http` and `https`. We can use the Or operator `|` for this operation, but there is a better way for these two almost identical words.\\n\\nIn this example, the letter `s` is optional. Instead, add a question mark `?` to the end of the letter `s`.", From ca775393d7a92ce08907d1e2969328a73b0300c5 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Mon, 24 Mar 2025 01:00:24 +0800 Subject: [PATCH 28/30] Update regexForSeo.json --- src/localization/zh-tw/lessons/regexForSeo.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/localization/zh-tw/lessons/regexForSeo.json b/src/localization/zh-tw/lessons/regexForSeo.json index 22486280..3b038fa3 100644 --- a/src/localization/zh-tw/lessons/regexForSeo.json +++ b/src/localization/zh-tw/lessons/regexForSeo.json @@ -12,10 +12,10 @@ "lesson.regexForSeo.or.description": "我們使用或運算子 `|` 來篩選出多重表示式。例如我們想要篩選文字包含 `seo` 與 `regex` 兩個字,就用或是運算子 `|` 來分隔。", "lesson.regexForSeo.optional.title": "選擇性的運算子 `?`", - "lesson.regexForSeo.optional.description": "We use it to express that an expression or character is optional. For example, we want to filter text containing both `http` and `https`. We can use the Or operator `|` for this operation, but there is a better way for these two almost identical words.\\n\\nIn this example, the letter `s` is optional. Instead, add a question mark `?` to the end of the letter `s`.", + "lesson.regexForSeo.optional.description": "我們使用來表示表示式或是字元是選擇性的。例如我們想篩選出有 `http` 與 `https` 兩者都要。我們可以使用或是運算子 `|` 來處理,但是比較好的方式是這兩都很像。\\n\n在這一例子當中,字母 `s` 是選擇性的,因此能加上問號 `?` 來替代結尾的字母 `s`。", "lesson.regexForSeo.any.title": "任何 `.*`", - "lesson.regexForSeo.any.description": "In regex, the period `.` can match anything, including spaces. But this match is only for a single character where it is used. The asterisk character `*` means that the preceding item does not exist at all or occurs more than once in the text. When the two are used together, it means that there can be an element of unlimited length where used.\\n\\nBelow are various keywords. Add `.*` to the end of the regex to write the expression that starts with `how to write` and matches everything after it.", + "lesson.regexForSeo.any.description": "在正規表示式當中,逗號 `,` 能吻合任何字元,包括空白。但是使用時這只會吻合一個字元。因此加星號 `*` 表示文字當中後面沒有字元或是有超過一個字元的情形。當兩者組合在一起使用時,表示任何長度的元素。\\n\n以下有多個關鍵字,在正規表示式結尾新增 `.*` 來表示開頭為 `how to write` 以及吻合後面任何東西。", "lesson.regexForSeo.contains.title": "包含", "lesson.regexForSeo.contains.description": "To filter the text that contains the words or phrases we're looking for, we write the word we're looking for between our two phrases `.*` that match everything. For example, type `.*buy.*` to filter out what includes `buy`.", From d3fe42bd96f0a9a40c5067c49e31bdd5dfea70d4 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Thu, 27 Mar 2025 18:49:12 +0800 Subject: [PATCH 29/30] Update regexForSeo.json --- src/localization/zh-tw/lessons/regexForSeo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/localization/zh-tw/lessons/regexForSeo.json b/src/localization/zh-tw/lessons/regexForSeo.json index 3b038fa3..535ec041 100644 --- a/src/localization/zh-tw/lessons/regexForSeo.json +++ b/src/localization/zh-tw/lessons/regexForSeo.json @@ -18,16 +18,16 @@ "lesson.regexForSeo.any.description": "在正規表示式當中,逗號 `,` 能吻合任何字元,包括空白。但是使用時這只會吻合一個字元。因此加星號 `*` 表示文字當中後面沒有字元或是有超過一個字元的情形。當兩者組合在一起使用時,表示任何長度的元素。\\n\n以下有多個關鍵字,在正規表示式結尾新增 `.*` 來表示開頭為 `how to write` 以及吻合後面任何東西。", "lesson.regexForSeo.contains.title": "包含", - "lesson.regexForSeo.contains.description": "To filter the text that contains the words or phrases we're looking for, we write the word we're looking for between our two phrases `.*` that match everything. For example, type `.*buy.*` to filter out what includes `buy`.", + "lesson.regexForSeo.contains.description": "要篩選出特定的文字或是片語,我們可以尋找被夾在中間的文字 `.*`。例如我們輸入 `.*buy.*` 來尋找含有 `buy` 的文字。.", "lesson.regexForSeo.negated.title": "負面字元集 `[^abc]`", - "lesson.regexForSeo.negated.description": "We use the negated character sets `[^]` to denote characters we don't want to be included. The characters we do not want to be included are written in square brackets with a caret at the beginning. Below are both `http` and `https`. Since `http` occurs in both, it will also choose `https`. Type `[^s]` after the letter `p` to exclude the letter `s`.", + "lesson.regexForSeo.negated.description": "我們使用負面字元集 `[^]`,中括號開頭用插入符號來排除我們不要的字元。像是 `http` 與 `https`,都包含 `http`,因此也會選擇 `https`。在字母 `p` 之後輸入 `[^s]` 來排除字母 `s`。", "lesson.regexForSeo.caret.title": "插入符號 `^`", - "lesson.regexForSeo.caret.description": "Let's say we have a list of URLs, and we want to find only those URLs that start with `http`. But URLs also contain `http` in different parts other than their beginning. So add a caret `^` to the beginning of the following expression to filter out only those starting with `http`.", + "lesson.regexForSeo.caret.description": "我們有網址清單,而我們只想要找 `http` 開頭的網址,但有時候 `http` 也會出現在不是開頭的地方。所以在開頭新增插入符號 `^` 能夠只篩選出 `http` 開頭的網址。", "lesson.regexForSeo.dollarAndEscape.title": "錢幣符號 `$` 與跳脫字元 `\\`", - "lesson.regexForSeo.dollarAndEscape.description": "Again we have a list of URLs. We want to find only those URLs ending in `.htm`.\\n\\nSince the period `.` is a special character that matches everything, we first need to disable the period before `htm` using the escape character `\\`. This applies to all special characters.\\n\\nThen add a `$` sign to the end of the expression. This ensures that the text to be filtered ends with the expression written before it.", + "lesson.regexForSeo.dollarAndEscape.description": "我們又有網址清單,我們只想要網址結尾是 `.htm`。\\n\\n由於句號是特殊字元會吻合所有,我們需要用跳脫字元 `\\` 把 `htm` 前的使其失效。這會 This applies to all special characters.\\n\\nThen add a `$` sign to the end of the expression. This ensures that the text to be filtered ends with the expression written before it.", "lesson.regexForSeo.limitation.title": "長度限制 `{n}`", "lesson.regexForSeo.limitation.description": "We may want to filter the results by character lengths. For example, to filter URLs that are `35` characters long, type the number you want to use for the length, `{35}`, using curly braces at the end of the period `.`.", From 0dc5035b6c16c0edc74b6f01078b031a8199bb05 Mon Sep 17 00:00:00 2001 From: Supaplextw Date: Fri, 28 Mar 2025 00:37:02 +0800 Subject: [PATCH 30/30] Update regexForSeo.json --- src/localization/zh-tw/lessons/regexForSeo.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/localization/zh-tw/lessons/regexForSeo.json b/src/localization/zh-tw/lessons/regexForSeo.json index 535ec041..c98e2518 100644 --- a/src/localization/zh-tw/lessons/regexForSeo.json +++ b/src/localization/zh-tw/lessons/regexForSeo.json @@ -27,23 +27,23 @@ "lesson.regexForSeo.caret.description": "我們有網址清單,而我們只想要找 `http` 開頭的網址,但有時候 `http` 也會出現在不是開頭的地方。所以在開頭新增插入符號 `^` 能夠只篩選出 `http` 開頭的網址。", "lesson.regexForSeo.dollarAndEscape.title": "錢幣符號 `$` 與跳脫字元 `\\`", - "lesson.regexForSeo.dollarAndEscape.description": "我們又有網址清單,我們只想要網址結尾是 `.htm`。\\n\\n由於句號是特殊字元會吻合所有,我們需要用跳脫字元 `\\` 把 `htm` 前的使其失效。這會 This applies to all special characters.\\n\\nThen add a `$` sign to the end of the expression. This ensures that the text to be filtered ends with the expression written before it.", + "lesson.regexForSeo.dollarAndEscape.description": "我們又有網址清單,我們只想要網址結尾是 `.htm`。\\n\\n由於句號是特殊字元會吻合所有,我們需要用跳脫字元 `\\` 把 `htm` 前的使其失效。這會套用到所有特殊字元。\\n\\n接著在表示式結尾加上 `$`,這會確保篩選出來的文字結尾部分前面是吻合表示式的。", "lesson.regexForSeo.limitation.title": "長度限制 `{n}`", - "lesson.regexForSeo.limitation.description": "We may want to filter the results by character lengths. For example, to filter URLs that are `35` characters long, type the number you want to use for the length, `{35}`, using curly braces at the end of the period `.`.", + "lesson.regexForSeo.limitation.description": "我們也許會希望依據字元長度篩選出結果。例如我們要篩選出 `35` 字元長度的網址,因此你會輸入長度 `{35}`,用中括號包起來並且結尾加上句號 `.`。", "lesson.regexForSeo.maxLimitation.title": "長度限制 (最大) `{n,m}`", - "lesson.regexForSeo.maxLimitation.description": "To filter URLs with a maximum length of `35` characters, type `{1,35}` the minimum and maximum number values we will use for the length, using curly braces at the end of the period `.`.", + "lesson.regexForSeo.maxLimitation.description": "要篩選大長度 `35` 字元,輸入 `{1,35}` 的最小與最大數值,然後使用大括號包起來,最後在結眉加上句號。", "lesson.regexForSeo.minLimitation.title": "長度限制 (最小) `{n,}`", - "lesson.regexForSeo.minLimitation.description": "To filter URLs with a minimum length of `35` characters, type `{35,}` using curly braces at the end of the period and ending with a comma for the minimum number value we will use for the length.", + "lesson.regexForSeo.minLimitation.description": "要篩選最短長度 `35` 字元的網址,輸入 `{35,}` 然後在句點結尾加大括號,然後輸入我們要找的最小數值接著加逗號。", "lesson.regexForSeo.robots.title": "robots.txt (類似正規表示式語法)", - "lesson.regexForSeo.robots.description": "Here is an example of regex-like usage in the `robots.txt` file. The example states that bots should not crawl links with the extension `pdf`.", + "lesson.regexForSeo.robots.description": "這邊是 `robots.txt` 檔案當中類似正規表示式的例子,例子當中註明不要爬取 `pdf` 結尾的附檔名。", "lesson.regexForSeo.htaccess.title": ".htaccess", - "lesson.regexForSeo.htaccess.description": "Here is an example of using regex in the `.htaccess` file. In the example, `php` extension links are directed to `html` extensions with `301` code.", + "lesson.regexForSeo.htaccess.description": "這是 `.htaccess` 檔案當中類似正規表示式的例子,例子當中 `php` 的副檔名結尾會重新導向至 `html` 副檔名並且顯示 `301` 代碼。", "lesson.regexForSeo.outro.title": "其他", - "lesson.regexForSeo.outro.description": "Regex knowledge is a skill that increases productivity on any platform that allows you to use regex. Once you start using it and improve this skill, it will help you complete many repetitive tasks faster and save time for other things. To better understand the basics of Regex, you can visit the `Regex 101` tutorial. You can use the `Playground` page to test your expressions on your texts." + "lesson.regexForSeo.outro.description": "正規表示式知識是在任何平台增進你生產力的技能。一旦你學會使用之後,並且持續精進技能,你能夠更快完成重覆性工作,將時間用其他事務。要更瞭解正規表示式的基礎知識,你可以瀏覽 `Regex 101` 教學,你可以進入`遊樂場`頁面來測試你的表示式套用到文字的狀況。" }