diff --git a/README.md b/README.md index 075bc2ee..a3989975 100644 --- a/README.md +++ b/README.md @@ -40,14 +40,14 @@ the way: - 🇰🇷 Korean - 🇧🇷 Brazilian Portuguese - 🇚🇿 Czech +- 🇬🇪 Georgian +- 🇮🇷 Persian ### Requested Translations - 🇊🇪 Arabic [(Issue)](https://github.com/aykutkardas/regexlearn.com/issues/163) -- 🇬🇪 Georgian [(Issue)](https://github.com/aykutkardas/regexlearn.com/issues/274) - 🇧🇩 Bengali [(Issue)](https://github.com/aykutkardas/regexlearn.com/issues/304) - 🇮🇹 Italian [(Issue)](https://github.com/aykutkardas/regexlearn.com/issues/323) -- 🇮🇷 Persian [(Issue)](https://github.com/aykutkardas/regexlearn.com/issues/325) - 🇻🇳 Vietnamese [(Issue)](https://github.com/aykutkardas/regexlearn.com/issues/329) - 🇮🇩 Indonesian [(Issue)](https://github.com/aykutkardas/regexlearn.com/issues/335) diff --git a/scripts/html-lang-fixer.js b/scripts/html-lang-fixer.js index 89c17af0..064d3359 100644 --- a/scripts/html-lang-fixer.js +++ b/scripts/html-lang-fixer.js @@ -15,7 +15,7 @@ function htmlLangFixer(path) { const stats = fs.lstatSync(currentPath); if (stats.isFile() && el.endsWith('.html')) { - const result = currentPath.match(/^\.\/out\/(en|es|de|tr|uk|fr|ru|pl|ko|zh-cn|pt-br|cs-cz)\/?/); + const result = currentPath.match(/^\.\/out\/(en|es|de|tr|uk|fr|ru|pl|ko|zh-cn|pt-br|cs-cz|ka|fa)\/?/); if (result) { replaceLangTag(currentPath, result[1]); diff --git a/src/components/CheatsheetCollapse.tsx b/src/components/CheatsheetCollapse.tsx index 7c209e7d..a4083a0e 100644 --- a/src/components/CheatsheetCollapse.tsx +++ b/src/components/CheatsheetCollapse.tsx @@ -36,7 +36,7 @@ const CheatsheetCollapse = ({ title, data }: CheatsheetCollapseProps) => { aria-controls={`Collapse-${data.title}`} >
- + {data.code}
diff --git a/src/components/LearnProgress.tsx b/src/components/LearnProgress.tsx index ee55225d..221b6c2c 100644 --- a/src/components/LearnProgress.tsx +++ b/src/components/LearnProgress.tsx @@ -4,6 +4,7 @@ import { useIntl } from 'react-intl'; import Icon from './Icon'; import { InteractiveAreaContext } from 'src/context/InteractiveAreaContext'; import HighlightedText from './HighlightedText'; +import { useLanguageDirection } from "src/utils/useLanguageDirection"; const LearnProgress = () => { const [open, setOpen] = useState(false); @@ -27,11 +28,20 @@ const LearnProgress = () => { const toggleProgress = () => setOpen(!open); + const direction = useLanguageDirection(); + + // list lesson (ToggleProgress For RTL/LTR) + const listOpen = direction === 'rtl' ? 'left-0' : 'right-0'; + const listClose = direction === 'rtl' ? '-left-[244px]' : '-right-[244px]'; + const listOpenInner = direction === 'rtl' ? '-left-10' : '-right-10'; + const listCloseInner = direction === 'rtl' ? 'left-[204px]' : 'right-[204px]'; + const listIconName = direction === 'rtl' ? 'arrow-right' : 'arrow-left'; + return (
{
@@ -66,17 +78,26 @@ const LearnProgress = () => { }, 'step-item relative truncate max-w-[80%] flex flex-row-reverse items-center', index !== lessonData.length - 1 && - "pb-6 after:content-[''] after:block after:w-[2px] after:h-8 after:bg-neutral-700 after:rounded-md after:right-[7px] after:top-8 after:absolute", + `pb-6 after:content-[''] after:block after:w-[2px] after:h-8 after:bg-neutral-700 after:rounded-md after:mx-[7px] after:top-8 after:absolute`, )} > {step === index && ( - + )} {lastStep >= index && step !== index && ( - + )} {lastStep < index && ( - + )} { ? '!pr-2 text-neutral-50' : 'text-neutral-300 hover:text-neutral-100 pl-0', )} - text={formatMessage({ id: lesson.title })} + text={formatMessage({ id: lesson.title }).replace('\\n', '')} onClick={() => handleChangeStep(index)} attrs={{ className: clsx( diff --git a/src/components/Step.tsx b/src/components/Step.tsx index 29a39f30..6f305e7d 100644 --- a/src/components/Step.tsx +++ b/src/components/Step.tsx @@ -43,6 +43,7 @@ const Step = () => { text={formatMessage({ id: data.title })} attrs={{ className: 'px-2 my-1 bg-neutral-700 rounded-md mx-1 whitespace-nowrap', + dir: 'ltr' }} /> { text={formatMessage({ id: data.description })} attrs={{ className: 'p-1 text-xs whitespace-nowrap rounded-md bg-neutral-700 tracking-widest', + dir: 'ltr' }} />
diff --git a/src/localization/en/general.json b/src/localization/en/general.json index 0fd4910e..89eb6e27 100644 --- a/src/localization/en/general.json +++ b/src/localization/en/general.json @@ -35,5 +35,5 @@ "page.cheatsheet.description": "Sometimes you just need to remember Regex. Try the cheatsheet that will make it easier for you to understand and remember better.", "page.playground.description": "You can easily build and test your regex pattern online via Playground.", - "learn.safari.unsupportWarning": "Regex in this step are not supported by the some browsers. If you have trouble getting past this step, you can click here." + "learn.safari.unsupportWarning": "Regex in this step is not supported by some browsers. If you have trouble getting past this step, click here." } diff --git a/src/localization/en/learn.json b/src/localization/en/learn.json index c2d6cc72..75f782a3 100644 --- a/src/localization/en/learn.json +++ b/src/localization/en/learn.json @@ -60,13 +60,13 @@ "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": "Curly Braces - 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": "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 in a row.", "steps.quantifierMin.title": "Curly Braces - 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": "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 in a row followed by a comma `,` and wrapped inside curly braces `{n, }`. For example, indicate that the following letter `e` can occur at least `3` times in a row.", "steps.quantifierRange.title": "Curly Braces - 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": "To express the occurrence of a character in a certain number range, we write curly braces `{x,y}` for the inclusive interval. For example, indicate that the following letter `e` can only occur between `1` and `3` times in a row.", "examples.asterisk.title": "Practice: Asterisk `*`", "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.", diff --git a/src/localization/fa/cheatsheet.json b/src/localization/fa/cheatsheet.json new file mode 100644 index 00000000..a29f16a9 --- /dev/null +++ b/src/localization/fa/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": "ؚا کارکتر یا کلمه ایی مطاؚقت دارد که در انتهای یک کلمه نیست.", + + "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": "ؚا اعداد 0 تا 9 مطاؚقت دارد.", + "cheatsheet.notDigit.title": "غیر اعداد", + "cheatsheet.notDigit.description": "ؚا هرکارکتری جز اعداد مطاؚقت دارد.", + "cheatsheet.space.title": "فضای سفید", + "cheatsheet.space.description": "ؚا هر کارکتر فضای خالی مطاؚقت دارد.", + "cheatsheet.notSpace.title": "غیر فضای سفید", + "cheatsheet.notSpace.description": "ؚا هرکارکتر غیر از فضای سفید مطاؚقت دارد.", + + "cheatsheet.flags": "ٟرچم ها", + "cheatsheet.caseInsensitiveFlag.title": "حساسیت ØšÙ‡ حروف", + "cheatsheet.caseInsensitiveFlag.description": "الگو را غیر حساس ØšÙ‡ حروف ؚزرگ و کوچک میکند.", + "cheatsheet.globalFlag.title": "جهانی", + "cheatsheet.globalFlag.description": "الگو را در اولین ٟیدا کردن متوقف نمیکند.", + "cheatsheet.multilineFlag.title": "چند خطی", + "cheatsheet.multilineFlag.description": "اگر فعال نؚا؎د، ؎روع و ٟایان خط، ؚراؚر ؚا اؚتدا و انتهای جمله است و ؚرای هر خط ØšÙ‡ صورت جداگانه کار نمیکند.", + + "cheatsheet.groupAndReferences": "گروه و مرجع", + "cheatsheet.group.title": "گروه ؚندی", + "cheatsheet.group.description": "یک الگو را گروه ؚندی میکند.", + "cheatsheet.reference.title": "مرجع", + "cheatsheet.reference.description": "؎ما را ØšÙ‡ گروه Ù‚ØšÙ„ÛŒ ارجاع میدهد.", + "cheatsheet.nonCapturingGroup.title": "گروه ؚندی ؚدون ارجاع", + "cheatsheet.nonCapturingGroup.description": "گروه ؚندی ایجاد میکند که قاؚل ارجاع نیست.", + + "cheatsheet.lookarounds": "جستجو کردن", + "cheatsheet.positiveLookahead.title": "ؚررسی رو ØšÙ‡ جلو مثؚت", + "cheatsheet.negativeLookahead.title": "ؚررسی رو ØšÙ‡ جلو منفی", + "cheatsheet.positiveLookbehind.title": "ؚررسی رو ØšÙ‡ عقؚ مثؚت", + "cheatsheet.negativeLookbehind.title": "ؚررسی رو ØšÙ‡ عقؚ منفی", + + "cheatsheet.quantifiersAndAlternation": "تعداد و جایزگینی", + "cheatsheet.plus.title": "ؚعلاوه", + "cheatsheet.plus.description": "م؎خص کردن تعداد 1 یا ؚی؎تر.", + "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": "انت؞ار میرود ؚا حداقل یکی از عؚارات مطاؚقت دا؎ته ؚا؎د." +} diff --git a/src/localization/fa/general.json b/src/localization/fa/general.json new file mode 100644 index 00000000..aa975d1c --- /dev/null +++ b/src/localization/fa/general.json @@ -0,0 +1,39 @@ +{ + "general.prev": "Ù‚ØšÙ„ÛŒ", + "general.next": "ؚعدی", + "general.result": "نتیجه", + "general.regex": "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": "ریجکس در این مرحله توسط ؚرخی از مرورگرها ٟ؎تیؚانی نمی ؎ود. اگر ؚرای عؚور از این مرحله Ù…ØŽÚ©Ù„ دارید، اینجا را کلیک کنید" +} diff --git a/src/localization/fa/index.js b/src/localization/fa/index.js new file mode 100644 index 00000000..a30a668d --- /dev/null +++ b/src/localization/fa/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; diff --git a/src/localization/fa/landing.json b/src/localization/fa/landing.json new file mode 100644 index 00000000..80376ed9 --- /dev/null +++ b/src/localization/fa/landing.json @@ -0,0 +1,26 @@ +{ + "landing.title": "یادگیری ریجکس ØšÙ‡ صورت گام ØšÙ‡ گام ، از صفر تا صد.", + "landing.description": "یادگیری ریجکس از چیزی که فکر میکنید ، ساده تر است. میتوانید از این وؚ سایت ؚرای `یادگیری`، `تمرین`، `تست` و `ا؎تراک گذاری` استفاده کنید.", + "landing.imageAltText": "تصویر مردی که ٟاهای؎ را روی میز گذا؎ته است.", + + "section.learn.title": "آموز؎", + "section.learn.content": "کلمه Regular Expressions که ØšÙ‡ اختصار Regex یا Regexp نامیده می ؎ود، ر؎ته ای از کاراکترها هستند که در چارچوؚ قوانین نحوی Regex ایجاد ؎ده اند. ؎ما ØšÙ‡ راحتی می توانید داده های خود را ؚا Regex مدیریت کنید که از دستوراتی مانند یافتن، تطؚیق و ویرای؎ استفاده می کند. Regex را می توان در زؚان های ؚرنامه نویسی مانند Python، SQL، JavaScript، R، Google Analytics، Google Data Studio و در طول فرآیند کدنویسی استفاده کرد. هم اکنون regex را ؚا مثال ها و آموز؎ های RegexLearn ØšÙ‡ صورت آنلاین ؚیاموزید.", + "section.learn.imageAltText": "تصویر کوه ؚا ٟرچمی ؚر قله آن.", + + "section.cheatsheet.button": "همین الان ؚررسی کنید", + "section.cheatsheet.title": "ؚرگه تقلؚ", + "section.cheatsheet.content": "ؚا ؚرگه تقلؚ ریجکس میتونید همه آنچه نیاز دارید را ØšÙ‡ طور همزمان ؚررسی کنید. تمام الگوها و نمادها در ؚرگه تقلؚ وجود دارند.", + "section.cheatsheet.imageAltText": "تصویر مردی که صفحات را ؚا دورؚین دوچ؎می م؎اهده میکند.", + + "section.playground.title": "زمین تمرین", + "section.playground.content": "اگر میخواهید یک ریجکس ؚسازید و آن را آزمای؎ کنید، میتوانید از طریق زمین ؚازی این کار را انجام دهید و ؚا دیگران ØšÙ‡ ا؎تراک ؚگذارید.", + "section.playground.imageAltText": "تصویر گرؚه ایی در حال انداختن لیوان ٟر.", + + "section.practice.title": "تمرین", + "section.practice.content": "اگر ؚخ؎ یادگیری را تکمیل کرده اید، زمان تمرین کردن رسیده! در ؚخ؎ تمرین میتوانید دان؎ خود را ارتقا دهید. ØšÙ‡ زودی در دسترس قرار خواهد گرفت.", + "section.practice.imageAltText": "تصویر زنی که از یک کتاؚ یاددا؎ت میکند.", + + "section.opensource.title": "منؚع ؚاز", + "section.opensource.content": "این وؚ سایت یک ٟروژه منؚع ؚاز است که از م؎ارکت های داخل جامعه استقؚال میکند و همچنین استفاده از آن رایگان است. کار ؚر روی این ٟروژه ØšÙ‡ ؎ما امکان میدهد مهارت های خود را تقویت کنید. ؎ما میتوانید در زیر م؎ارکت و حمایت کنید.", + "section.opensource.imageAltText": "تصویری از یک زن، یک مرد و یک گرؚه که قطعات ٟازل را کنار هم میچینند." +} diff --git a/src/localization/fa/learn.json b/src/localization/fa/learn.json new file mode 100644 index 00000000..dfd14e55 --- /dev/null +++ b/src/localization/fa/learn.json @@ -0,0 +1,163 @@ +{ + "examples.starter.title": "تمرین", + "examples.starter.description": "اکنون زمان آن رسیده است که ؚرای تثؚیت آموخته هایمان ، کمی تمرین کنیم.", + + "examples.finish.title": "تمرین ØšÙ‡ ٟایان رسید!", + "examples.finish.description": " ", + + "steps.starter.title": "مقدمه", + "steps.starter.description": "Regex مخفف عؚارت `Regular Expression` است. و ؚرای یافتن یا مدریت الگوی خاصی در متن ØšÙ‡ ما کمک میکند. ؚا تایٟ کلمه `OK` در قسمت regex ؎روع کنید تا ØšÙ‡ مرحله اول ؚروید.", + + "steps.whatIsRegex.title": "عؚارات من؞م یا `Regex` چیست؟", + "steps.whatIsRegex.description": "عؚارات من؞م، ر؎ته ای از کاراکترها هستند که یک الگوی جستجو را ؚیان می کنند و اغلؚ `Regex` یا `Regexp` خوانده می؎ود. ریجکس ØšÙ‡ ویژه ؚرای یافتن یا جایگزینی کلمات در متون استفاده می؎ود. و همچنین میتوانیم ؚررسی کنیم که آیا یک متن ؚا الگویی که تن؞یم کردیم ، مطاؚقت دارد یا خیر.\\n\\n ؚرای مثال، فرض کنید فهرستی از نام فایل ها دارید و ؎ما فقط میخواهید فایل هایی ؚا ٟسوند `pdf` را ٟیدا کنید. ؚرای این کار از الگو `^\\w+\\.pdf$` استفاده میکنیم. معنی نماد ها را در مراحل ٟی؎رفته تر توضیح خواهیم داد.", + + "steps.basicMatchers.title": "تطؚیق های اؚتدایی", + "steps.basicMatchers.description": "کاراکتر یا کلمه ای که می خواهیم ٟیدا کنیم مستقیماً نو؎ته می ؎ود. دقیقا ؎ؚیه یک فرایند جستجو معمولی است. ØšÙ‡ عنوان مثال، ؚرای یافتن کلمه `curious` در متن ، همان را در الگو تایٟ میکنیم.", + + "steps.dotCharacter.title": "نقطه `.`: هر کارکتری", + "steps.dotCharacter.description": "علامت نقطه `.` امکان انتخاؚ هر کاراکتری، از جمله کاراکترها و فاصله‌های خاص را می‌دهد. ؚرای ادامه یک نقطه `.` را در قسمت regex تایٟ کنید.", + + "steps.characterSet.title": "لیست کاراکترها `[abc]`", + "steps.characterSet.description": "اگر لیستی از کارکتر ها دا؎ته ؚا؎یم که ؚدانیم حداقل یکی از آن ها در الگوی ما وجود خواهند دا؎ت ، آن ها را در ٟرانتز [] می نویسیم. ؚرای مثال اگر ؚخواهیم تمامی کلمات متن زیر را ؚدست ؚیاوریم، ؚاید کارکتر های `a` `e` `i` `o` `u` را در `[]` تایٟ کنیم.", + + "steps.negatedCharacterSet.title": "لیست کاراکترهای منفی `[^abc]`", + "steps.negatedCharacterSet.description": "ؚرای ٟیدا کردن تمامی کلمات متن زیر ؚجز کلمات `ber` و `bor` ؚاید از نماد `^` در داخل `[]` استفاده کنید. این نماد کارکتر هایی غیر از کارکترهای داخل ؚراکت را انتخاؚ میکند.", + + "steps.range.title": "محدوده حروف`[a-z]`", + "steps.range.description": "ؚرای یافتن حروف در محدوده م؎خص ؎ده، حرف ؎روع و حرف ٟایانی در ؚراکت `[]` ؚا خط تیره ؚین آنها `-` نو؎ته می‌؎ود. این محدوده ØšÙ‡ حروف ؚزرگ و کوچک حساس است. عؚارتی را تایٟ کنید که تمام حروف کوچک ؚین `e` و `o` (ØšÙ‡ همراه خود؎ان) را انتخاؚ کند.", + + "steps.rangeNumber.title": "محدوده ؎ماره`[0-9]`", + "steps.rangeNumber.description": "ؚرای یافتن اعداد در محدوده م؎خص ؎ده، عدد ؎روع و عدد ٟایانی در ؚراکت `[]` ؚا خط تیره `-` ؚین آنها نو؎ته می ؎ود. عؚارتی ؚنویسید که تمام اعداد ؚین `3` و `6` از جمله خود؎ان را انتخاؚ کند.", + + "examples.basicMatchers.title": "تمرین: تطؚیق های اؚتدایی", + "examples.basicMatchers.description": "عؚارتی را ؚنویسید که کلمات `of` را در متن انتخاؚ کند.", + + "examples.dotCharacter.title": "تمرین: هر کارکتری", + "examples.dotCharacter.description": "عؚارتی را ؚرای انتخاؚ همه حروف، اعداد، فاصله و کاراکترهای خاص در متن تایٟ کنید. عؚارتی که تایٟ میکنید ؚاید ؚا هر کارکتری مطاؚقت دا؎ته ؚا؎د.", + + "examples.characterSet.title": "تمرین: لیست کارکتر ها", + "examples.characterSet.description": "عؚارتی را ؚنویسید که ؚا تمامی کلمات در متن مطاؚقت دا؎ته ؚا؎د. تنها کارکترهایی که تغییر میکنند حروف اول هستند.", + + "examples.negatedCharacterSet.title": "تمرین: لیست کاراکترهای منفی", + "examples.negatedCharacterSet.description": "عؚارتی را ؚنویسید که ؚا هر چیزی غیر از کلمات `beor` و `beur` در متن مطاؚقت دارد. این کار را ؚا استفاده از لیست کارکترهای منفی انجام دهید.", + + "examples.range.title": "تمرین: محدوده حروف", + "examples.range.description": "عؚارتی را ؚنویسید که حروف `g` تا `k` را در متن انتخاؚ کند.\\nخود حروف `g` و `k` نیز ؚاید در این محدوده گنجانده ؎وند.", + + "examples.rangeNumber.title": "تمرین: محدوده اعداد", + "examples.rangeNumber.description": "عؚارتی را ؚرای انتخاؚ اعداد `2` تا `7` در متن تایٟ کنید.\\n`2` و `7` نیز ؚاید در این محدوده گنجانده ؎وند.", + + "steps.repetitions.title": "تکرارها", + "steps.repetitions.description": "ؚرخی از کاراکترهای ویژه ؚرای تعیین تعداد تکرار یک کاراکتر در متن استفاده می ؎ود. این کارکتر های خاص عؚارتند از ؚعلاوه `+` ، ستاره `*` و علامت سوال `?` .", + + "steps.asterisk.title": "ستاره `*`", + "steps.asterisk.description": "ما یک ستاره `*` ؚعد از یک کاراکتر قرار می دهیم تا ن؎ان دهد که این کاراکتر ممکن است اصلاً تکرار ن؎ود و یا می تواند چندین ؚار تکرار ؎ود. ØšÙ‡ عنوان مثال، ن؎ان دهید که حرف `e` هرگز نؚاید در متن وجود دا؎ته ؚا؎د یا اینکه میتواند هرچند ؚار ، ٟ؎ت سرهم تکرار ؎ود.", + + "steps.plusCharacter.title": "علامت ؚعلاوه `+`", + "steps.plusCharacter.description": "ؚرای ن؎ان دادن اینکه یک کاراکتر می‌تواند حداقل یک یا چند ؚار تکرار ؎ود، ؚعد از یک کاراکتر علامت مثؚت `+` قرار می‌دهیم. ؚرای مثال کلماتی را در متن زیر انتخاؚ کنید که کارکتر `e` در آنها حداقل یکؚار تکرار ؎ود.", + + "steps.questionMark.title": "علامت سوال `?`", + "steps.questionMark.description": "ؚرای ن؎ان دادن اختیاری ؚودن یک کاراکتر، ؚعد از یک کاراکتر علامت سوال `?` قرار می دهیم. ؚرای مثال کلماتی را در متن زیر انتخاؚ کنید که کارکتر `u` در آن اختیاری ؚا؎د.", + + "steps.quantifier.title": "آکولاد - 1", + "steps.quantifier.description": "ؚرای م؎خص کردن تعداد معینی از وقوع (تکرار) یک کاراکتر، در انتهای کارکتر از آکولاد `{n}` ØšÙ‡ همراه تعداد دفعاتی که می‌خواهیم رخ دهد، استفاده میکنیم. ؚرای مثال کلماتی را در متن زیر انتخاؚ کنید که دقیقا `2` عدد کارکتر `e` دا؎ته ؚا؎ند.", + + "steps.quantifierMin.title": "آکولاد - 2", + "steps.quantifierMin.description": "ؚرای م؎خص کردن حداقل تعداد تکرار یک کارکتر ؚاید دقیقا ؚعد از م؎خص کردن تعداد حداقلی تکرار از علامت `,` استفاده کنید و آن را داخل آکولاد ØšÙ‡ این ØŽÚ©Ù„ `{n,}` قرار دهید. ؚرای مثال کلماتی را انتخاؚ کنید که کارکتر `e` در آنها حداقل `3` ؚار یا ؚی؎تر تکرار ؎ود.", + + "steps.quantifierRange.title": "آکولاد - 3", + "steps.quantifierRange.description": "ؚرای م؎خص کردن تعداد یک کاراکتر در یک محدوده اعداد م؎خص، اعداد را داخل آکولاد ØšÙ‡ این ØŽÚ©Ù„ `{x,y}` مینوسیم. ؚرای مثال کلماتی را در متن زیر انتخاؚ کنید که کارکتر `e` در آنها `1` الی `3` ؚار تکرار ؎ود.", + + "examples.asterisk.title": "تمرین: ستاره `*`", + "examples.asterisk.description": "از ستاره `*` ؚرای نو؎تن عؚارتی استفاده کنید که هر کلمه ایی را انتخاؚ می کند که حرف `e` در آن ها ØšÙ‡ تعداد صفر یا ؚی؎تر تکرار ؎ده ؚا؎د.", + + "examples.plusCharacter.title": "تمرین: علامت ؚعلاوه `+`", + "examples.plusCharacter.description": "عؚارت را ؚا استفاده از علامت مثؚت `+` ؚنویسید تا کلماتی را انتخاؚ کنید که در آنها حرف `e` یک یا چند ؚار در متن آمده است.", + + "examples.questionMark.title": "تمرین: علامت سوال `?`", + "examples.questionMark.description": "عؚارتی را ؚنویسید که ن؎ان می دهد حرف `n` در متن اختیاری است، استفاده کنید از علامت سوال `?`. ؚناؚراین هردو کلمه `a` و `an` را میتوان انتخاؚ کرد.", + + "examples.quantifier.title": "تمرین: آکولاد - 1", + "examples.quantifier.description": "عؚارتی را ؚا استفاده از آکولاد `{}` ؚنویسید که متن‌های حاوی اعدادی که `4` ؚار در کنار هم هستند را ٟیدا می‌کند. ØšÙ‡ یاد دا؎ته ؚا؎ید که محدوده `[0-9]` ؚا یک عدد تک رقمی مطاؚقت دارد.", + + "examples.quantifierMin.title": "تمرین: آکولاد - 2", + "examples.quantifierMin.description": "عؚارتی را ؚا استفاده از آکولاد `{}` ؚنویسید که متون حاوی حداقل `2` عدد را در کنار هم ٟیدا کند.", + + "examples.quantifierRange.title": "تمرین: آکولاد - 3", + "examples.quantifierRange.description": "عؚارتی را ؚا استفاده از آکولاد `{}` ؚنویسید که متون حاوی حداقل `1` و حداکثر `4` عدد را در کنار هم ٟیدا کند.", + + "steps.grouping.title": "ٟرانتز `( )`: گروه ؚندی", + "steps.grouping.description": "ما می توانیم یک عؚارت را گروه ؚندی کنیم و از این گروه ها ؚرای ارجاع یا اجرای ؚرخی قوانین استفاده کنیم. ؚرای گروه ؚندی یک عؚارت، آن را در () قرار میدهیم. در حال حاضر تنها گروه ما در زیر ؚاید `haa` ؚا؎د.", + + "steps.groupReference.title": "ارجاع (ا؎اره) ØšÙ‡ یک گروه", + "steps.groupReference.description": "کلمات `ha` و `haa` در زیر گروه ؚندی ؎ده اند. ؚا نو؎تن `\\1` گروه اول را صدا میزنیم و آن ؚخ؎ را از ؚازنویسی دوؚاره ØšÛŒ نیاز میکنیم. در اینجا عدد `1` ترتیؚ گروه را ن؎ان میدهد. ؚرای ا؎اره ØšÙ‡ گروه دوم، در انتهاؚ عؚارت، عؚارت `\\2` را تایٟ کنید. ", + + "steps.nonCapturingGrouping.title": "ٟرانتز `(?:)`: گروه‌ؚندی غیرقاؚل ارجاع", + "steps.nonCapturingGrouping.description": "می توانید یک عؚارت را گروه ؚندی کنید و اطمینان حاصل کنید که توسط مراجع ضؚط ن؎ده است. ؚرای مثال در زیر دو گروه وجود دارد. ؚا این حال، اولین گروه که ؚا استفاده از `\\1` صدا زده می؎ود، در واقع گروه دوم است، زیرا گروه اول غیر قاؚل ارجاع (صدازدن) میؚا؎د. ", + + "steps.pipeCharacter.title": "کاراکتر ٟایٟ `|`", + "steps.pipeCharacter.description": "نماد `|` معنیه <<یا>> در ؚرنامه نویسی را میدهد و اجازه میدهد از چندین عؚارت در یک الگو استفاده کنید. این نماد ؚا لیست کارکتر `[abc]` متفاوت است، زیرا لیست کارکترها در سطح کارکتر عمل میکند، اما کارکتر ٟایٟ در سطح الگو است. عؚارت زیر هم `cat` و هم `rat` را انتخاؚ میکند. یک علامت ٟایٟ دیگر ØšÙ‡ آخر الگو اضافه کنید تا عؚارت `dog` را هم انتخاؚ کند.", + + "steps.escapeCharacter.title": "کاراکتر فرار `\\`", + "steps.escapeCharacter.description": "کاراکترهای خاصی وجود دارد که هنگام نو؎تن ریجکس از آنها استفاده می کنیم.ؚرای اینکه ؚتوانیم از خود کارکتر های `{} [] / \\ + * . & ^ | ?` استفاده کنیم(دقیقا خود همان کارکتر ؚدون معنی آن)، ؚاید از یک کارکتر فرار `\\` Ù‚ØšÙ„ از آن استفاده کنیم. ؚرای مثال ؚرای انتخاؚ خود کارکتر نقطه `.` و ستاره `*` در متن ؚاید از کارکتر فرار `\\` استفاده کنید.", + + "steps.caret.title": "علامت هَت `^`:\\nانتخاؚ ؚا ؎روع خط", + "steps.caret.description": "ما از `[0-9]` ؚرای یافتن اعداد استفاده می‌کردیم. ؚرای ٟیدا کردن اعدادی که فقط اول خط هستند ؚاید از علامت `^` Ù‚ØšÙ„ از ؎روع الگو استفاده کنیم.", + + "steps.dollar.title": "علامت دلار `$`:\\nانتخاؚ ؚا ٟایان خط", + "steps.dollar.description": "ؚیایید از علامت `$` ؚعد از مقدار `html` استفاده کنیم تا متون `html` را فقط در انتهای خط ٟیدا کنیم.", + + "steps.wordCharacter.title": "کاراکتر کلمه `\\w`: حرف، عدد و آندرلاین", + "steps.wordCharacter.description": "عؚارت `\\w` ؚرای یافتن حروف انگلیسی، اعداد و کاراکترها زیرخط استفاده می ؎ود. ؚیاید از علامت `\\w` ؚرای ٟیدا کردن کلمات زیر استفاده کنیم.", + + "steps.withoutWordCharacter.title": "ØšÙ‡ جز کاراکتر کلمه `\\W`", + "steps.withoutWordCharacter.description": "عؚارت `\\W` ؚرای یافتن کاراکترهایی غیر از حروف انگلیسی، اعداد و زیرخط استفاده می‌؎ود.", + + "steps.numberCharacter.title": "کاراکتر عددی `\\d`", + "steps.numberCharacter.description": "عؚارت `\\d` فقط ؚرای یافتن کاراکترهای عددی استفاده می ؎ود.", + + "steps.withoutNumberCharacter.title": "ØšÙ‡ جز کارکترهای عددی `\\D`", + "steps.withoutNumberCharacter.description": "عؚارت `\\D` ؚرای یافتن کاراکترهای غیر عددی استفاده می ؎ود.", + + "steps.spaceCharacter.title": "کاراکتر فضای خالی `\\s`", + "steps.spaceCharacter.description": "عؚارت `\\s` فقط ؚرای یافتن کاراکترهای فاصله (فضای سفید) استفاده می ؎ود.", + + "steps.withoutSpaceCharacter.title": "ØšÙ‡ جز فضای خالی `\\S`", + "steps.withoutSpaceCharacter.description": "عؚارت `\\S` ؚرای یافتن کاراکترهای غیر فاصله (فضای سفید) استفاده می ؎ود.", + + "steps.lookarounds.title": "جستجو کردن", + "steps.lookarounds.description": "اگر می‌خواهیم عؚارتی که می‌نویسیم Ù‚ØšÙ„ یا ؚعد از عؚارت دیگری ؚیاید، ؚاید از `Lookaround` استفاده کنیم.", + + "steps.positiveLookahead.title": "ؚررسی رو ØšÙ‡ جلو مثؚت: `(?=)`", + "steps.positiveLookahead.description": "ؚرای مثال می خواهیم مقدار ساعت را در متن انتخاؚ کنیم. ؚناؚراین، ؚرای انتخاؚ فقط مقادیر عددی که ؚعد از آنها کمله `PM` قرار دارند، ؚاید ؚررسی رو ØšÙ‡ جلو مثؚت (Positive Lookahead) `(?=)` را ؚعد از عؚارت خود ؚنویسیم. `PM` را ؚعد از علامت `=` داخل ٟرانتز قرار دهید.", + + "steps.negativeLookahead.title": "ؚررسی رو ØšÙ‡ جلو منفی: `(?!)`", + "steps.negativeLookahead.description": "ؚرای مثال می خواهیم اعدادی غیر از مقدار ساعت را در متن انتخاؚ کنیم. ؚناؚراین، ؚاید ؚررسی رو ØšÙ‡ جلو منفی (Negative Lookahead) `(?!)` را ؚعد از عؚارت خود ؚنویسیم تا فقط مقادیر عددی را انتخاؚ کنیم که ؚعد از آنها `PM` وجود ندارد. `PM` را ؚعد از علامت `!` داخل ٟرانتز قرار دهید.", + + "steps.positiveLookbehind.title": "ؚررسی رو ØšÙ‡ عقؚ مثؚت: `(?<=)`", + "steps.positiveLookbehind.description": "ؚرای مثال می خواهیم مقدار قیمت را در متن انتخاؚ کنیم. ؚناؚراین، ؚرای انتخاؚ فقط مقادیر عددی که ؚعد از علامت $ هستند، ؚاید ؚررسی رو ØšÙ‡ عقؚ مثؚت (Positive Lookbehind) `(?<=)` را Ù‚ØšÙ„ از عؚارت خود ؚنویسیم. ؚعد از علامت `=` داخل ٟرانتز، `\\$` را اضافه کنید.", + + "steps.negativeLookbehind.title": "ؚررسی رو ØšÙ‡ عقؚ منفی: `(?<!)`", + "steps.negativeLookbehind.description": "ØšÙ‡ عنوان مثال، می خواهیم در متن اعدادی غیر از مقدار قیمت انتخاؚ کنیم. ؚناؚراین، ؚرای انتخاؚ فقط مقادیر عددی که ؚعد از `$` نیستند، ؚاید Ù‚ØšÙ„ از عؚارت، ؚررسی رو ØšÙ‡ عقؚ منفی (Negative Lookbehind) `(?<!)` را ؚنویسیم. ؚعد از علامت `!` داخل ٟرانتز `\\$` را اضافه کنید.", + + "steps.flags.title": "ٟرچم ها", + "steps.flags.description": "ٟرچم ها خروجی عؚارت را تغییر می دهند. ØšÙ‡ همین دلیل است که ٟرجم ها را اصلاح کننده (`modifiers`) نیز مینامند. ٟرچمها تعیین میکنند که آیا عؚارت تایٟ ؎ده متن را ØšÙ‡ عنوان خطوط جداگانه در ن؞ر میگیرد، ØšÙ‡ حروف کوچک و ؚزرگ حساس است و یا همه موارد تطاؚق را ٟیدا میکند یا خیر. ؚرای یادگیری ٟرچم ها ØšÙ‡ مرحله ؚعدی ؚروید.", + + "steps.flagsGlobal.title": "ٟرچم جهانی", + "steps.flagsGlobal.description": "ٟرچم جهانی (`global`) ؚاعث می ؎ود که ریجکس تمام موارد منطؚق را ٟیدا کند. اگر از آن استفاده ن؎ود، فقط اولین تطاؚق را ؚرمیگرداند. اکنون ٟرچم جهانی را فعال کنید تا ؚتوانید همه موارد را انتخاؚ کنید.", + + "steps.flagsMultiline.title": "ٟرچم چند خطی", + "steps.flagsMultiline.description": "ریجکس تمام متن را ØšÙ‡ صورت یک خط می ؚیند. اما ما از ٟرچم چند خطی (`multiline`) ؚرای رسیدگی ØšÙ‡ هر خط ØšÙ‡ طور جداگانه استفاده می کنیم. ØšÙ‡ این ترتیؚ عؚاراتی که ؚرای ؎ناسایی الگوها در انتهای خطوط می نویسیم ؚرای هر خط جداگانه کار می کنند. اکنون ٟرچم چند خطی را ؚرای یافتن همه موارد منطؚق فعال کنید.", + + "steps.flagsCaseInsensitive.title": "ٟرچم ؚدون حساسیت", + "steps.flagsCaseInsensitive.description": "ؚرای حذف حساسیت ØšÙ‡ حروف ؚزرگ . کوچک عؚارتی که نو؎ته‌ایم، ؚاید ٟرچم ؚدون حساسیت (`case-insensitive`) را فعال کنیم.", + + "steps.greedyMatching.title": "تطؚیق حریصانه", + "steps.greedyMatching.description": "ریجکس ØšÙ‡ طور ٟی؎ فرض یک مساؚقه حریصانه انجام می دهد. این عؚارت ØšÙ‡ این معناست که تطاؚق تا حد امکان طولانی خواهد ؚود. مثال زیر را ؚررسی کنید. این الگو ØšÙ‡ هر عؚارتی ا؎اره دارد که ØšÙ‡ کارکتر `r` ختم می؎ود، و میتواند هر کارکتری Ù‚ØšÙ„ از آن ؚا؎د. اما در مثال زیر، الگوی ما در ؚرخورد اول ؚا کارکتر `r` متوقف نمی؎ود (حریصانه ادامه میدهد).", + + "steps.lazyMatching.title": "تطؚیق تنؚل", + "steps.lazyMatching.description": "تطؚیق تنؚل، ؚر خلاف تطؚیق حریصانه، در اولین تطاؚق متوقف می ؎ود. ØšÙ‡ عنوان مثال در مثال زیر، یک `?` ؚعد از `*` ؚرای ٟیدا کردن اولین تطاؚق که ؚا حرف `r` ختم و Ù‚ØšÙ„ از هر کاراکتری وجود دارد مینویسیم. ؚناؚراین این تطاؚق در ؚرخورد اول ؚا کارکتر `r` متوقف می ؎ود.", + + "steps.completeAllSteps.title": "تؚریک میگم، ؎ما تمام مراحل را انجام داده اید!", + "steps.completeAllSteps.description": "هر زمان که ؚخواهید می توانید ØšÙ‡ مراحل Ù‚ØšÙ„ÛŒ ؚرگردید و ØšÙ‡ راحتی می توانید تمام مراحلی را که گذرانده اید طی کنید." +} \ No newline at end of file diff --git a/src/localization/fa/lessons.json b/src/localization/fa/lessons.json new file mode 100644 index 00000000..b15224ef --- /dev/null +++ b/src/localization/fa/lessons.json @@ -0,0 +1,7 @@ +{ + "lessons.regex101.title": "Regex 101 - FA", + "lessons.regex101.description": "در این آموز؎ می توانید اصول ریجکس را ؚیاموزید.", + + "lessons.regexForSeo.title": "Regex for SEO - FA", + "lessons.regexForSeo.description": "در این آموز؎ می توانید یاد ؚگیرید که چگونه و کجا می توانید از ریجکس ؚرای س؊و استفاده کنید." +} \ No newline at end of file diff --git a/src/localization/fa/lessons/regexForSeo.json b/src/localization/fa/lessons/regexForSeo.json new file mode 100644 index 00000000..4db05c3e --- /dev/null +++ b/src/localization/fa/lessons/regexForSeo.json @@ -0,0 +1,49 @@ +{ + "lesson.regexForSeo.starter.title": "ریجکس ؚرای س؊و", + "lesson.regexForSeo.starter.description": "ریجکس مجموعه ای از عؚارات من؞م است که اغلؚ در ؚسیاری از زمینه ها استفاده می ؎ود، ØšÙ‡ ویژه توسط افرادی که می خواهند ؚهره وری خود را افزای؎ دهند. مزایای استفاده از ریجکس در س؊و این است که تجزیه و تحلیل داده های ؚزرگ و نو؎تن فیلترهای ٟیچیده تر را آسان تر مکیکند. توصیه میکنیم که اگر تازه وارد هستید، ؚا آموز؎ `Regex 101` ؎روع کنید.\\n \\n ؚا تایٟ `OK` در قسمت `regex` ؎روع کنید تا ØšÙ‡ مرحله اول ؚروید و ØšÙ‡ توضیحات دقیق تری دسترسی ٟیدا کنید.", + + "lesson.regexForSeo.usage.title": "موارد استفاده", + "lesson.regexForSeo.usage.description": "می‌توانید از ریجکس ؚرای س؊و در ٟلتفرم‌هایی مانند `Google Analytics`، `Google Data Studio`، `Google Sheets`، `Google Search Console`، `Ahrefs`، `Deepcrawl`، `Screaming Frog` استفاده کنید.\\n\\n در زیر یک ریجکس نمونه میؚینید که عؚارت هایی را انتخاؚ میکند که در اول خود `Google` دارند. ", + + "lesson.regexForSeo.basics.title": "مؚانی", + "lesson.regexForSeo.basics.description": "ؚیایید نگاهی ØšÙ‡ ؚرخی از مؚانی ریجکس ؚیاندازیم که اغلؚ از آنها استفاده خواهید کرد. توصیه میکنیم ؚرای کسؚ اطلاعات ؚی؎تر در مورد این موارد، آموز؎ `Regex 101` را مرور کنید. ؚرای ؎روع `Yes` را تایٟ کنید.", + + "lesson.regexForSeo.or.title": "عملگر یا `|`", + "lesson.regexForSeo.or.description": "ما از عملگر 'یا' `|` ؚرای فیلتر کردن چند عؚارت استفاده می کنیم. ØšÙ‡ عنوان مثال، متن حاوی `seo` و `regex` را ؚا نو؎تن دو کلمه فیلتر کنید و آنها را ؚا عملگر 'یا' `|` از هم جدا کنید.", + + "lesson.regexForSeo.optional.title": "عملگر اختیاری `?`", + "lesson.regexForSeo.optional.description": "ما از آن ؚرای ؚیان اختیاری ؚودن یک عؚارت یا کاراکتر استفاده می کنیم. ØšÙ‡ عنوان مثال ما میخوایم متن حاوی هر دو کلمه `http` و `https` را فیلتر کنیم. میتوانیم از عملگر `|` استفاده کنیم، اما راه ؚهتری ؚرای این دو کلمه تقریؚا م؎اؚه وجود دارد.\\n\\n در این مثال حرف s اختیاری است. ٟس میتوانیم علامت سوال `?` را در انتهای حرف `s` قرار دهیم.", + + "lesson.regexForSeo.any.title": "هر چیزی .*.", + "lesson.regexForSeo.any.description": "در ریجکس علامت نقطه `.` یعنی می تواند ؚا هر چیزی، از جمله فضاها مطاؚقت دا؎ته ؚا؎د. اما این مطاؚقت فقط ؚرای یک کاراکتر است که در آن استفاده می ؎ود. کاراکتر ستاره * ØšÙ‡ این معنی است که مورد Ù‚ØšÙ„ اصلا وجود ندارد یا ؚی؎ از یک ؚار در متن وجود دارد. وقتی این دو ؚا هم استفاده می ؎وند، ØšÙ‡ این معنی است که می تواند عنصری ؚا طول نامحدود در جایی که استفاده می ؎ود وجود دا؎ته ؚا؎د.\\n\\n در زیر کلمات کلیدی مختلف آورده ؎ده است. `.*` را ØšÙ‡ انتهای ریجکس اضافه کنید تا عؚارتی را ؚنویسید که ؚا `how to write` ؎روع می ؎ود و هر چیزی در ادامه آن ؚیاید ، دارای مطاؚقت است.", + + "lesson.regexForSeo.contains.title": "فیلترینگ", + "lesson.regexForSeo.contains.description": "ؚرای فیلتر کردن متنی که حاوی کلمات یا عؚاراتی است که ØšÙ‡ دنؚال آن هستیم، کلمه مورد ن؞ر خود را ؚین دو عؚارت `.*` مینوسیم که ؚا همه چیز مطاؚقت دارد. ØšÙ‡ عنوان مثال `.*buy.*` را تایٟ کنید تا مواردی که ؎امل کلمه `buy` می؎وند را فیلتر کنید.", + + "lesson.regexForSeo.negated.title": "لیست کارکتر منفی `[^abc]`", + "lesson.regexForSeo.negated.description": "ما از لیست کارکتر منفی `[^]` ؚرای ن؎ان دادن کاراکترهایی استفاده می‌کنیم که نمی‌خواهیم درگیر ؎وند. کاراکترهایی که نمیخواهیم ؎امل آنها ؎وند، در ؚراکت ؚا یک علامت هَت ^ آورده ؎ده اند. در زیر `http` و `https` آورده ؎دهاند. از آنجایی که `http` در هر دو وجود دارد، `https` را نیز انتخاؚ می کند. `[^s]` را ؚعد از حرف `p` تایٟ کنید تا حرف `s` حذف ؎ود.", + + "lesson.regexForSeo.caret.title": "علامت هَت `^`", + "lesson.regexForSeo.caret.description": "فرض کنید فهرستی از URLها داریم و می‌خواهیم فقط آن آدرس‌هایی را ٟیدا کنیم که ؚا `http` ؎روع می‌؎وند. اما URL ها در قسمت های مختلف، غیر از اؚتدای خود حاوی `http` نیز هستند. ؚناؚراین یک `^` ØšÙ‡ اؚتدای عؚارت زیر اضافه کنید تا فقط مواردی که ؚا `http` ؎روع می ؎وند فیلتر ؎وند.", + + "lesson.regexForSeo.dollarAndEscape.title": "علامت دلار `$` و کاکتر فرار `\\`", + "lesson.regexForSeo.dollarAndEscape.description": "دوؚاره لیستی از URL ها را داریم. ما می خواهیم فقط آن URL هایی را ٟیدا کنیم که ØšÙ‡ `.htm` ختم می ؎وند.\\n\\\n نماد `.` یک کاراکتر ویژه است که ؚا همه چیز مطاؚقت دارد، اؚتدا ؚاید ؚا استفاده از کاراکتر فرار `\\` خاصیت نماد `.` را غیرفعال کنیم. این ؚرای همه کاراکترهای خاص صدق می کند.\\n\\n سٟس علامت `$` را ØšÙ‡ انتهای عؚارت اضافه کنید. تا تضمین کند که عؚارت حتما ؚاید در آخر جمله ؚا؎د.", + + "lesson.regexForSeo.limitation.title": "محدودیت طول `{n}`", + "lesson.regexForSeo.limitation.description": "ممکن است ؚخواهیم نتایج را ؚر اساس طول کاراکتر فیلتر کنیم. ØšÙ‡ عنوان مثال، ؚرای فیلتر کردن URL هایی که `35` کاراکتر دارند،ؚاید `{35}` را ؚعد از علامت `.` قرار دهید.", + + "lesson.regexForSeo.maxLimitation.title": "محدودیت طول (حداکثر) `{n,m}`", + "lesson.regexForSeo.maxLimitation.description": "ؚرای فیلتر کردن URL هایی ؚا طول حداکثر 35 کاراکتر، حداقل و حداکثر مقادیر عددی را در آکولاد ØšÙ‡ ØŽÚ©Ù„ `{1,35}` تایٟ میکنید و ؚعد از نماد `.` قرار میدهید.", + + "lesson.regexForSeo.minLimitation.title": "محدودیت های طول (حداقل) `{n,}`", + "lesson.regexForSeo.minLimitation.description": "ؚرای فیلتر کردن URL هایی ؚا طول حداقل 35 کاراکتر، حداقل مقدار عددی را همراه علامت `,` در آکولاد ØšÙ‡ ØŽÚ©Ù„ `{35,}` تایٟ میکنید و ؚعد از نماد `.` قرار میدهید.", + + "lesson.regexForSeo.robots.title": "robots.txt (regex-like syntax)", + "lesson.regexForSeo.robots.description": "اینجا یک مثال از استفاده regex-like در فایل `robots.txt` است. این مثال ؚیان میکند که رؚاتها نؚاید لینکهایی ؚا ٟسوند `pdf` را کراول کنند.", + + "lesson.regexForSeo.htaccess.title": "htaccess", + "lesson.regexForSeo.htaccess.description": "در اینجا نمونه ای از استفاده از ریجکس در فایل `.htaccess` آورده ؎ده است. در مثال، لینک هایی ؚا فرمت `php` ØšÙ‡ فرمت های `html` ؚا کد 301 هدایت می ؎وند.", + + "lesson.regexForSeo.outro.title": "حرف آخر", + "lesson.regexForSeo.outro.description": "دانستن ریجکس یک مهارت است که ØšÙ‡ ؚهؚود ؚهره وری در هر ٟلتفرم که اجازه استفاده از ریجکس را میدهد، کمک میکند. هنگامی که ؎روع ØšÙ‡ استفاده از آن میکنید و این مهارت را ؚهؚود میؚخ؎ید، ØšÙ‡ ؎ما کمک خواهد کرد تا و؞ایف تکراری زیادی را سریع تر انجام دهید و زمان کمتری ؚرای کارهای دیگر صرف کنید. ؚرای ؚهتر فهمیدن اصول ریجکس، میتوانید ØšÙ‡ آموز؎ `Regex 101` مراجعه کنید. ؎ما میتوانید از صفحه `زمین تمرین` ؚرای تست عؚارات خود روی متون خود استفاده کنید." +} \ No newline at end of file diff --git a/src/localization/index.ts b/src/localization/index.ts index 58790802..96ea6a3e 100644 --- a/src/localization/index.ts +++ b/src/localization/index.ts @@ -7,13 +7,15 @@ export const langNames = { ru: '🇷🇺', 'zh-cn': '🇚🇳', uk: '🇺🇊', + ka: '🇬🇪', ko: '🇰🇷', pl: '🇵🇱', 'pt-br': '🇧🇷', 'cs-cz': '🇚🇿', + 'fa': '🇮🇷', }; -export const rtlSupported = []; +export const rtlSupported = ['fa']; export const defaultLocale = 'en'; diff --git a/src/localization/ka/cheatsheet.json b/src/localization/ka/cheatsheet.json new file mode 100644 index 00000000..5089d054 --- /dev/null +++ b/src/localization/ka/cheatsheet.json @@ -0,0 +1,70 @@ +{ + "cheatsheet.section.title": "Regex-ის ზოგადი განმარტებები", + "cheatsheet.section.description": "ლეისწავლეთ ყველა Regex-ნიმული და სიმბოლო ზოგადი განმარტებების გამოყენებით", + + "cheatsheet.anchors": "ძირითადი", + "cheatsheet.caret.title": "ტექსტის ან სტრიქონის დასაწყისი", + "cheatsheet.caret.description": "ლესაბამისობალი მოდის ტექსტის ან სტრიქონის დასაწყისთან.", + "cheatsheet.dollar.title": "ტექსტის ან სტრიქონის დასასრული", + "cheatsheet.dollar.description": "ლესაბამისობალი მოდის ტექსტის ან სტრიქონის დასასრულთან.", + "cheatsheet.wordBoundary.title": "სიტყვის მიჯნა", + "cheatsheet.wordBoundary.description": "ლესაბამისობალი მოდის სიმბოლოსთან ან პოზიციასთან სიტყვის ბოლოჹი.", + "cheatsheet.notWordBoundary.title": "გარდა სიტყვის მიჯნისა", + "cheatsheet.notWordBoundary.description": "ლესაბამისობალი მოდის სიმბოლოსთან ან პოზიციასთან, რომელიც არ არის სიტყვის ბოლოჹი.", + + "cheatsheet.characterClasses": "სიმბოლოთა კლასები", + "cheatsheet.characterSet.title": "სიმბოლოთა ნაკრები", + "cheatsheet.characterSet.description": "ლესაბამისობალი მოდის ნაკრებჹი ჹემავალ ნებისმიერ სიმბოლოსთან.", + "cheatsheet.negatedCharacterSet.title": "უარყოჀილ სიმბოლოთა ნაკრები", + "cheatsheet.negatedCharacterSet.description": "ლესაბამისობალი მოდის ნაკრებჹი არ ჹემავალ ნებისმიერ სიმბოლოსთან.", + "cheatsheet.range.title": "დიაპაზონი", + "cheatsheet.range.description": "ლესაბამისობალი მოდის ორ სიმბოლოს ლორის დიაპაზონჹი ჹემავალ ყველა სიმბოლოსთან, საწყისი და საბოლოო სიმბოლოების ჩათვლით.", + "cheatsheet.dot.title": "წერტილი", + "cheatsheet.dot.description": "ლესაბამისობალი მოდის ნებისმიერ სიმბოლოსთან, ახალ ხაზზე გადასვლის სიმბოლოს გარდა.", + "cheatsheet.word.title": "ასო-ციჀრული სიმბოლოები", + "cheatsheet.word.description": "ლესაბამისობალი მოდის ნებისმიერ ასო-ციჀრულ სიმბოლოსთან. ქვეტირეების ჩათვლით.", + "cheatsheet.notWord.title": "გარდა ასო-ციჀრული სიმბოლოებისა", + "cheatsheet.notWord.description": "ლესაბამისობალი მოდის ნებისმიერ სიმბოლოსთან, გარდა ასო-ციჀრული სიმბოლოებისა.", + "cheatsheet.digit.title": "ციჀრი", + "cheatsheet.digit.description": "ლესაბამისობალი მოდის ნებისმიერ რიცხობრივ სიმბოლოსთან.", + "cheatsheet.notDigit.title": "გარდა ციჀრებისა", + "cheatsheet.notDigit.description": "ლესაბამისობალი მოდის ნებისმიერ სიმბოლოსთან, გარდა რიცხობრივი სიმბოლოებისა.", + "cheatsheet.space.title": "ინტერვალი", + "cheatsheet.space.description": "ლესაბამისობალი მოდის ნებისმიერ ინტერვალის სიმბოლოსთან.", + "cheatsheet.notSpace.title": "გარდა ინტერვალებისა", + "cheatsheet.notSpace.description": "ლესაბამისობალი მოდის ნებისმიერ სიმბოლოსთან, გარდა ინტერვალებისა.", + + "cheatsheet.flags": "ალმები", + "cheatsheet.caseInsensitiveFlag.title": "რეგისტრის უგულებელყოჀა", + "cheatsheet.caseInsensitiveFlag.description": "გამოსახულებას რეგისტრის მიმართ არამგრძნობიარედ აქცევს.", + "cheatsheet.globalFlag.title": "გლობალური", + "cheatsheet.globalFlag.description": "მიუთითებს, რომ გამოსახულება არ ლეჩერდება პირველ დამთხვევაზე.", + "cheatsheet.multilineFlag.title": "მრავალსტრიქონიანობა", + "cheatsheet.multilineFlag.description": "თუ არ არის გააქტიურებული, გამოსახულება სტრიქონის საწყის და საბოლოო წერტილებად ა჊იქვამს მთლიანი ტექსტის საწყის და საბოლოო წერტილებს. ანუ, გამოსახულება არ იმოქმედებს თითოეულ სტრიქონზე ცალ-ცალკე.", + + "cheatsheet.groupAndReferences": "ჯგუჀები & მათზე მითითება", + "cheatsheet.group.title": "ჯგუჀი", + "cheatsheet.group.description": "ახდენს გამოსახულების კლასიჀიცირებას (დაჯგუჀებას).", + "cheatsheet.reference.title": "მითითება", + "cheatsheet.reference.description": "მიუთითებს (იყენებს) დაჯგუჀებულ გამოსახულებას.", + "cheatsheet.nonCapturingGroup.title": "ჯგუჀი, რომელსაც არ მიენიჭება რიგის ნომერი", + "cheatsheet.nonCapturingGroup.description": "ახორციელებს დაჯგუჀებას, რომელზე მითითება (მიწვდომა) არ იქნება ლესაძლებელი.", + + "cheatsheet.lookarounds": "მიმოხედვა", + "cheatsheet.positiveLookahead.title": "დადებითი ხედვა წინ", + "cheatsheet.negativeLookahead.title": "უარყოჀითი ხედვა წინ", + "cheatsheet.positiveLookbehind.title": "დადებითი ხედვა უკან", + "cheatsheet.negativeLookbehind.title": "უარყოჀითი ხედვა უკან", + + "cheatsheet.quantifiersAndAlternation": "გამეორებები და ალტერნატივები", + "cheatsheet.plus.title": "პლუსი", + "cheatsheet.plus.description": "გამოსახულება ლესაბამისობალი მოდის ერთ ან მეტ სიმბოლოსთან.", + "cheatsheet.asterisk.title": "ვარსკვლავი", + "cheatsheet.asterisk.description": "გამოსახულება ლესაბამისობალი მოდის ნულ ან მეტ სიმბოლოსთან.", + "cheatsheet.quantifier.title": "გამეორება", + "cheatsheet.quantifier.description": "გამოსახულება ლესაბამისობალი მოდის დიაპაზონით წარმოდგენილი რაოდენობის სიმბოლოსთან.", + "cheatsheet.optional.title": "არასავალდებულო", + "cheatsheet.optional.description": "გამოსახულებას არასავალდებულოდ აქცევს.", + "cheatsheet.alternation.title": "ალტერნატივა", + "cheatsheet.alternation.description": "მულაობს „ან“ ოპერატორის მსგავსად. ელის, როდის მოხდება რომელიმე წინასწარ განსაზ჊ვრული გამოსახულების ლესაბამისობალი მოსვლა ტექსტთან." +} diff --git a/src/localization/ka/general.json b/src/localization/ka/general.json new file mode 100644 index 00000000..5d54e42a --- /dev/null +++ b/src/localization/ka/general.json @@ -0,0 +1,39 @@ +{ + "general.prev": "წინა", + "general.next": "ჹემდეგი", + "general.result": "ჹედეგი", + "general.regex": "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": "Regex Learn - ეტაპობრივად, ნულიდან მაჩალ დონეზე.", + "page.learn.title": "Regex Learn - Regex-ის ინტერაქციული კურსი", + "page.cheatsheet.title": "Regex Learn - ზოგადი განმარტებები", + "page.playground.title": "Regex Learn - სავარჯილო სივრცე", + "page.404.title": "Regex Learn - არ მოიძებნა", + + "page.landing.description": "ისწავლეთ Regex-ი ინტერაქციულად, აკეთეთ თქვენი ცოდნის დონის ლესაბამისი სავარჯილოები, ლეამოწმეთ და გააზიარეთ თქვენ მიერ დაწერილი Regex-ი.", + "page.learn.description": "ისწავლეთ Regex-ი ეტაპობრივად. გაიარეთ ინტერაქციული კურსი, რომელიც სწავლის პროცესს უჀრო მარტივს და სწრაჀს გახდის.", + "page.cheatsheet.description": "ხანდახან უბრალოდ გჭირდებათ, რომ გადაიმეოროთ Regex-ი. სცადეთ, გამოიყენოთ ზოგადი განმარტებები, რაც დაგეხმარებათ, უკეთ გაიაზროთ ან გაიხსენოთ მივიწყებული საკითხები.", + "page.playground.description": "ლეგიძლიათ მარტივად ააგოთ და გამოცადოთ თქვენი Regex-ნიმული ონლაინ, სავარჯილო სივრცის გამოყენებით.", + + "learn.safari.unsupportWarning": "Regex-ი ამ ეტაპზე ზოგიერთი ბრაუზერის მიერ მხარდაჭერილი არ არის. თუკი ამ ნაბიჯის გადალახვას ვერ ახერხებთ, ლეგიძლიათ აქ დააწკაპუნოთ." +} diff --git a/src/localization/ka/index.js b/src/localization/ka/index.js new file mode 100644 index 00000000..a30a668d --- /dev/null +++ b/src/localization/ka/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; diff --git a/src/localization/ka/landing.json b/src/localization/ka/landing.json new file mode 100644 index 00000000..12d8a7f4 --- /dev/null +++ b/src/localization/ka/landing.json @@ -0,0 +1,26 @@ +{ + "landing.title": "ისწავლეთ Regex-ი ეტაპობრივად, ნულიდან მაჩალ დონეზე.", + "landing.description": "Regex-ის ლესწავლა იმაზე მარტივია, ვიდრე წარმოგიდგენიათ. ლეგიძლიათ გამოიყენოთ წინამდებარე მასალა, რათა `ისწავლოთ`, `ივარჯილოთ`, `გამოცადოთ` და `გააზიაროთ` Regex-ი მარტივად.", + "landing.imageAltText": "ილუსტრაცია მოდუნებული კაცისა, რომელსაც Ⴠეხები მაგიდაზე ლემოუწყვია.", + + "section.learn.title": "სწავლა", + "section.learn.content": "`რეგულარული გამოსახულება`, ჹემოკლებით Regex ან Regexp, არის სიმბოლოებისგან ჹემდგარი სტრიქონი, რომელიც ლექმნილია Regex-ის სინტაქსის წესებზე დაყრდნობით. Regex-ით, — რომელიც იყენებს ბრძანებებს, როგორებიცაა ძიება, მსგავსება და რედაქტირება, — ლეგიძლიათ მარტივად მართოთ თქვენი მონაცემები. Regex-ი ლეიძლება გამოყენებულ იქნეს პროგრამირების ისეთ ენებჹი, როგორებიცაა Python, SQL, JavaScript, R, Google Analytics, Google Data Studio და სხვა. ისწავლეთ Regex-ი ონლაინ ახლავე, RegexLearn-ზე არსებული სასწავლო მასალებისა და მაგალითების გამოყენებით.", + "section.learn.imageAltText": "ილუსტრაცია მთისა, რომლის მწვერვალზეც დროჹა არის ა჊მართული.", + + "section.cheatsheet.button": "გადახედვა", + "section.cheatsheet.title": "ზოგადი განმარტებები", + "section.cheatsheet.content": "`RegexLearn-ის ზოგადი განმარტებების` გამოყენებით ლეგიძლიათ ერთბაჹად იხილოთ Regex-ის მოხმარების ყველა მაგალითი და გამოცადოთ ისინი ულუალოდ ამ ერთი გვერდიდან. ლეისწავლეთ ყველა Regex-ნიმული და სიმბოლო ზოგადი განმარტებების გამოყენებით.", + "section.cheatsheet.imageAltText": "ილუსტრაცია კაცისა, რომელიც გვერდებს ბინოკლით აკვირდება.", + + "section.playground.title": "სავარჯილო სივრცე", + "section.playground.content": "თუ გსურთ, დააგენერიროთ Regex-ი, ამაჹი სავარჯილო სივრცე დაგეხმარებათ, სადაც ლეგიძლიათ ძალიან მარტივად ააგოთ და გამოცადოთ Regex-ნიმულები. თქვენ, როგორც Regex-ტესტერს, ლეგიძლიათ ლეამოწმოთ ამა თუ იმ Regex-ის სისწორე და გაუზიაროთ იგი სხვებს კოლაბორაციული მულაობისთვის.", + "section.playground.imageAltText": "ილუსტრაცია კატისა, რომელიც სადაცაა პირთამდე სავსე ჭურჭელს გადმოაგდებს.", + + "section.practice.title": "პრაქტიკა", + "section.practice.content": "როდესაც სასწავლო მასალის ნაწილს ამოწურავთ, დგება დრო ცოდნის პრაქტიკალი გამოყენებისა! პრაქტიკული მულაობის განყოჀილებალი ლეგიძლიათ ლეამოწმოთ თქვენი ცოდნა Regex-ის კონტექსტლი და ივარჯილოთ სათანადო მასალებზე დაყრდნობით, თქვენი ცოდნის ლესაბამისად. ეს Ⴠუნქცია მალე დაემატება.", + "section.practice.imageAltText": "ილუსტრაცია ქალბატონისა, რომელიც ახორციელებს ლენილვნების ამოკრებას წიგნიდან.", + + "section.opensource.title": "჊ია რესურსი", + "section.opensource.content": "Regex Learn — ეს არის ჊ია პროექტი, რომელიც მიესალმება ნებისმიერი მსურველის მიერ მის განვითარებაჹი ლეტანილ ნებისმიერი სახის წვლილს და არის სრულიად უჀასო. ამ პროექტზე მულაობა სალუალებას მოგცემთ გაიუმჯობესოთ უნარები, ისწავლოთ და ითანამჹრომლოთ სხვებთან. ლეგიძლიათ მხარლი ამოუდგეთ პროექტს და ხელი ლეუწყოთ მის განვითარებას.", + "section.opensource.imageAltText": "ილუსტრაცია ქალბატონისა, ბატონისა და კატისა, რომლებიც თავსატეხის Ⴠრაგმენტებს ერთად უყრიან თავს." +} diff --git a/src/localization/ka/learn.json b/src/localization/ka/learn.json new file mode 100644 index 00000000..7decda94 --- /dev/null +++ b/src/localization/ka/learn.json @@ -0,0 +1,163 @@ +{ + "examples.starter.title": "სავარჯილო", + "examples.starter.description": "ახლა კი დროა, ახლად ათვისებული საკითხების ლესაჯამებლად, ცოტა წავივარჯილოთ.", + + "examples.finish.title": "სავარჯილო დასრულებულია!", + "examples.finish.description": " ", + + "steps.starter.title": "ლესავალი", + "steps.starter.description": "Regex-ი არის `Regular Expression`-ის ლემოკლებული ჩანაწერი. იგი გვეხმარება, ლევამოწმოთ ტექსტლი არსებული მსგავსებები, მოვახდინოთ ძიება ან მართვა ტექსტისა. მოდი, დავიწყოთ ჹემდეგით: ქვემოთ მოცემულ ველჹი ლათინური სიმბოლოებით ჹეიყვანეთ ტექსტი `OK`, რათა გადახვიდეთ პირველ ეტაპზე, სადაც მოცემული იქნება უჀრო დეტალური ა჊წერა..", + + "steps.whatIsRegex.title": "რა არის რეგულარული გამოსახულება (`Regex`)?", + "steps.whatIsRegex.description": "რეგულარული გამოსახულება არის სიმბოლოებისგან ჹემდგარი სტრიქონი, რომელიც გამოხატავს საძიებო ნიმულს. ხლირად, ჹემოკლებით მოიხსენიებენ, როგორც `Regex` ან `Regexp`. განსაკუთრებით აქტიურად გამოიყენება ტექსტებლი გარკვეული სიტყვების მოსაძებნად ან ჩასანაცვლებლად. გარდა ამისა, მისი მეჹვეობით ლეგვიძლია ლევამოწმოთ, აკმაყოჀილებს თუ არა ესა თუ ის ტექსტი ჩვენ მიერ განსაზ჊ვრულ ნორმებს.\\n\\n მაგალითად, ვთქვათ, მოცემული გვაქვს Ⴠაილების სახელთა სია და გვინდა, რომ მათ ლორის მოვძებნოთ მხოლოდ `pdf` გაჀართოების მქონე Ⴠაილები. სასურველ ლედეგს მივა჊წევთ, თუ ჹევადგენთ ჹემდეგი სახის გამოსახულებას: `^\\w+\\.pdf$`. მომდევნო ეტაპების გავლასთან ერთად ა჊ნილნული გამოსახულების მულაობის პრინციპი თანდათანობით გასაგები გახდება.", + + "steps.basicMatchers.title": "მსგავსებათა ძიება (საბაზისო)", + "steps.basicMatchers.description": "სიტყვისა თუ ბგერის, — რომლის მოძებნაც გვსურს, — ჩაწერა ულუალოდ ხდება, მსგავსად სტანდარტული ძიების პროცესისა. მაგალითად, ტექსტლი სიტყვა `curious`-ის მოსაძებნად, ჹეიყვანეთ იგივე სიტყვა.", + + "steps.dotCharacter.title": "წერტილი `.`: ნებისმიერი სიმბოლო", + "steps.dotCharacter.description": "წერტილი `.` სალუალებას გაძლევთ აირჩიოთ ნებისმიერი სიმბოლო, მათ ლორის სპეციალური სიმბოლოები და ინტერვალები. გასაგრძელებლად, Regex-ის ველჹი ჹეიყვანეთ წერტილი.", + + "steps.characterSet.title": "სიმბოლოთა ნაკრები `[abc]`", + "steps.characterSet.description": "როდესაც სიტყვალი ჹემავალი ერთ-ერთი სიმბოლოსთვის საჭიროა რამდენიმე ალტერნატიული ლესაბამისობის განსაზ჊ვრა, კვადრატულ Ⴠრჩხილებლი `[]` ვწერთ ყველა ალტერნატიულ სიმბოლოს. მაგალითად, რათა ჹეადგინოთ ისეთი გამოსახულება, რომელსაც ლეეძლება [ქვემოთ მოცემულ] ტექსტლი ჹემავალი ყოველი სიტყვის პოვნა, კვადრატულ Ⴠრჩხილებლი `[]`, გამყოჀი ინტერვალების გარეჹე ჹეიყვანეთ ჹემდეგი სიმბოლოები: `a`, `e`, `i`, `o`, `u`.", + + "steps.negatedCharacterSet.title": "უარყოჀილ სიმბოლოთა ნაკრები `[^abc]`", + "steps.negatedCharacterSet.description": "იმისათვის, რომ ქვემოთ მოცემულ ტექსტლი იპოვოთ ყველა სიტყვა, გარდა `ber`-ისა და `bor`-ისა, კვადრატულ Ⴠრჩხილებლი `[]`, ახარისხების სიმბოლოს `^` ჹემდეგ ჹეიყვანეთ `e` და `o` სიმბოლოები გვერდი-გვერდ.", + + "steps.range.title": "ასოთა დიაპაზონი `[a-z]`", + "steps.range.description": "იმისათვის, რომ განსაზ჊ვრულ დიაპაზონჹი ვიპოვოთ ასოები, საწყისსა და საბოლოო ასოებს ვწერთ კვადრატულ Ⴠრჩხილებლი `[]` და ერთმანეთისაგან დეჀისით `-` გამოვყოჀთ. ა჊სანილნავია, რომ მსგავსი ჩანაწერი რეგისტრის მიმართ მგრძნობიარეა. ჹეადგინეთ ისეთი გამოსახულება, რომელიც აარჩევს ყველა ასოს `e`-სა და `o`-ს ლორის, საწყისი და საბოლოო ასოების (`e` და `o`) ჩათვლით.", + + "steps.rangeNumber.title": "ციჀრთა დიაპაზონი `[0-9]`", + "steps.rangeNumber.description": "იმისათვის, რომ განსაზ჊ვრულ დიაპაზონჹი ვიპოვოთ ციჀრები, საწყისსა (უმცირესი) და საბოლოო (უდიდესი) ციჀრებს ვწერთ კვადრატულ Ⴠრჩხილებლი `[]` და ერთმანეთისაგან დეჀისით `-` გამოვყოჀთ. ჹეადგინეთ ისეთი გამოსახულება, რომელიც აარჩევს ყველა ციჀრს `3`-ს და `6`-ს ლორის, საწყისი და საბოლოო ციჀრების (`3` და `6`) ჩათვლით.", + + "examples.basicMatchers.title": "სავარჯილო: მსგავსებათა ძიება (საბაზისო)", + "examples.basicMatchers.description": "დაწერეთ გამოსახულება, რომელიც ტექსტლი აარჩევს ყველა დამთხვევას სიტყვისთვის `of`.", + + "examples.dotCharacter.title": "სავარჯილო: ნებისმიერი სიმბოლო", + "examples.dotCharacter.description": "დაწერეთ გამოსახულება ტექსტლი ცალკეული ასოების, ციჀრების, ინტერვალებისა და სპეციალური სიმბოლოების ასარჩევად. თქვენ მიერ ჹეყვანილი გამოსახულება ლესაბამისობალი უნდა მოდიოდეს ნებისმიერ სიმბოლოსთან.", + + "examples.characterSet.title": "სავარჯილო: სიმბოლოთა ნაკრები", + "examples.characterSet.description": "დაწერეთ Ⴠრაზა, რომელიც ლესაბამისობალი მოვა ტექსტის თითოეულ სიტყვასთან. გაითვალისწინეთ, რომ სიტყვებს ლორის განმასხვავებელი ერთადერთი სიმბოლო პირველი ასოა.", + + "examples.negatedCharacterSet.title": "სავარჯილო: უარყოჀილ სიმბოლოთა ნაკრები", + "examples.negatedCharacterSet.description": "დაწერეთ გამოსახულება, რომელიც ტექსტლი მოცემულ ყველა სიტყვასთან მოვა ლესაბამისობალი, გარდა სიტყვებისა - `beor` და `beur`. განახორციელეთ ეს უარყოჀილ სიმბოლოთა ნაკრების გამოყენებით.", + + "examples.range.title": "სავარჯილო: ასოთა დიაპაზონი", + "examples.range.description": "დაწერეთ გამოსახულება, რომელიც ტექსტლი აარჩევს ასოებს `g`-იდან `k`-მდე.\\nდიაპაზონჹი ასევე უნდა ლედიოდეს `g` და `k` ასოებიც.", + + "examples.rangeNumber.title": "სავარჯილო: ციჀრთა დიაპაზონი", + "examples.rangeNumber.description": "დაწერეთ გამოსახულება, რათა ტექსტლი აირჩიოთ ციჀრები `2`-იდან `7`-მდე.\\nდიაპაზონჹი ასევე უნდა ლედიოდეს `2` და `7`.", + + "steps.repetitions.title": "გამეორებები", + "steps.repetitions.description": "იმის განსაზ჊ვრისთვის, თუ რამდენჯერ მეორდება ესა თუ ის ასო (სიმბოლო) ტექსტლი, რამდენიმე სპეციალური სიმბოლო გამოიყენება. ეს სპეციალური სიმბოლოებია: პლუსი `+`, ვარსკვლავი `*` და კითხვის ნიჹანი `?`.", + + "steps.asterisk.title": "ვარსკვლავი `*`", + "steps.asterisk.description": "იმის ა჊სანილნავად, რომ ამა თუ იმ სიმბოლოს დამთხვევა ტექსტლი ლეიძლება საერთოდ არ მოხდეს, ან ლეიძლება არაერთხელ მოხდეს, სიმბოლოს ჹემდეგ ვწერთ ვარსკვლავს `*`. მაგალითად, ქვემოთ მოცემული ტექსტისათვის ჹეადგინეთ რეგულარული გამოსახულება, რომლითაც აჩნიჹნავთ, რომ ასო `e` ტექსტლი ლეიძლება საერთოდ არ ლედიოდეს ან ლედიოდეს ერთხელ ან ზედიზედ მრავალჯერ.", + + "steps.plusCharacter.title": "პლუსი `+`", + "steps.plusCharacter.description": "იმის ა჊სანილნავად, რომ ესა თუ ის სიმბოლო ტექსტლი ლეიძლება ლედიოდეს ერთხელ ან მრავალჯერ, სიმბოლოს ჹემდეგ ვწერთ პლუსს `+`. მაგალითად, ქვემოთ მოცემული ტექსტისათვის ჹეადგინეთ რეგულარული გამოსახულება, რომლითაც აჩნიჹნავთ, რომ ასო `e` ტექსტლი ლეიძლება ლედიოდეს ერთხელ ან მრავალჯერ.", + + "steps.questionMark.title": "კითხვის ნიჹანი `?`", + "steps.questionMark.description": "იმის ა჊სანილნავად, რომ ესა თუ ის სიმბოლო არასავალდებულოა, სიმბოლოს ჹემდეგ ვწერთ კითხვის ნილანს `?`. მაგალითად, ქვემოთ მოცემული ტექსტისათვის ჹეადგინეთ რეგულარული გამოსახულება, რომლითაც აჩნიჹნავთ, რომ ასო `u` არასავალდებულოა.", + + "steps.quantifier.title": "Ⴠიგურული Ⴠრჩხილები - 1", + "steps.quantifier.description": "იმის განსაზ჊ვრისთვის, თუ კონკრეტულად რამდენჯერ უნდა მეორდებოდეს ესა თუ ის სიმბოლო ტექსტლი, სიმბოლოს ჹემდეგ, Ⴠიგურულს Ⴠრჩხილებს ლორის ვწერთ რიცხვს `{n}`, რომლითაც აჩვნიჹნავთ, რამდენჯერ უნდა მეორდებოდეს ეს კონკრეტული სიმბოლო ტექსტლი. მაგალითად, ქვემოთ მოცემული ტექსტისათვის ჹეადგინეთ რეგულარული გამოსახულება, რომლითაც აჩნიჹნავთ, რომ ასო `e` უნდა მეორდებოდეს მხოლოდ `2`-ჯერ.", + + "steps.quantifierMin.title": "Ⴠიგურული Ⴠრჩხილები - 2", + "steps.quantifierMin.description": "იმის განსაზ჊ვრისთვის, თუ მინიმუმ რამდენჯერ უნდა მეორდებოდეს ესა თუ ის სიმბოლო ტექსტლი, სიმბოლოს ჹემდეგ, Ⴠიგურულ Ⴠრჩხილებს ლორის ვწერთ მინიმალური გამეორებების რიცხვს და ჹემდეგ მძიმეს `{n, }`. მაგალითად, ქვემოთ მოცემული ტექსტისათვის ჹეადგინეთ რეგულარული გამოსახულება, რომლითაც აჩნიჹნავთ, რომ ასო `e` უნდა მეორდებოდეს მინიმუმ `3`-ჯერ.", + + "steps.quantifierRange.title": "Ⴠიგურული Ⴠრჩხილები - 3", + "steps.quantifierRange.description": "იმისათვის, რომ განსაზ჊ვროთ გამეორებების დასალვები დიაპაზონი (რიცხვითი ლუალედი), Ⴠიგურულ Ⴠრჩხილებს ლორის ვწერთ გამეორებების მინიმალურ და მაქსიმალურ ოდენობას `{x,y}`. მაგალითად, ქვემოთ მოცემული ტექსტისათვის ჹეადგინეთ რეგულარული გამოსახულება, რომლითაც აჩნიჹნავთ, რომ ასო `e` უნდა მეორდებოდეს მხოლოდ `1`-იდან `3`-მდე დიაპაზონჹი.", + + "examples.asterisk.title": "სავარჯილო: ვარსკვლავი `*`", + "examples.asterisk.description": "ვარსკვლავის `*` გამოყენებით ჹეადგინეთ რეგულარული გამოსახულება, რომელიც ლესაბამისობალი მოვა ყველა სიტყვასთან და დაულვებს, რომ ასო `e` ლეიძლება საერთოდ არ ლედიოდეს ტექსტლი, ანდა ლედიოდეს ერთხელ ან ზედიზედ მრავალჯერ.", + + "examples.plusCharacter.title": "სავარჯილო: პლუსი `+`", + "examples.plusCharacter.description": "პლუსის `+` გამოყენებით ჹეადგინეთ რეგულარული გამოსახულება, რომელიც ლესაბამისობალი მოვა ყველა იმ სიტყვასთან, რომელლიც ასო `e` ლედის ერთხელ ან ზედიზედ მრავალჯერ.", + + "examples.questionMark.title": "სავარჯილო: კითხვის ნიჹანი `?`", + "examples.questionMark.description": "ჹეადგინეთ რეგულარული გამოსახულება, რომელიც ა჊ნილნავს, რომ ასო `n` ტექსტლი არასავალდებულოა. გამოიყენეთ კითხვის ნიჹანი `?`. გამოსახულება ლესაბამისობალი უნდა მოდიოდეს ორივე (`a` და `an`) სიტყვასთან.", + + "examples.quantifier.title": "სავარჯილო: Ⴠიგურული Ⴠრჩხილები - 1", + "examples.quantifier.description": "Ⴠიგურული Ⴠრჩხილების `{}` გამოყენებით ჹეადგინეთ რეგულარული გამოსახულება, რომელიც ლესაბამისობალი მოვა ტექსტის იმ Ⴠრაგმენტთან ან Ⴠრაგმენტებთან, სადაც ზედიზედ `4` ციჀრია წარმოდგენილი. გახსოვდეთ, რომ დიაპაზონი `[0-9]` ლესაბამისობალი მოდის მხოლოდ ერთ ციჀრთან.", + + "examples.quantifierMin.title": "სავარჯილო: Ⴠიგურული Ⴠრჩხილები - 2", + "examples.quantifierMin.description": "Ⴠიგურული Ⴠრჩხილების `{}` გამოყენებით ჹეადგინეთ რეგულარული გამოსახულება, რომელიც ლესაბამისობალი მოვა ტექსტის იმ Ⴠრაგმენტთან ან Ⴠრაგმენტებთან, სადაც ზედიზედ `2` ან მეტი ციჀრია წარმოდგენილი.", + + "examples.quantifierRange.title": "სავარჯილო: Ⴠიგურული Ⴠრჩხილები - 3", + "examples.quantifierRange.description": "Ⴠიგურული Ⴠრჩხილების `{}` გამოყენებით ჹეადგინეთ რეგულარული გამოსახულება, რომელიც ლესაბამისობალი მოვა ტექსტის იმ Ⴠრაგმენტთან ან Ⴠრაგმენტებთან, სადაც ზედიზედ მინიმუმ `1` და მაქსიმუმ `4` ციჀრია წარმოდგენილი.", + + "steps.grouping.title": "Ⴠრჩხილები `( )`: დაჯგუჀება", + "steps.grouping.description": "Regex-ლი გვაქვს ლესაძლებლობა, მოვახდინოთ გამოსახულებების კლასიჀიცირება (დაჯგუჀება) და ჹემდგომჹი გამოვიყენოთ ეს ჯგუჀები სხვადასხვა ინსტრუქციების სისრულელი მოსაყვანად. რეგულარული გამოსახულებების კლასიჀიცირებისათვის ვიყენებთ Ⴠრჩხილებს `()`. ამჯერად მოდით, დაწერეთ გამოსახულება, რომელიც ქვემოთ მოცემული ტექსტისათვის მოახდენს `haa`-ს კლასიჀიცირებას.", + + "steps.groupReference.title": "ჯგუჀზე მითითება", + "steps.groupReference.description": "ქვემოთ მოცემულ მაგალითჹი კლასიჀიცირებულია სიტყვები `ha` და `haa`. პირველ ჯგუჀზე მითითება ხდება `\\1`-ის დაწერით (ამ გზით თავს ვარიდებთ გამოსახულების ერთი და იგივე Ⴠრაგმენტის ხელახლა გადაწერას). ამ ლემთხვევალი, `1` ა჊ნილნავს ჯგუჀის რიგის ნომერს. დაწერეთ `\\2` ქვემოთ მოცემული გამოსახულების ბოლოჹი, რათა მოახდინოთ მითითება მეორე ჯგუჀზე.", + + "steps.nonCapturingGrouping.title": "Ⴠრჩხილები `(?: )`: დაჯგუჀება რიგის ნომრის მინიჭების გარეჹე", + "steps.nonCapturingGrouping.description": "ლეგიძლიათ გამოსახულებების კლასიჀიცირება იმგვარადაც, რომ არ დაულვათ მასზე მიწვდომა (მითითება) რიგის ნომრით. მაგალითად, ქვემოთ მოცემულია ორი ჯგუჀი. თუმცა, პირველ ჯგუჀზე მითითება, რომელსაც აჩვნიჹნავთ `\\1`-ით, სინამდვილელი მიუთითებს მეორე ჯგუჀზე, რადგან პირველ ჯგუჀს არ აქვს მინიჭებული რიგის ნომერი. დაწერეთ `\\1` ქვემოთ მოცემული გამოსახულების ბოლოჹი, რათა მოახდინოთ მითითება მეორე ჯგუჀზე.", + + "steps.pipeCharacter.title": "ვერტიკალური ხაზი `|`", + "steps.pipeCharacter.description": "ამ სიმბოლოს სალუალებით ლეგვიძლია განვსაზ჊ვროთ ალტერნატიული ქვეგამოსახულებები გამოსახულებალი. ამ მიზნით, ყველა ლესაძლო გამოსახულება უნდა ჩაიწეროს მიყოლებით და ერთმანეთისგან გამოიყოს ვერტიკალური ხაზით `|`. ეს მეთოდი განსხვავდება სიმბოლოთა ნაკრების განსაზ჊ვრებისაგან `[abc]`, რომელიც მხოლოდ სიმბოლოების დონეზე მულაობს. ალტერნატიული ქვეგამოსახულებები მულაობს გამოსახულების დონეზე. მაგალითად, ქვემოთ მოცემული გამოსახულება ლესაბამისობალი მოდის სიტყვებთან `cat` და `rat`. გამოსახულების ბოლოჹი დაამატეთ კიდევ ერთი ვერტიკალური ხაზი `|` და დაწერეთ სიტყვა `dog`, რათა ყველა სიტყვასთან მოხდეს თანხვედრა.", + + "steps.escapeCharacter.title": "უკან გადახრილი წილადის ხაზი `\\`", + "steps.escapeCharacter.description": "არსებობს სპეციალური სიმბოლოები, რომლებსაც რეგულარული გამოსახულებების ჩაწერისას ვიყენებთ. `{ } [ ] / \\ + * . $^ | ?` იმისათვის, რომ ეს სიმბოლოები გამოსახულებალი ა჊ქმულ იქნეს, როგორც ჩვეულებრივი სიმბოლოები, ვიყენებთ უკან გადახრილ წილადის ხაზს `\\`. მაგალითად, იმისათვის, რომ ქვემოთ მოცემულ ტექსტლი მოძიებულ იქნეს წერტილი `.` და ვარსკვლავი `*`, რეგულარულ გამოსახულებალი ორივე სიმბოლოს (`.` და `*`) წინ დაამატეთ უკან გადახრილი წილადის ხაზი `\\`.", + + "steps.caret.title": "ახარისხების ნიჹანი `^`:\\nლერჩევა ხაზის დასაწყისის მიხედვით", + "steps.caret.description": "როგორც ადრე აჩვნიჹნეთ, რეგულარულ გამოსახულებებლი ციჀრების მოძიებისთვის ვიყენებთ ჹემდეგნაირ ჩანაწერს: `[0-9]`. იმისათვის, რომ ქვემოთ მოცემული ტექსტის ყოველი ხაზის მხოლოდ დასაწყისლი არსებული ციჀრები იქნეს მოძიებული, გამოსახულებას თავსართის სახით დაურთეთ ახარისხების ნიჹანი `^`.", + + "steps.dollar.title": "დოლარის ნიჹანი `$`:\\nლერჩევა ხაზის დაბოლოების მიხედვით", + "steps.dollar.description": "დაურთეთ დოლარის `$` ნიჹანი სიტყვა `html`-ს ბოლოსართის სახით, რათა მოძიებულ იქნეს მხოლოდ ყოველი ხაზის ბოლოჹი არსებული `html`-ები.", + + "steps.wordCharacter.title": "ასო-ციჀრული სიმბოლოები `\\w`: ასო, ციჀრი და ქვეტირე", + "steps.wordCharacter.description": "`\\w` ჩანაწერი გამოიყენება ტექსტლი ასოების, ციჀრებისა და ქვეტირეების მოსაძიებლად. ქვემოთ მოცემულ გამოსახულებალი გამოიყენეთ `\\w` ჩანაწერი, რათა მოიძიოთ ტექსტლი არსებული ყველა ასო, ციჀრი და ქვეტირე.", + + "steps.withoutWordCharacter.title": "გარდა ასო-ციჀრული სიმბოლოებისა `\\W`", + "steps.withoutWordCharacter.description": "ჩანაწერი `\\W` გამოიყენება ტექსტლი ჹემავალი ყველა სიმბოლოს მოსაძიებლად, გარდა ასოებისა, ციჀრებისა და ქვეტირეებისა. გამოიყენეთ ა჊ნილნული ჩანაწერი ქვემოთ მოცემულ გამოსახულებალი.", + + "steps.numberCharacter.title": "ციჀრები `\\d`", + "steps.numberCharacter.description": "ჩანაწერი `\\d` გამოიყენება მხოლოდ ციჀრების მოსაძიებლად. გამოიყენეთ ა჊ნილნული ჩანაწერი ქვემოთ მოცემულ გამოსახულებალი.", + + "steps.withoutNumberCharacter.title": "გარდა ციჀრებისა `\\D`", + "steps.withoutNumberCharacter.description": "ჩანაწერი `\\D` გამოიყენება ტექსტლი ჹემავალი ყველა სიმბოლოს მოსაძიებლად, გარდა ციჀრებისა. გამოიყენეთ ა჊ნილნული ჩანაწერი ქვემოთ მოცემულ გამოსახულებალი.", + + "steps.spaceCharacter.title": "ინტერვალები `\\s`", + "steps.spaceCharacter.description": "ჩანაწერი `\\s` გამოიყენება მხოლოდ ინტერვალების მოსაძიებლად. გამოიყენეთ ა჊ნილნული ჩანაწერი ქვემოთ მოცემულ გამოსახულებალი.", + + "steps.withoutSpaceCharacter.title": "გარდა ინტერვალებისა `\\S`", + "steps.withoutSpaceCharacter.description": "ჩანაწერი `\\S` გამოიყენება ტექსტლი ჹემავალი ყველა სიმბოლოს მოსაძიებლად, გარდა ინტერვალებისა. გამოიყენეთ ა჊ნილნული ჩანაწერი ქვემოთ მოცემულ გამოსახულებალი.", + + "steps.lookarounds.title": "მიმოხედვა", + "steps.lookarounds.description": "თუ გვინდა, რომ Ⴠრაზა, რომელსაც ვწერთ, მოსდევდეს ანდა წინ უსწრებდეს რაიმე სხვა Ⴠრაზას, უნდა „მიმოვიხედოთ“. გადადით ჹემდეგ ეტაპზე, რათა ლეისწავლოთ, თუ როგორ ხდება Regex-ლი „მიმოხედვა“.", + + "steps.positiveLookahead.title": "დადებითი ხედვა წინ: `(?=)`", + "steps.positiveLookahead.description": "დავულვათ გვჭირდება, რომ ტექსტიდან ამოვიჩოთ საათის აჩმნიჹვნელი მნიჹვნელობა. ესე იგი, უნდა მივწვდეთ მხოლოდ რიცხვით მნილვნელობებს, რომლებსაც თან სდევს `PM`-ი. ამისათვის, ქვემოთ მოცემული გამოსახულების ბოლოჹი დაწერეთ დადებითი ხედვის გამოსახულება `(?=)` და Ⴠრჩხილებს ლორის, ტოლობის ნილნის `=` ჹემდეგ დაამატეთ `PM`-ი.", + + "steps.negativeLookahead.title": "უარყოჀითი ხედვა წინ: `(?!)`", + "steps.negativeLookahead.description": "ვთქვათ გვინდა, რომ ტექსტიდან ამოვკრიბოთ ყველა რიცხვითი მნიჹვნელობა, გარდა საათის აჩმნიჹვნელი მნილვნელობებისა. ამისათვის, ქვემოთ მოცემული გამოსახულების ბოლოჹი დაწერეთ უარყოჀითი ხედვის გამოსახულება `(?!)` და Ⴠრჩხილებს ლორის, ძახილის ნილნის `!` ჹემდეგ დაამატეთ `PM`-ი.", + + "steps.positiveLookbehind.title": "დადებითი ხედვა უკან: `(?<=)`", + "steps.positiveLookbehind.description": "დავულვათ გვინდა, რომ ტექსტიდან ამოვიჩოთ Ⴠასის მნიჹვნელობა. ესე იგი, უნდა მივწვდეთ მხოლოდ რიცხვით მნილვნელობებს, რომლებსაც წინ უსწრებს სიმბოლო `$`. ამისათვის, ქვემოთ მოცემული გამოსახულების დასაწყისლი დაწერეთ დადებითი უკან ხედვის გამოსახულება `(?<=)` და Ⴠრჩხილებს ლორის, ტოლობის ნილნის `=` ჹემდეგ დაამატეთ სიმბოლო `\\$`.", + + "steps.negativeLookbehind.title": "უარყოჀითი ხედვა უკან: `(?<!)`", + "steps.negativeLookbehind.description": "ვთქვათ გვჭირდება, რომ ტექსტიდან ამოვკრიბოთ ყველა რიცხვითი მნიჹვნელობა, გარდა Ⴠასის მაჩვენებელი მნილვნელობებისა. ამისათვის, ქვემოთ მოცემული გამოსახულების დასაწყისლი დაწერეთ უარყოჀითი უკან ხედვის გამოსახულება `(?<!)` და Ⴠრჩხილებს ლორის, ძახილის ნილნის `!` ჹემდეგ დაამატეთ სიმბოლო `\\$`.", + + "steps.flags.title": "ალმები", + "steps.flags.description": "ალმები ამა თუ იმ გამოსახულებისაგან მი჊ებულ ლედეგებს ცვლიან. სწორედ ამიტომაა, რომ ალმებს `მოდიჀიკატორებადაც` მოიხსენიებენ. ალმები განსაზ჊ვრავენ, გამოსახულება ტექსტზე იმოქმედებს, როგორც ცალკე ხაზების ერთობლიობაზე თუ ერთ მთლიან ტექსტზე; არის თუ არა გამოსახულება რეგისტრის მიმართ მგრძნობიარე; პოულობს თუ არა გამოსახულება ყველა დამთხვევას. გადადით ჹემდეგ ეტაპზე, რათა ლეისწავლოთ Regex-ლი ალმების გამოყენება.", + + "steps.flagsGlobal.title": "გლობალურობის აჩმნიჹვნელი ალამი", + "steps.flagsGlobal.description": "`global` ალამი გამოსახულებას უბრძანებს, რომ ყველა ლესაძლო დამთხვევა მოძებნოს ტექსტლი. თუ ამ ალამს არ გამოიყენებთ, გამოსახულება იმოქმედებს მხოლოდ პირველ დამთხვევაზე ტექსტლი. ახლა კი, ქვემოთ მოცემული გამოსახულებისათვის გაააქტიურეთ `global` ალამი, რათა ტექსტიდან მოახდინოთ ყველა დამთხვევის ამოკრება.", + + "steps.flagsMultiline.title": "მრავალსტრიქონიანობის აჩმნიჹვნელი ალამი", + "steps.flagsMultiline.description": "Regex-ი მთელ ტექსტს ერთ სტრიქონად ა჊იქვამს. მაგრამ არსებობს `multiline` ალამი, რომლის გააქტიურებითაც ლეგვიძლია ცალ-ცალკე ვიმოქმედოთ თითოეულ სტრიქონზე. ამ გზით, ჩვენ მიერ ჹედგენილი გამოსახულებები, რომელთა გამოყენებითაც სტრიქონების ბოლოჹი არსებულ Ⴠრაგმენტებზე ვახდენთ მითითებას, თითოეული სტრიქონზე ცალ-ცალკე იმოქმედებს. ახლა კი, ქვემოთ მოცემული გამოსახულებისათვის გაააქტიურეთ `multiline` ალამი, რათა ტექსტიდან ამოკრიბოთ ყველა დამთხვევა.", + + "steps.flagsCaseInsensitive.title": "რეგისტრის მიმართ არამგრძნობიარეობის აჩმნიჹვნელი ალამი", + "steps.flagsCaseInsensitive.description": "იმისათვის, რომ ჩვენ მიერ ჹედგენილი გამოსახულება რეგისტრის მიმართ მგრძნობიარე არ იყოს, უნდა გავააქტიუროთ `case-insensitive` ალამი.", + + "steps.greedyMatching.title": "„გაუმაძ჊არი“ ძიება", + "steps.greedyMatching.description": "Regex-ი ნაგულისხმევად ახორციელებს „გაუმაძ჊არ“ ძიებას. ეს ნილნავს, რომ დამთხვევათა ძიების პროცესი მაქსიმალურად დიდხანს გასტანს. იხილეთ ქვემოთ მოცემული მაგალითი. მოცემული გამოსახულება მიემართება `r` ასოზე დამთავრებულ ტექსტს, თანაც, მნიჹვნელობა არ აქვს, რა სიმბოლოები უსწრებს წინ `r`-ს. ამასთან, ძიების პროცესი არ ჩერდება ტექსტლი პირველივე ნაპოვნ დამთხვევაზე (`r`-ზე).", + + "steps.lazyMatching.title": "„ზანტი“ ძიება", + "steps.lazyMatching.description": "„გაუმაძ჊არი“ ძიებისაგან განსხვავებით, „ზანტი“ ძიება ჩერდება პირველივე ნაპოვნ დამთხვევაზე. მაგალითისათვის, ქვემოთ მოცემულ გამოსახულებალი დაამატეთ კითხვის ნიჹანი `?` ვარსკვლავის `*` ჹემდეგ, რათა მოძებნილ იქნეს პირველი დამთხვევა, რომელსაც წინ უსწრებს ნებისმიერი სიმბოლო, და ბოლოვდება ასო `r`-ზე. მალასადამე, ძიების პროცესი ლეწყდება პირველივე ნაპოვნ დამთხვევაზე (`r`-ზე).", + + "steps.completeAllSteps.title": "გილოცავთ, ყველა ეტაპი წარმატებით გაიარეთ!", + "steps.completeAllSteps.description": "ლეგიძლიათ ნებისმიერ დროს მიუბრუნდეთ განვლილ ეტაპებს და მარტივად გადახვიდეთ ერთი ეტაპიდან მეორეზე." +} diff --git a/src/localization/ka/lessons.json b/src/localization/ka/lessons.json new file mode 100644 index 00000000..38e9d7a5 --- /dev/null +++ b/src/localization/ka/lessons.json @@ -0,0 +1,7 @@ +{ + "lessons.regex101.title": "Regex 101 - KA", + "lessons.regex101.description": "ამ სახელმძ჊ვანელოს მეჹვეობით ლეგიძლიათ ლეისწავლოთ Regex-ის საჀუძვლები.", + + "lessons.regexForSeo.title": "Regex for SEO - KA", + "lessons.regexForSeo.description": "ამ სახელმძ჊ვანელოს მეჹვეობით ლეძლებთ ლეისწავლოთ, თუ როგორ და რა მოცემულობალია დასალვები Regex-ის გამოყენება SEO-სთვის." +} diff --git a/src/localization/ka/lessons/regexForSeo.json b/src/localization/ka/lessons/regexForSeo.json new file mode 100644 index 00000000..539607df --- /dev/null +++ b/src/localization/ka/lessons/regexForSeo.json @@ -0,0 +1,49 @@ +{ + "lesson.regexForSeo.starter.title": "რეგულარული გამოსახულებები SEO-თვის", + "lesson.regexForSeo.starter.description": "Regex-ი არის რეგულარული გამოსახულებების ნაკრები, რომელიც გამოიყენება სხვადასხვა მიმართულებით, განსაკუთრებით იმ ადამიანების მიერ, ვისაც საკუთარი პროდუქტიულობის გაზრდა სურს. რეგულარული გამოსახულებების SEO-თვის გამოყენების უპირატესობა იმაჹი მდგომარეობს, რომ იგი ამარტივებს დიდი (მასლტაბური) მონაცემების ანალიზს და ძლიერი Ⴠილტრების ლემულავების პროცესს. თუკი Regex-ი თქვენთვის ახალია, გირჩევთ სწავლა დაიწყოთ `Regex 101` სახელმძ჊ვანელოთი. \\n\\nდასაწყისისათვის, ქვემოთ მოცემულ Regex-ის ველჹი ჹეიყვანეთ ტექსტი `OK`, რათა გადახვიდეთ პირველ ეტაპზე და უჀრო დეტალური განმარტებები მიიჩოთ.", + + "lesson.regexForSeo.usage.title": "გამოყენების მაგალითები", + "lesson.regexForSeo.usage.description": "რეგულარული გამოსახულებების SEO-თვის გამოყენება ლეგიძლიათ ისეთ პლატჀორმებზე, როგორებიცაა `Google Analytics`, `Google Data Studio`, `Google Sheets`, `Google Search Console`, `Ahrefs`, `Deepcrawl`, `Screaming Frog` და სხვა. ასევე, ხლირად გამოიყენება `.htaccess` და `robots.txt (regex-ის მაგვარი სინტაქსი)` Ⴠაილებლი.\\n\\nქვემოთ მოცემულია Regex-ის მარტივი ნიმული, რომელიც ლესაბამისობალი მოვა ჩამონათვალლი ჹემავალ მხოლოდ იმ ტექსტებთან, რომლებიც იწყება `Google`-ით.", + + "lesson.regexForSeo.basics.title": "საწყისები", + "lesson.regexForSeo.basics.description": "მოდი, განვიხილოთ Regex-ის რამდენიმე ისეთი ნიმული, რაც ხლირად გამოგადგებათ პრაქტიკალი. იმისათვის, რომ უკეთ გაერკვეთ მაგალითებჹი მოყვანილი გამოსახულებების მულაობის პრინციპებლი, გირჩევთ გადახედოთ `Regex 101` სახელმძ჊ვანელოს. ქვემოთ მოცემულ ველჹი ჹეიყვანეთ სიტყვა `Yes` და გადავიდეთ საქმეზე.", + + "lesson.regexForSeo.or.title": "„ან“ ოპერატორი `|`", + "lesson.regexForSeo.or.description": "„ან“ ოპერატორს `|` ვიყენებთ რამდენიმე ალტერნატიული ქვეგამოსახულების განსაზ჊ვრის მიზნით. მაგალითისათვის, დაწერეთ რეგულარული გამოსახულება, რომელიც ქვემოთ მოცემული ტექსტიდან ამოკრებს სიტყვებს `seo` და `regex`. ამისათვის, Regex-ის ველჹი ჹეიყვანეთ ა჊ნილნული სიტყვები და ერთმანეთისაგან გამოყავით „ან“ ოპერატორით `|`.", + + "lesson.regexForSeo.optional.title": "პირობითობის აჩმნიჹვნელი ოპერატორი `?`", + "lesson.regexForSeo.optional.description": "ამ ოპერატორს ვიყენებთ იმის ა჊სანილნავად, რომ ესა თუ ის სიმბოლო ან გამოსახულება არასავალდებულოა. ვთქვათ გვჭირდება ტექსტის გაჀილტვრა ისე, რომ ამოვკრიბოთ `http` და `https` სიტყვები. რა თქმა უნდა, ლეგვიძლია ამ მიზნით „ან“ ოპერატორის `|` გამოყენება, მაგრამ ა჊ნილნულ ლემთხვევალი, როცა სიტყვები თითქმის იდენტურია, არსებობს უკეთესი გზაც.\\n\\nმოცემულ მაგალითჹი, ასო `s` არის პირობითი (არასავალდებულო). Regex-ის ველჹი, ასო `s`-ის ჹემდეგ დაამატეთ კითხვის ნიჹანი `?`.", + + "lesson.regexForSeo.any.title": "ნებისმიერი სიმბოლო `.*`", + "lesson.regexForSeo.any.description": "Regex-ლი წერტილი `.` ლესაბამისობალი მოდის ყველა სიმბოლოსთან ინტერვალის ჩათვლით. მაგრამ ეს ლესაბამისობა ვრცელდება მხოლოდ ერთ სიმბოლოზე (და არა მთლიან ტექსტზე). ვარსკვლავის სიმბოლო `*` ა჊ნილნავს, რომ მის წინ მდებარე გამოსახულების დამთხვევა ტექსტლი ლეიძლება საერთოდ არ მოხდეს, ან ბევრჯერ მოხდეს. როდესაც ნახსენები ორი სიმბოლო (`.` და `*`) ერთად გამოიყენება, ეს იმას ნილნავს, რომ `.`-ის ლესაბამისობა გავრცელდება მთლიან ტექსტზე (და არა მხოლოდ ერთ სიმბოლოზე).\\n\\nქვემოთ, Regex-ის ველჹი, მოცემულია რამდენიმე საკვანძო სიტყვა. იმავე ველჹი, ინტერვალის ჹემდეგ დაამატეთ წერტილი და ვარსკვლავი `.*`, რათა ჹეადგინოთ გამოსახულება, რომელიც ლესაბამისობალი მოვა ყველა ისეთ სტრიქონთან, რომელიც იწყება `how to write`-ით და არ აქვს მნიჹვნელობა, როგორ გრძელდება.", + + "lesson.regexForSeo.contains.title": "ლეიცავს", + "lesson.regexForSeo.contains.description": "იმისათვის, რომ ტექსტი გავჀილტროთ ამა თუ იმ სიტყვის ან Ⴠრაზის ლემცველობის მიხედვით, სასურველი სიტყვა ან Ⴠრაზა უნდა მოვაქციოთ ორ `.*`-ს ლორის (`.*` არის გამოსახულება, რომელიც ნებისმიერ სიმბოლოსთან მოდის ლესაბამისობალი). მაგალითისათვის, Regex-ის ველჹი ჹეიყვანეთ `.*buy.*`, რათა ტექსტიდან ამოკრიბოთ ყველა ის სტრიქონი, რომელიც ლეიცავს სიტყვას `buy`.", + + "lesson.regexForSeo.negated.title": "უარყოჀილ სიმბოლოთა ნაკრები `[^abc]`", + "lesson.regexForSeo.negated.description": "უარყოჀილ სიმბოლოთა ნაკრებებს `[^]` ვიყენებთ იმ სიმბოლოების ა჊ნილვნისთვის, რომლებიც გვინდა, რომ უარვყოთ. ასეთი სიმბოლოები უნდა ჩავწეროთ კვადრატულ Ⴠრჩხილებს ლორის და თავსართის სახით დავურთოთ ახარისხების ნიჹანი `^`. ქვემოთ მოცემულ ტექსტლი გვაქვს როგორც `http`-ით, ისე `https`-ით დაწყებული სტრიქონები. რადგან `http` Ⴠრაგმენტი ორივეგან გვხვდება, გამოსახულება ლესაბამისობალი მოვა `https`-ით დაწყებულ სტრიქონებთანაც. ეს რომ ასე არ მოხდეს, Regex-ის ველჹი, ასო `p`-ს ჹემდეგ დაამატეთ `[^s]`, რათა მოხდეს ასო `s`-ის გამორიცხვა. ჹედეგად, გამოსახულება ლესაბამისობალი მოვა მხოლოდ `http`-ით დაწყებულ სტრიქონებთან.", + + "lesson.regexForSeo.caret.title": "ახარისხების ნიჹანი `^`", + "lesson.regexForSeo.caret.description": "ვთქვათ გვაქვს URL-ების ჩამონათვალი და გვინდა, რომ ამოვკრიბოთ მხოლოდ ისეთი URL-ები, რომლებიც იწყება `http`-ით. მაგრამ `http` Ⴠრაგმენტი URL-ის დასაწყისის გარდა, სხვა ადგილებლიც ლეიძლება გვხდებოდეს (მაგალითად, ლუალი ან ბოლოჹი). იმისათვის, რომ მხოლოდ ისეთი URL-ები ამოვკრიბოთ, რომლებიც იწყება `http`-ით, Regex-ის ველის დასაწყისლი დაამატეთ ახარისხების ნიჹანი `^`.", + + "lesson.regexForSeo.dollarAndEscape.title": "დოლარის ნიჹანი `$` და უკან გადახრილი წილადის ხაზი `\\`", + "lesson.regexForSeo.dollarAndEscape.description": "ისევ და ისევ, მოცემული გვაქვს URL-ების ჩამონათვალი. ამჯერად გვსურს, რომ ამოვკრიბოთ მხოლოდ ისეთი URL-ები, რომლებიც სრულდება `.htm`-ით.\\n\\nვინაიდან წერტილი არის სპეციალური სიმბოლო, რომელიც ლესაბამისობალი მოდის ყველანაირ სიმბოლოსთან, უპირველეს ყოვლისა, წერტილის წინ უნდა დავამატოთ უკან გადახრილი წილადის ხაზი `\\`, რათა წერტილი `.` ა჊ქმულ იქნეს, როგორც ჩვეულებრივი სიმბოლო. ეს „ხრიკი“ ვრცელდება ნებისმიერ სპეციალურ სიმბოლოზე (მაგ.: `*`, `+`, `?` და სხვ.).\\n\\nჹემდგომ ამისა, გამოსახულების ბოლოჹი უნდა დავამატოთ დოლარის ნიჹანი `$`. ამით აჩვნიჹნავთ, რომ ჩაწერილი გამოსახულება უნდა ლეესაბამებოდეს ტექსტის დასასრულს (ესე იგი, ტექსტი უნდა ბოლოვდებოდეს `.htm`-ით).", + + "lesson.regexForSeo.limitation.title": "სიგრძის ლეზ჊უდვა `{n}`", + "lesson.regexForSeo.limitation.description": "ლესაძლოა დაგჭირდეთ ლედეგების Ⴠილტრაცია მათჹი ჹემავალ სიმბოლოთა კონკრეტული რაოდენობის მიხედვით. მაგალითად, იმისათვის, რომ URL-ების ჩამონათვალიდან ამოკრიბოთ `35` სიმბოლოსაგან ჹემდგარი URL-ები, Regex-ის ველჹი, `.`-ის ჹემდეგ, Ⴠიგურულ Ⴠრჩხილებს `{}` ლორის ჩაწერეთ სასურველი რიცხვი (ამ ლემთხვევალი, `35`).", + + "lesson.regexForSeo.maxLimitation.title": "სიგრძის ლეზ჊უდვა (მაქსიმუმი) `{n,m}`", + "lesson.regexForSeo.maxLimitation.description": "იმისათვის, რომ URL-ების ჩამონათვალიდან ამოკრიბოთ ისეთი URL-ები, რომლებიც მაქსიმუმ `35` სიმბოლოსაგან ჹედგება, Regex-ის ველჹი, `.`-ის ჹემდეგ, Ⴠიგურულ Ⴠრჩხილებს `{}` ლორის ჩაწერეთ სასურველი რიცხვები (მინიმუმი და მაქსიმუმი, ამ ლემთხვევალი, `{1,35}`).", + + "lesson.regexForSeo.minLimitation.title": "სიგრძის ლეზ჊უდვა (მინიმუმი) `{n,}`", + "lesson.regexForSeo.minLimitation.description": "იმისათვის, რომ URL-ების ჩამონათვალიდან ამოკრიბოთ ისეთი URL-ები, რომლებიც მინიმუმ `35` სიმბოლოსაგან ჹედგება, Regex-ის ველჹი, `.`-ის ჹემდეგ, Ⴠიგურულ Ⴠრჩხილებს `{}` ლორის ჩაწერეთ სასურველი რიცხვი (მინიმუმი) ბოლოჹი მძიმით (ამ ლემთხვევალი, `{35,}`).", + + "lesson.regexForSeo.robots.title": "robots.txt (regex-ის მაგვარი სინტაქსი)", + "lesson.regexForSeo.robots.description": "ქვემოთ მოცემულია `robots.txt` Ⴠაილლი Regex-ის მაგვარი სინტაქსის გამოყენების მაგალითი. ა჊ნილნულ მაგალითჹი განსაზ჊ვრულია, რომ ბოტებმა არ უნდა მოახდინონ `pdf` გაჀართოების მქონე ბმულების ინსპექტირება.", + + "lesson.regexForSeo.htaccess.title": ".htaccess", + "lesson.regexForSeo.htaccess.description": "ქვემოთ მოცემულია Regex-ის გამოყენების მაგალითი `.htaccess` Ⴠაილლი. ა჊ნილნულ მაგალითჹი განსაზ჊ვრულია, რომ `php` გაჀართოების მქონე ყოველი ბმული უნდა გადამისამართდეს იმავე, ოჩონდ `html` გაჀართოების მქონე ბმულზე კონკრეტული სტატუსის კოდით (`301`).", + + "lesson.regexForSeo.outro.title": "ლეჯამება", + "lesson.regexForSeo.outro.description": "Regex-ის ცოდნა არის უნარი, რომელიც ზრდის პროდუქტიულობას ნებისმიერ პლატჀორმაზე მულაობისას, სადაც კი ლესაძლებელია მისი გამოყენება. როგორც კი დაიწყებთ მის გამოყენებას და განივითარებთ ა჊ნილნულ უნარს, გაგიმარტივდებათ მრავალი რუტინული დავალების სწრაჀად და ეჀექტურად ლესრულება, რაც დაგიზოგავთ დროს და ენერგიას. იმისათვის, რომ უკეთ გაიაზროთ Regex-ის Ⴠუნდამენტური საკითხები, ეწვიეთ `Regex 101` სახელმძ჊ვანელოს. ასევე ლეგიძლიათ გამოიყენოთ `სავარჯილო სივრცე` თქვენ მიერ ლემულავებული გამოსახულებების ტესტირებისათვის." +}