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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions src/js/intl/strings.js

Large diffs are not rendered by default.

18 changes: 12 additions & 6 deletions src/js/react_views/IntlHelperBarView.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,18 @@ class IntlHelperBarView extends React.Component{
this.fireCommand('locale ta_IN; levels');
}.bind(this)
}, {
text: "Italiano",
testID: "italian",
onClick: function () {
this.fireCommand("locale it_IT; levels");
}.bind(this),
},{
text: "Italiano",
testID: "italian",
onClick: function () {
this.fireCommand("locale it_IT; levels");
}.bind(this),
}, {
text: 'فارسی',
testID: 'persian',
onClick: function () {
this.fireCommand('locale fa; levels');
}.bind(this)
}, {
icon: 'fa-solid fa-right-from-bracket',
onClick: function() {
this.props.onExit();
Expand Down
1 change: 1 addition & 0 deletions src/js/stores/LocaleStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ var langLocaleMap = {
it: 'it_IT',
ta: 'ta_IN',
tr: 'tr_TR',
fa: 'fa',
};

var headerLocaleMap = {
Expand Down
88 changes: 88 additions & 0 deletions src/levels/advanced/multipleParents.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ exports.level = {
"startTree": "{\"branches\":{\"main\":{\"target\":\"C7\",\"id\":\"main\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C4\",\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"main\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Multiple parents",
"fa": "چندین والد",
"zh_CN": "两个 parent 节点",
"fr_FR": "Parents multiples",
"de_DE": "Mehrere Vorgänger",
Expand All @@ -27,6 +28,7 @@ exports.level = {
},
"hint": {
"en_US": "Use `git branch bugWork` with a target commit to create the missing reference.",
"fa": "از `git branch bugWork` با یک کامیت هدف استفاده کنید تا مرجع گم شده ایجاد شود.",
"de_DE": "Nutze `git branch bugWork` mit einem Ziel-Commit um die fehlende Referenz zu erstellen.",
"ja": "`git branch bugWork`を対象のコミットと組み合わせて使い、欠如しているリファレンスを作成しましょう",
"fr_FR": "Utilisez \"git branch bugWork\" avec un commit pour créer une référence manquante",
Expand Down Expand Up @@ -136,6 +138,92 @@ exports.level = {
}
]
},
"fa": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### مشخص کردن والدین",
"",
"مانند اصلاح‌گر `~`، اصلاح‌گر `^` نیز یک عدد اختیاری را بعد از خود می‌پذیرد.",
"",
"به جای مشخص کردن تعداد نسل‌هایی که باید به عقب برگردد (کاری که `~` انجام می‌دهد)، اصلاح‌گر روی `^` مشخص می‌کند که کدام مرجع والد را از یک کامیت ادغام دنبال کند. به یاد داشته باشید که کامیت‌های ادغام دارای چندین والد هستند، بنابراین مسیر انتخاب مبهم است.",
"",
"گیت معمولاً والد \"اول\" را از یک کامیت ادغام به سمت بالا دنبال می‌کند، اما مشخص کردن یک عدد با `^` این رفتار پیش‌فرض را تغییر می‌دهد.",
"",
"صحبت کافی است، بیایید آن را در عمل ببینیم."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"در اینجا ما یک کامیت ادغام داریم. اگر `main^` را بدون اصلاح‌گر checkout کنیم، اولین والد پس از کامیت ادغام را دنبال خواهیم کرد.",
"",
"(*در تصاویر ما، اولین والد مستقیماً بالای کامیت ادغام قرار دارد.*)"
],
"afterMarkdowns": [
"آسان است -- این همان چیزی است که همه ما به آن عادت داریم."
],
"command": "git checkout main^",
"beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"حالا بیایید سعی کنیم در عوض دومین والد را مشخص کنیم..."
],
"afterMarkdowns": [
"دیدید؟ ما والد دیگر را به سمت بالا دنبال کردیم."
],
"command": "git checkout main^2",
"beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"اصلاح‌گرهای `^` و `~` می‌توانند حرکت در اطراف یک درخت کامیت را بسیار قدرتمند کنند:"
],
"afterMarkdowns": [
"با سرعت رعد و برق!"
],
"command": "git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2",
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout main; git merge C5; git commit"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"حتی دیوانه‌وارتر، این اصلاح‌گرها می‌توانند به هم متصل شوند! این را بررسی کنید:"
],
"afterMarkdowns": [
"همان حرکت قبلی، اما همه در یک دستور."
],
"command": "git checkout HEAD~^2~2",
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout main; git merge C5; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### به کار بستن",
"",
"برای تکمیل این مرحله، یک شاخه جدید در مقصد مشخص شده ایجاد کنید.",
"",
"بدیهی است که مشخص کردن مستقیم کامیت (با چیزی مانند `C6`) آسان خواهد بود، اما من شما را به چالش می‌کشم تا به جای آن از اصلاح‌گرهایی که در مورد آنها صحبت کردیم استفاده کنید!"
]
}
}
]
},
"de_DE": {
"childViews": [
{
Expand Down
14 changes: 14 additions & 0 deletions src/levels/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ var sequenceInfo = exports.sequenceInfo = {
intro: {
displayName: {
'en_US': 'Introduction Sequence',
'fa': 'سری مقدماتی',
'de_DE': 'Einführung',
'ja' : 'まずはここから',
'fr_FR': 'Séquence d\'introduction',
Expand All @@ -79,6 +80,7 @@ var sequenceInfo = exports.sequenceInfo = {
},
about: {
'en_US': 'A nicely paced introduction to the majority of git commands',
'fa': 'مقدمه‌ای با سرعت مناسب بر اکثر دستورات git',
'de_DE': 'Eine gut abgestimmte Einführung in die wichtigsten Git-Befehle',
'ja' : 'gitの基本的なコマンド群をほどよいペースで学ぶ',
'fr_FR': 'Une introduction en douceur à la majorité des commandes Git',
Expand All @@ -104,6 +106,7 @@ var sequenceInfo = exports.sequenceInfo = {
rampup: {
displayName: {
'en_US': 'Ramping Up',
'fa': 'افزایش مهارت',
'de_DE': 'Eine Stufe höher',
'ja' : '次のレベルに進もう',
'fr_FR': 'Montée en puissance',
Expand All @@ -127,6 +130,7 @@ var sequenceInfo = exports.sequenceInfo = {
},
about: {
'en_US': 'The next serving of 100% git awesomes-ness. Hope you\'re hungry',
'fa': 'وعده بعدی از جذابیت‌های ۱۰۰٪ گیت. امیدوارم گرسنه باشید',
'de_DE': 'Eine Portion Git-Wahnsinn zum Thema Navigation',
'ja' : '更にgitの素晴らしさを堪能しよう',
'fr_FR': 'Le prochain excellent plat de pur Git. J\'espère que vous êtes affamés',
Expand All @@ -153,6 +157,7 @@ var sequenceInfo = exports.sequenceInfo = {
tab: 'remote',
displayName: {
'en_US': 'Push & Pull -- Git Remotes!',
'fa': 'Push و Pull -- ریموت‌های Git!',
'de_DE': 'Push & Pull -- Remote Repositories',
'ja' : 'Push及びPullコマンド -- Gitリモート',
'fr_FR': 'Push & Pull -- Dépôts Git distants !',
Expand All @@ -176,6 +181,7 @@ var sequenceInfo = exports.sequenceInfo = {
},
about: {
'en_US': 'Time to share your 1\'s and 0\'s kids; coding just got social',
'fa': 'وقت به اشتراک گذاشتن ۰ و ۱ هاست بچه‌ها؛ کدنویسی اجتماعی می‌شود',
'fr_FR': 'Il est le temps de partager vos 1 et vos 0 les enfants, le code vient de devenir social.',
'ja' : '自分のコードをより広く公開しましょう',
'de_DE': 'Zeit eure 1en und 0en zu teilen; Coding mit sozialer Komponente',
Expand Down Expand Up @@ -203,6 +209,7 @@ var sequenceInfo = exports.sequenceInfo = {
tab: 'remote',
displayName: {
'en_US': 'To Origin And Beyond -- Advanced Git Remotes!',
'fa': 'به سوی Origin و فراتر از آن -- ریموت‌های پیشرفته Git!',
'de_DE': 'Bis zum Origin und noch viel weiter -- Fortgeschrittene Remote Repositories',
'ja' : '"origin"とその先へ -- Gitリモート上級編',
'fr_FR': 'Vers l\'infini et au-delà -- dépôts distants version avancée',
Expand All @@ -226,6 +233,7 @@ var sequenceInfo = exports.sequenceInfo = {
},
about: {
'en_US': 'And you thought being a benevolent dictator would be fun...',
'fa': 'و فکر می‌کردید که یک دیکتاتور خیرخواه بودن تفریح دارد...',
'fr_FR': 'Et vous pensiez qu\'être un dictateur bienfaisant serait amusant...',
'ja' : '絶えず上級者の仕事は存在する。。。',
'es_AR': 'Y pensabas que ser un dictador benévolo sería divertido...',
Expand All @@ -252,6 +260,7 @@ var sequenceInfo = exports.sequenceInfo = {
move: {
displayName: {
'en_US': 'Moving Work Around',
'fa': 'جابجایی کارها',
'de_DE': 'Code umherschieben',
'fr_FR': 'Déplacer le travail',
'es_AR': 'Moviendo el trabajo por ahí',
Expand All @@ -275,6 +284,7 @@ var sequenceInfo = exports.sequenceInfo = {
},
about: {
'en_US': '"Git" comfortable with modifying the source tree :P',
'fa': 'با تغییر درخت منبع راحت باشید :P',
'de_DE': 'Gewöhn dich daran, den Git-Baum zu verändern',
'fr_FR': 'Soyez à l\'aise pour modifier l\'arbre Git',
'es_AR': 'Preparate para modificar el directorio fuente :P',
Expand All @@ -300,6 +310,7 @@ var sequenceInfo = exports.sequenceInfo = {
mixed: {
displayName: {
'en_US': 'A Mixed Bag',
'fa': 'مجموعه‌ای درهم',
'de_DE': 'Eine bunte Mischung',
'ja' : '様々なtips',
'fr_FR': 'Un assortiment',
Expand All @@ -323,6 +334,7 @@ var sequenceInfo = exports.sequenceInfo = {
},
about: {
'en_US': 'A mixed bag of Git techniques, tricks, and tips',
'fa': 'مجموعه‌ای درهم از تکنیک‌ها، ترفندها و نکات Git',
'de_DE': 'Eine bunte Mischung an Techniken, Tipps und Tricks',
'ja' : 'gitを使う上での様々なtipsやテクニックなど',
'fr_FR': 'Un assortiment de techniques et astuces pour utiliser Git',
Expand All @@ -348,6 +360,7 @@ var sequenceInfo = exports.sequenceInfo = {
advanced: {
displayName: {
'en_US': 'Advanced Topics',
'fa': 'مباحث پیشرفته',
'de_DE': 'Themen für Fortgeschrittene',
'ja' : '上級トピック',
'fr_FR': 'Sujets avancés',
Expand All @@ -371,6 +384,7 @@ var sequenceInfo = exports.sequenceInfo = {
},
about: {
'en_US': 'For the truly brave!',
'fa': 'برای شجاعان واقعی!',
'de_DE': 'Nur für die Tapferen',
'ja' : '勇気ある人のみ!',
'fr_FR': 'Pour les plus courageux !',
Expand Down
96 changes: 96 additions & 0 deletions src/levels/intro/branching.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ exports.level = {
"solutionCommand": "git branch bugFix;git checkout bugFix",
"name": {
"en_US": "Branching in Git",
"fa": "ایجاد شاخه (Branch) در Git",
"de_DE": "Branches in Git",
"ja": "Gitのブランチ",
"ko": "Git에서 브랜치 쓰기",
Expand All @@ -26,6 +27,7 @@ exports.level = {
},
"hint": {
"en_US": "Make a new branch with \"git branch <branch-name>\" and check it out with \"git checkout <branch-name>\"",
"fa": "با دستور \"git branch <branch-name>\" یک شاخه جدید بسازید و با \"git checkout <branch-name>\" وارد آن شوید",
"de_DE": "Lege mit \"git branch [Branch-Name]\" einen neuen Branch an und checke ihn mit \"git checkout [Branch-Name]\" aus",
"ja": "ブランチの作成(\"git branch [ブランチ名]\")と、チェックアウト(\"git checkout [ブランチ名]\")",
"es_AR": "Hacé una nueva rama con \"git branch [nombre]\" y cambiá a ella con \"git checkout [nombre]\"",
Expand Down Expand Up @@ -145,6 +147,100 @@ exports.level = {
}
]
},
"fa": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## شاخه‌های Git",
"",
"شاخه‌ها در Git نیز به‌طور باورنکردنی سبک هستند. آن‌ها صرفاً اشاره‌گرهایی به یک کامیت خاص هستند -- نه چیز دیگر. به همین دلیل است که بسیاری از علاقه‌مندان به Git این شعار را تکرار می‌کنند:",
"",
"```",
"زود شاخه بساز، و زیاد شاخه بساز",
"```",
"",
"از آنجا که ساخت شاخه‌های زیاد سربار ذخیره‌سازی / حافظه ندارد، تقسیم منطقی کارتان آسان‌تر از داشتن شاخه‌های بزرگ و سنگین است.",
"",
"وقتی شروع به ترکیب شاخه‌ها و کامیت‌ها کنیم، خواهیم دید که این دو ویژگی چگونه ترکیب می‌شوند. اما فعلاً فقط به یاد داشته باشید که یک شاخه اساساً می‌گوید \"من می‌خواهم کار این کامیت و تمام کامیت‌های والد آن را شامل شوم.\""
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"بیایید ببینیم شاخه‌ها در عمل چگونه به نظر می‌رسند.",
"",
"در اینجا ما یک شاخه جدید به نام `newImage` خواهیم ساخت."
],
"afterMarkdowns": [
"همین! تمام چیزی که برای شاخه‌سازی لازم بود همین بود! شاخه `newImage` اکنون به کامیت `C1` اشاره می‌کند."
],
"command": "git branch newImage",
"beforeCommand": ""
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"بیایید سعی کنیم مقداری کار روی این شاخه جدید انجام دهیم. دکمه زیر را فشار دهید."
],
"afterMarkdowns": [
"ای وای! شاخه `main` حرکت کرد اما شاخه `newImage` نکرد! این به این دلیل است که ما \"روی\" شاخه جدید نبودیم، و به همین دلیل ستاره (*) روی `main` بود."
],
"command": "git commit",
"beforeCommand": "git branch newImage"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"بیایید به git بگوییم که می‌خواهیم با دستور زیر وارد شاخه شویم",
"",
"```",
"git checkout <name>",
"```",
"",
"این کار ما را قبل از کامیت تغییراتمان، روی شاخه جدید قرار می‌دهد."
],
"afterMarkdowns": [
"بفرما! تغییرات ما روی شاخه جدید ثبت شد."
],
"command": "git checkout newImage; git commit",
"beforeCommand": "git branch newImage"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"*نکته: در نسخه 2.23 گیت، دستور جدیدی به نام `git switch` معرفی شد تا در نهایت جایگزین `git checkout` شود، ",
"که تا حدی بیش از حد بارگذاری شده است (بسته به آرگومان‌ها کارهای مختلفی انجام می‌دهد). درس‌های اینجا همچنان از ",
"`checkout` به جای `switch` استفاده می‌کنند زیرا دستور `switch` هنوز آزمایشی در نظر گرفته می‌شود و سینتکس آن ممکن است در آینده تغییر کند. ",
"با این حال شما همچنان می‌توانید دستور جدید `switch` را در این برنامه امتحان کنید، و همچنین ",
"<a href=\"https://git-scm.com/docs/git-switch\" target=\"_blank\">اینجا بیشتر بدانید</a>.* "
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"بسیار خب! شما کاملاً آماده شاخه‌سازی هستید. وقتی این پنجره بسته شد،",
"یک شاخه جدید به نام `bugFix` بسازید و به آن شاخه بروید.",
"",
"راستی، این یک میانبر است: اگر می‌خواهید یک ",
"شاخه جدید بسازید و همزمان وارد آن شوید، می‌توانید به سادگی ",
"`git checkout -b [yourbranchname]` را تایپ کنید."
]
}
}
]
},
"de_DE": {
"childViews": [
{
Expand Down
Loading
Loading