diff --git a/src/js/intl/strings.js b/src/js/intl/strings.js index d319f4ac1..e2057e58e 100755 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -94,7 +94,7 @@ exports.strings = { 'pl': 'Sprawdź, czy dasz radę to zrobić w {best} krokach :D', 'it_IT': "Prova a migliorarti facendolo solo con {best} comandi :D", 'ta_IN': 'நீங்கள் அதை குறைக்க முடியுமா என்று பாருங்கள் {best} :D', - 'tr_TR': 'Bakalım bunu {en iyi} adıma indirebilir misin? :D' + 'tr_TR': 'Bakalım bunu {en iyi} adıma indirgeyebilir misin? :D' }, /////////////////////////////////////////////////////////////////////////// 'hg-prune-tree': { @@ -165,7 +165,7 @@ exports.strings = { 'it_IT': "Non esiste il comando status in quest'app, visto che non esiste lo staging dei file. Prova invece `hg summary`", 'ta_IN': 'கோப்புகள் எதுவும் அடுத்த படிநிலையில் இல்லை என்பதால், இந்த பயன்பாட்டிற்கான மதிப்பீடும் கட்டளை எதுவும் இல்லை. அதற்கு பதிலாக `hg summary` முயற்சிக்கவும்', - 'tr_TR': 'Bu uygulama için bir status komutu yok, çünkü dosyalar stage edilemiyor. Bunun yerine hg summit komutunu deneyin.' + 'tr_TR': 'Bu uygulama için bir status komutu yok çünkü dosyalar stage edilemiyor. Bunun yerine hg summit komutunu deneyin.' }, /////////////////////////////////////////////////////////////////////////// 'hg-error-need-option': { @@ -234,7 +234,7 @@ exports.strings = { 'pl': 'Odłączono HEAD!', 'it_IT': "Testa distaccata (Detached head)!", 'ta_IN': 'பிரிக்கப்பட்ட தலை!', - 'tr_TR': 'Detached head!' + 'tr_TR': 'Detached head!(Bağımsız başlık!)' }, /////////////////////////////////////////////////////////////////////////// 'git-status-onbranch': { @@ -303,7 +303,8 @@ exports.strings = { 'sl_SI': 'Hiter commit.', 'pl': 'Szybki commit.', 'it_IT': "Laura I love you, but our dogs too (Barone & Duchessa)!", - 'ta_IN': 'Quick commit. Go Bears!' + 'ta_IN': 'Quick commit. Go Bears!', + "tr_TR": "Hızlı commit. Go Bears!" }, 'git-error-origin-fetch-uptodate': { '__desc__': 'One of the error messages for git', @@ -368,9 +369,9 @@ exports.strings = { 'vi': 'Kho chứa từ xa có sự khác biệt với kho chứa cục bộ của bạn, nên không thể tự động (fast forward) cập nhật thay đổi của bạn (và vì thế hoạt động push của bạn bị từ chối). Vui lòng kéo về thay đổi từ kho chứa từ xa, kết nạp vào nhánh hiện tại, và thử lại lần nữa. Bạn có thể dùng lệnh `git pull` hoặc `git pull --rebase`', 'sl_SI': 'Oddaljen repozitorij se je ločil od tvojega lokalnega repozitorija, zato nalaganje sprememb ni možno z `fast forward` opcijo (zato je bil `push` zavrnjen). Prosim pull-aj dol nove spremembe iz oddaljenega repozitorija, jih vključi v svoj branch, nato pa poizkusi ponovno. To lahko narediš z `git pull` ali `git pull --rebase`', 'pl' : 'Zdalne repozytorium różni się od lokalnego repozytorium, dlatego twoich zmian nie można przesłać za pomocą prostego szybkiego `fast forward` (i dlatego polecenie `push` zostało odrzucone). Najpierw zrób `pull` aby pobrać nowe zmiany do lokalnego repozytorium, zintegruj je z branch-em i spróbuj ponownie. Możesz to zrobić za pomocą `git pull` lub `git pull --rebase`', - 'it_it': - "Il repository remoto è diverso dal tuo repository locale, quindi il caricamento non è un semplice fast forward (e per questo il tuo push è fallito). Per favore esegui pull per scaricare i nuovi cambiamenti dal repository remoto, incorporarli in questo ramo, e provare ancora. Puoi effettuarlo tramite i comandi git pull o git pull --rebase", - 'ta_IN': 'தொலைநிலை களஞ்சியம் உங்கள் களஞ்சியத்திலிருந்து வேறுபட்டுள்ளது, எனவே உங்கள் மாற்றங்களை எளிமையான `fast forward` முறையில் பதிவேற்ற இயலாது (இதனால் உங்கள் `push` நிராகரிக்கப்பட்டது). தொலை களஞ்சியத்தில் புதிய மாற்றங்களை `pull` செய்து, அவற்றை இந்த கிளையில் இணைத்து, மீண்டும் முயற்சிக்கவும். நீங்கள் அவ்வாறு `git pull` அல்லது `git pull --rebase` கட்டளை கொண்டு செய்யலாம்' + 'it_it': 'Il repository remoto è diverso dal tuo repository locale, quindi il caricamento non è un semplice fast forward (e per questo il tuo push è fallito). Per favore esegui pull per scaricare i nuovi cambiamenti dal repository remoto, incorporarli in questo ramo, e provare ancora. Puoi effettuarlo tramite i comandi git pull o git pull --rebase', + 'ta_IN': 'தொலைநிலை களஞ்சியம் உங்கள் களஞ்சியத்திலிருந்து வேறுபட்டுள்ளது, எனவே உங்கள் மாற்றங்களை எளிமையான `fast forward` முறையில் பதிவேற்ற இயலாது (இதனால் உங்கள் `push` நிராகரிக்கப்பட்டது). தொலை களஞ்சியத்தில் புதிய மாற்றங்களை `pull` செய்து, அவற்றை இந்த கிளையில் இணைத்து, மீண்டும் முயற்சிக்கவும். நீங்கள் அவ்வாறு `git pull` அல்லது `git pull --rebase` கட்டளை கொண்டு செய்யலாம்', + 'tr_TR': 'Uzak depo, yerel deponuzdan sapmış durumda, bu yüzden değişikliklerinizi basit bir fast forward ile yüklemek mümkün değil (bu nedenle push işleminiz reddedildi). Lütfen uzak depodaki yeni değişiklikleri çekin, bunları bu dalda birleştirin ve tekrar deneyin. Bunu git pull veya git pull --rebase komutlarıyla yapabilirsiniz.' }, 'git-error-remote-branch': { '__desc__': 'One of the error messages for git', @@ -391,7 +392,8 @@ exports.strings = { 'sl_SI': 'Tega ukaza ne moreš narediti na oddaljenem branchu', 'pl' : 'Nie możesz wykonać tego polecenia w zdalnej gałęzi', 'it_it': "Non puoi eseguire questo comando su un ramo remoto", - 'ta_IN': 'அந்த கட்டளையை நீங்கள் தொலைநிலை கிளையில் இயக்க முடியாது' + 'ta_IN': 'அந்த கட்டளையை நீங்கள் தொலைநிலை கிளையில் இயக்க முடியாது', + 'tr_TR': 'Bu komutu uzak bir dalda çalıştırmak mümkün değil', }, 'git-error-origin-required': { '__desc__': 'One of the error messages for git', @@ -412,7 +414,8 @@ exports.strings = { 'sl_SI': 'Origin je potreben za izvedbo tega ukaza', 'pl' : 'Dla tego polecenia wymagane jest źródło (origin)', 'it_IT': "E' necessario definire origin per questo comando", - 'ta_IN': 'அந்த கட்டளைக்கு ஒரு துவக்க மூலம் தேவை' + 'ta_IN': 'அந்த கட்டளைக்கு ஒரு துவக்க மூலம் தேவை', + 'tr_TR': 'Bu komut için bir origin gereklidir', }, 'git-error-origin-exists': { '__desc__': 'One of the error messages for git', @@ -433,7 +436,8 @@ exports.strings = { 'sl_SI': 'Origin že obstaja. Ne moreš narediti novega.', 'pl' : 'Origin już istnieje! Nie możesz go ponownie założyć', 'it_IT': "Origin già esistente! Non puoi crearne uno nuovo", - 'ta_IN': 'துவக்க மூலம் ஒன்று ஏற்கனவே உள்ளது! நீங்கள் மீன்டும் ஒன்றை உருவாக்க முடியாது' + 'ta_IN': 'துவக்க மூலம் ஒன்று ஏற்கனவே உள்ளது! நீங்கள் மீன்டும் ஒன்றை உருவாக்க முடியாது', + 'tr_TR': 'Bir origin zaten mevcut! Yeni bir tane oluşturamazsınız', }, /////////////////////////////////////////////////////////////////////////// 'git-error-branch': { @@ -458,7 +462,8 @@ exports.strings = { 'it_IT': "Non puoi eliminare il ramo main, il ramo in cui sei, o cose che " + "non sono rami", - 'ta_IN': 'பிரதான கிளை, தற்ப்போது நடப்பில் உள்ள கிளை மற்றும் கிளை அல்லாத வற்றை அழிக்க இயலாது' + 'ta_IN': 'பிரதான கிளை, தற்ப்போது நடப்பில் உள்ள கிளை மற்றும் கிளை அல்லாத வற்றை அழிக்க இயலாது', + 'tr_TR': 'Şu anda üzerinde çalıştığın branch olan main i veya branch olmayan Refs leri silemezsin', }, /////////////////////////////////////////////////////////////////////////// 'git-merge-msg': { @@ -480,7 +485,8 @@ exports.strings = { 'sl_SI': 'Mergaj {target} v {current}', 'pl' : 'Łączenie {target} z {current}', 'it_IT': "Fuso {target} in {current}", - 'ta_IN': '{target}ஐ {current} கிளையுடன் இணை' + 'ta_IN': '{target}ஐ {current} கிளையுடன் இணை', + 'tr_TR': '{target}i {current}e birleştir', }, /////////////////////////////////////////////////////////////////////////// 'git-error-rebase-none': { @@ -503,7 +509,8 @@ exports.strings = { 'pl' : 'Nie znaleziono commit-u do zmiany! Wszystkie commit-y oraz scalenia lub zmiany już są zastosowane', 'it_IT': "Non ci sono commit da ribasare! Sono tutti commit di merge o i cambiamenti sono già stati applicati", - 'ta_IN': '`rebase` செய்ய எந்த கமிட்டும் இல்லை, அனைத்தும் இணைப்பு கமிட்கள் அல்லது முன்பே இணைக்கப்பட்டவை' + 'ta_IN': '`rebase` செய்ய எந்த கமிட்டும் இல்லை, அனைத்தும் இணைப்பு கமிட்கள் அல்லது முன்பே இணைக்கப்பட்டவை', + 'tr_TR': 'Rebase edilecek commit yok! Her şey birleştirme commit i ya da zaten uygulanmış değişiklikler', }, /////////////////////////////////////////////////////////////////////////// 'git-result-nothing': { @@ -525,7 +532,8 @@ exports.strings = { 'sl_SI': 'Ničesar za narediti ...', 'pl' : 'Nie ma nic do zrobienia...', 'it_IT': "Niente da fare...", - 'ta_IN': 'செய்வதற்க்கு ஒன்றும் இல்லை...' + 'ta_IN': 'செய்வதற்க்கு ஒன்றும் இல்லை...', + 'tr_TR': 'Yapılacak bir şey yok...', }, /////////////////////////////////////////////////////////////////////////// 'git-result-fastforward': { @@ -547,7 +555,8 @@ exports.strings = { 'sl_SI': 'Fast forwardiranje', 'pl' : 'Fast forward...', 'it_it': "Fast forwarding...", - 'ta_IN': 'Fast forward...' + 'ta_IN': 'Fast forward...', + 'tr_TR': 'Hızlı ileri alınıyor...', }, /////////////////////////////////////////////////////////////////////////// 'git-result-uptodate': { @@ -569,7 +578,8 @@ exports.strings = { 'sl_SI': 'Branch je že posodobljen', 'pl' : 'Branch jest już aktualny', 'it_IT': "Il ramo è già aggiornato", - 'ta_IN': 'இந்த கிளை ஏற்கனவே புதுப்பித்த நிலையில் உள்ளது...' + 'ta_IN': 'இந்த கிளை ஏற்கனவே புதுப்பித்த நிலையில் உள்ளது...', + 'tr_TR': 'Dal zaten güncel', }, /////////////////////////////////////////////////////////////////////////// 'git-error-exist': { @@ -591,7 +601,8 @@ exports.strings = { 'sl_SI': 'Ref {ref} new obstaja ali je neznan', 'pl' : 'Odnośnik {ref} nie istnieje lub jest nieznany', 'it_IT': "Il riferimento (ref) {ref} non esiste o è sconosciuto", - 'ta_IN': '{ref} இல்லை அல்லது தெரியவில்லை' + 'ta_IN': '{ref} இல்லை அல்லது தெரியவில்லை', + 'tr_TR': '{ref} referansı mevcut değil veya bilinmiyo', }, /////////////////////////////////////////////////////////////////////////// 'git-error-relative-ref': { @@ -613,7 +624,8 @@ exports.strings = { 'sl_SI': 'Commit {commit} nima {match}', 'pl' : 'Commit {commit} nie ma {match}', 'it_IT': "Il commit {commit} non ha un {match}", - 'ta_IN': '{commit}க்கு {match} எதுவும் இல்லை' + 'ta_IN': '{commit}க்கு {match} எதுவும் இல்லை', + 'tr_TR': '{commit} commit inin {match} bulunmamaktadı', }, /////////////////////////////////////////////////////////////////////////// 'git-warning-detached': { @@ -635,7 +647,8 @@ exports.strings = { 'sl_SI': 'Opozorilo! Detached HEAD stanje', 'pl' : 'Ostrzeżenie!! Odłączony tryb HEAD', 'it_IT': "Attenzione!! Situazione di testa distaccata (Detached HEAD)", - 'ta_IN': 'எச்சரிக்கை !! `HEAD` துன்டிக்கப்பட்ட நிலையில் உள்ளது' + 'ta_IN': 'எச்சரிக்கை !! `HEAD` துன்டிக்கப்பட்ட நிலையில் உள்ளது', + 'tr_TR': 'Uyarı!! Bağımsız HEAD durumu', }, /////////////////////////////////////////////////////////////////////////// 'git-warning-add': { @@ -657,7 +670,8 @@ exports.strings = { 'sl_SI': 'Ni potrebe po dodajanju datotetk v tem demotu', 'pl' : 'Nie ma potrzeby dodawania plików w tym demo', 'it_IT': "Non c'è bisogno di aggiungere file in questa demo", - 'ta_IN': 'இந்த நடைமுறையில் கோப்புகளை சேர்க்க தேவையில்லை' + 'ta_IN': 'இந்த நடைமுறையில் கோப்புகளை சேர்க்க தேவையில்லை', + 'tr_TR': 'Bu demoda dosya eklemeye gerek yok', }, /////////////////////////////////////////////////////////////////////////// 'git-error-options': { @@ -679,7 +693,8 @@ exports.strings = { 'sl_SI': 'Opcije, ki si jih podal, so nezdružljive ali napačne', 'pl' : 'Podane przez Ciebie opcje są niezgodne lub nieprawidłowe', 'it_IT': "Le opzioni che hai specificato sono incompatibili o sbagliate", - 'ta_IN': 'நீங்கள் குறிப்பிட்ட அந்த மற்றிகள் பொருந்தாது அல்லது தவறானவை' + 'ta_IN': 'நீங்கள் குறிப்பிட்ட அந்த மற்றிகள் பொருந்தாது அல்லது தவறானவை', + 'tr_TR': 'Belirttiğiniz seçenekler uyumsuz veya yanlış', }, /////////////////////////////////////////////////////////////////////////// 'git-error-already-exists': { @@ -701,7 +716,8 @@ exports.strings = { 'sl_SI': 'Commit {commit} že obstaja v tvoji množici sprememb, prekinjam!', 'pl' : 'Commit {commit} już istnieje w Twoim zbiorze zmian, przerywam!', 'it_IT': "Il commit {commit} è già presente, annullo!", - 'ta_IN': '{commit} உங்கள் மாற்றங்களின் தொகுப்பில் ஏற்கனவே உள்ளது, கட்டளை கைவிடப்பட்டது!' + 'ta_IN': '{commit} உங்கள் மாற்றங்களின் தொகுப்பில் ஏற்கனவே உள்ளது, கட்டளை கைவிடப்பட்டது!', + 'tr_TR': 'Commit {commit} zaten değişiklik setinizde mevcut, işlem iptal ediliyor!', }, /////////////////////////////////////////////////////////////////////////// 'git-error-reset-detached': { @@ -724,7 +740,8 @@ exports.strings = { 'pl' : 'Nie można zresetować w odłączonej HEAD! Użyj opcji `checkout`, jeśli chcesz się przenieść', 'it_IT': "Non posso fare reset in modalità testa distaccata (detached head)! Utilizza checkout se vuoi spostarti", - 'ta_IN': 'பிரிக்கப்பட்ட தலையில் மீட்டமைக்க முடியாது! நீங்கள் நகர்த்த விரும்பினால் `checkout` பயன்படுத்தவும்' + 'ta_IN': 'பிரிக்கப்பட்ட தலையில் மீட்டமைக்க முடியாது! நீங்கள் நகர்த்த விரும்பினால் `checkout` பயன்படுத்தவும்', + 'tr_TR': 'Detached head durumunda sıfırlama yapılamaz! Taşımak istiyorsanız checkout kullanın', }, /////////////////////////////////////////////////////////////////////////// 'git-warning-hard': { @@ -759,7 +776,8 @@ exports.strings = { "l'opzione di default è --mixed.", 'ta_IN': 'The default behavior for resets on LearnGitBranching is a --hard, so feel free to omit ' + 'that option if you get tired of typing it out in our lessons. Just remember that the default ' + - 'behavior on actual Git is --mixed.' + 'behavior on actual Git is --mixed.', + 'tr_TR': 'LearnGitBranching deki sıfırlama işlemlerinin varsayılan davranışı --hard tır, bu yüzden derslerimizde yazarken bundan sıkılırsanız bu seçeneği atlayabilirsiniz. Ancak gerçek Git teki varsayılan davranışın --mixed olduğunu unutmayın.', }, /////////////////////////////////////////////////////////////////////////// 'git-error-staging': { @@ -784,7 +802,8 @@ exports.strings = { 'it_IT': "Non esiste il concetto di aggiungere / indicizzare i file, quindi quell'opzione o " + "comando non è valido!", - 'ta_IN': 'கோப்புகளைச் சேர்ப்பது / நிலைநிறுத்துவது என்ற கருத்து ஒன்றும் இல்லை, எனவே அந்த மற்றி அல்லது கட்டளை தவறானது' + 'ta_IN': 'கோப்புகளைச் சேர்ப்பது / நிலைநிறுத்துவது என்ற கருத்து ஒன்றும் இல்லை, எனவே அந்த மற்றி அல்லது கட்டளை தவறானது', + 'tr_TR': 'Dosya ekleme / sahneleme kavramı yok, bu nedenle bu seçenek veya komut geçersiz!', }, /////////////////////////////////////////////////////////////////////////// 'git-revert-msg': { @@ -806,7 +825,8 @@ exports.strings = { 'sl_SI': 'Revertanje {oldCommit}: {oldMsg}', 'pl' : 'Cofam {oldCommit} : {oldMsg}', 'it_IT': "Ripristino {oldCommit}: {oldMsg}", - 'ta_IN': '{oldCommit}: {oldMsg} மீன்டும் மாற்றியமைக்கிறது' + 'ta_IN': '{oldCommit}: {oldMsg} மீன்டும் மாற்றியமைக்கிறது', + 'tr_TR': '{oldCommit} geri alınıyor: {oldMsg}', }, /////////////////////////////////////////////////////////////////////////// 'git-error-args-many': { @@ -828,7 +848,8 @@ exports.strings = { 'sl_SI': 'Pričakovanih je največ {upper} argumentov za {what}', 'pl' : 'Oczekuję maksymalne {upper} parametrów dla {what}', 'it_IT': "Mi aspetto al massimo {upper} parametro/i per {what}", - 'ta_IN': 'நான் {what}க்கான உள்ளீடு(கள்) அதிகபட்சமாக {upper} எதிர்பார்க்கிறேன்' + 'ta_IN': 'நான் {what}க்கான உள்ளீடு(கள்) அதிகபட்சமாக {upper} எதிர்பார்க்கிறேன்', + 'tr_TR': '{what} için en fazla {upper} argüman bekliyorum', }, /////////////////////////////////////////////////////////////////////////// 'git-error-args-few': { @@ -850,7 +871,8 @@ exports.strings = { 'sl_SI': 'Pričakovanih je najmanj {lower} argumentov za {what}', 'pl' : 'Oczekuję co najmniej {lower} parametrów dla {what}', 'it_IT': "Mi aspetto come minimo {lower} parametro/i per {what}", - 'ta_IN': 'நான் {what}க்கான உள்ளீடு(கள்) குறைந்தபட்சம் {lower} எதிர்பார்க்கிறேன்' + 'ta_IN': 'நான் {what}க்கான உள்ளீடு(கள்) குறைந்தபட்சம் {lower} எதிர்பார்க்கிறேன்', + 'tr_TR': '{what} için en az {lower} argüman bekliyorum', }, /////////////////////////////////////////////////////////////////////////// 'git-error-no-general-args': { @@ -872,7 +894,8 @@ exports.strings = { 'sl_SI': 'Ta ukaz ne sprejme splošnih ukazov', 'pl' : 'To polecenie nie przyjmuje żadnych ogólnych parametrów', 'it_IT': "Quel comando non accetta parametri generici", - 'ta_IN': 'அந்த கட்டளை பொதுவான உள்ளீடு எதுவும் ஏற்கவில்லை' + 'ta_IN': 'அந்த கட்டளை பொதுவான உள்ளீடு எதுவும் ஏற்கவில்லை', + 'tr_TR': 'Bu komut genel argüman kabul etmez', }, /////////////////////////////////////////////////////////////////////////// 'git-error-command-not-supported': { @@ -888,7 +911,12 @@ exports.strings = { 'es_ES': 'El comando "{command}" no está soportado, ¡disculpa!', 'fr_FR': 'La commande "{command}" n\'est pas supportée, désolé !', 'ru_RU': 'Команда "{command}" не поддерживается, извините!', - 'vi': 'Xin lỗi, lệnh "{command}" không được hỗ trợ!' + 'vi': 'Xin lỗi, lệnh "{command}" không được hỗ trợ!', + 'sl_SI': 'Ukaz \"{command}\" ni podprt, oprostite!', + 'pl': 'Komenda \"{command}\" nie jest obsługiwana, przepraszamy!', + 'it_IT': 'Il comando \"{command}\" non è supportato, ci dispiace!', + 'ta_IN': '\"{command}\" என்ற கட்டளை ஆதரிக்கப்படவில்லை, வருந்துகிறோம்!', + 'tr_TR': '\"{command}\" komutu desteklenmiyor, üzgünüm!', }, /////////////////////////////////////////////////////////////////////////// 'copy-tree-string': { @@ -910,7 +938,8 @@ exports.strings = { 'sl_SI': 'Skopiraj besedilo drevesa spodaj', 'pl' : 'Skopiuj poniższy kod', 'it_IT': "Copia il codice dell'albero qua sotto", - 'ta_IN': '`tree string`ஐ கீழே நகலெடுக்கவும்' + 'ta_IN': '`tree string`ஐ கீழே நகலெடுக்கவும்', + 'tr_TR': 'Aşağıdaki ağaç dizesini kopyalayın', }, /////////////////////////////////////////////////////////////////////////// 'learn-git-branching': { @@ -933,7 +962,8 @@ exports.strings = { 'sl_SI': 'Nauči se Git Branching', 'pl': 'Naucz się Git Branching-u', 'it_IT': "Impara Git Branching", - 'ta_IN': 'கிட் கிளை அமைத்தல்' + 'ta_IN': 'கிட் கிளை அமைத்தல்', + 'tr_TR': 'Learn Git Branching(Git Dal Oluşumunu Öğren)', }, /////////////////////////////////////////////////////////////////////////// 'select-a-level': { @@ -955,7 +985,8 @@ exports.strings = { 'sl_SI': 'Izberi stopnjo', 'pl': 'Wybierz poziom', 'it_IT': "Scegli un livello", - 'ta_IN': 'ஒரு நிலையை தேர்வு செய்யுங்கள்' + 'ta_IN': 'ஒரு நிலையை தேர்வு செய்யுங்கள்', + 'tr_TR': 'Bir level (Seviye) seç', }, /////////////////////////////////////////////////////////////////////////// 'main-levels-tab': { @@ -974,7 +1005,8 @@ exports.strings = { 'sl_SI': 'Glavno', 'pl': 'Główny', 'it_IT': "Menu", - 'ta_IN': 'பிரதானம்' + 'ta_IN': 'பிரதானம்', + 'tr_TR': 'Main(Ana)', }, /////////////////////////////////////////////////////////////////////////// 'remote-levels-tab': { @@ -993,7 +1025,8 @@ exports.strings = { 'sl_SI': 'Oddaljeno', 'pl' : 'Zdalny', 'it_IT': "Remoto", - 'ta_IN': 'தொலைநிலை' + 'ta_IN': 'தொலைநிலை', + 'tr_TR': 'Uzak(Remote)', }, /////////////////////////////////////////////////////////////////////////// 'branch-name-short': { @@ -1016,7 +1049,8 @@ exports.strings = { 'pl': 'Przepraszamy, ze względu na wizualizacje musimy zachować krótkie nazwy gałęzi. Nazwa Twojej gałęzi została skrócona do 9 znaków, w wyniku czego otrzymano "{branch}"', 'it_IT': 'Scusa ma i nomi dei rami devono essere brevi per essere visualizzati. Il nome del tuo ramo è stato accorciato a 9 caratteri, rinominandolo come "{branch}"', - 'ta_IN': 'மன்னிக்கவும், காட்சிகளுக்கு கிளை பெயர்களை குறுகியதாக வைத்திருக்க வேண்டி உள்ளது. உங்கள் கிளையின் பெயர் 9 எழுத்துகளாக சுருக்கப்பட்டு, "{branch}" ஆக மற்றப்பட்டுள்ளது' + 'ta_IN': 'மன்னிக்கவும், காட்சிகளுக்கு கிளை பெயர்களை குறுகியதாக வைத்திருக்க வேண்டி உள்ளது. உங்கள் கிளையின் பெயர் 9 எழுத்துகளாக சுருக்கப்பட்டு, "{branch}" ஆக மற்றப்பட்டுள்ளது', + 'tr_TR': 'Üzgünüm, görseller için dal isimlerini kısa tutmamız gerekiyor. Dal isminiz 9 karaktere kısaltıldı, bu da \"{branch}\" oldu.' }, /////////////////////////////////////////////////////////////////////////// 'bad-branch-name': { @@ -1038,7 +1072,8 @@ exports.strings = { 'sl_SI': 'To ime brancha "{branch}" ni dovoljeno!', 'pl': 'Ta nazwa gałęzi "{branch}" jest niedozwolona!', 'it_IT': 'Il nome "{branch}" per i rami non è consentito!', - 'ta_IN': '"{branch}" ஐ கிளையின் பெயராக ஏற்க்க இயலாது!' + 'ta_IN': '"{branch}" ஐ கிளையின் பெயராக ஏற்க்க இயலாது!', + 'tr_TR': 'Bu dal ismi \"{branch}\" izin verilmez!' }, /////////////////////////////////////////////////////////////////////////// 'bad-tag-name': { @@ -1060,7 +1095,8 @@ exports.strings = { 'sl_SI': 'To ime tag-a "{tag}" ni dovoljeno!', 'pl': 'Ta nazwa tagu "{tag}" jest niedozwolona!', 'it_IT': 'Il nome "{tag}" per i tag non è consentito!', - 'ta_IN': '"{tag}" ஐ குறிச்சொல் பெயராக ஏற்க்க இயலாது!' + 'ta_IN': '"{tag}" ஐ குறிச்சொல் பெயராக ஏற்க்க இயலாது!', + 'tr_TR': 'Bu etiket ismi \"{tag}\" izin verilmez!' }, /////////////////////////////////////////////////////////////////////////// 'option-not-supported': { @@ -1082,7 +1118,8 @@ exports.strings = { 'sl_SI': 'Opcija "{option}" ni podprta! ', 'pl': 'Opcja "{option}" nie jest obsługiwana!', 'it_IT': 'L\'opzione "{option}" non è supportata!', - 'ta_IN': '"{option}" மாற்று செயல் ஆதரிக்கப்படவில்லை!' + 'ta_IN': '"{option}" மாற்று செயல் ஆதரிக்கப்படவில்லை!', + 'tr_TR': '\"{option}\" seçeneği desteklenmiyor!', }, /////////////////////////////////////////////////////////////////////////// 'git-usage-command': { @@ -1104,7 +1141,8 @@ exports.strings = { 'sl_SI': 'git []', 'pl': 'git []', 'it_IT': "git []", - 'ta_IN': 'git []' + 'ta_IN': 'git []', + 'tr_TR': 'git []', }, /////////////////////////////////////////////////////////////////////////// 'git-supported-commands': { @@ -1126,7 +1164,8 @@ exports.strings = { 'sl_SI': 'Podprti ukazi:', 'pl': 'Obsługiwane polecenia:', 'it_IT': "Comandi supportati:", - 'ta_IN': 'செயலாக்கம் உள்ள கட்டளைகள்;' + 'ta_IN': 'செயலாக்கம் உள்ள கட்டளைகள்;', + 'tr_TR': 'Desteklenen komutlar:', }, /////////////////////////////////////////////////////////////////////////// 'git-usage': { @@ -1148,7 +1187,8 @@ exports.strings = { 'sl_SI': 'Uporaba:', 'pl': 'Użyj', 'it_IT': "Utilizzo:", - 'ta_IN': 'பயன்பாடு' + 'ta_IN': 'பயன்பாடு', + 'tr_TR': 'Kullanım:', }, /////////////////////////////////////////////////////////////////////////// 'git-version': { @@ -1170,7 +1210,8 @@ exports.strings = { 'sl_SI': 'Git Verzija PCOTTLE.1.0', 'pl' : 'Wersja GIT-a OLSZA-YSC-1.0', 'it_IT': "Git Version SHARDANA_SOFT.1.0.0", - 'ta_IN': 'Git Version PCOTTLE.1.0' + 'ta_IN': 'Git Version PCOTTLE.1.0', + 'tr_TR': 'Git versiyonu PCOTTLE.1.0', }, /////////////////////////////////////////////////////////////////////////// 'flip-tree-command': { @@ -1192,7 +1233,8 @@ exports.strings = { 'sl_SI': 'Obračanje drevesa ...', 'pl' : 'Odwracanie drzewa...', 'it_IT': "Girando l'albero...", - 'ta_IN': 'Flipping tree...' + 'ta_IN': 'Flipping tree...', + 'tr_TR': 'Ağaç ters çevriliyor...' }, /////////////////////////////////////////////////////////////////////////// 'refresh-tree-command': { @@ -1214,7 +1256,8 @@ exports.strings = { 'sl_SI': 'Osveževanje drevesa ...', 'pl' : 'Odświeżanie drzewa...', 'it_IT': "Aggiornando l'albero...", - 'ta_IN': 'Refreshing tree...' + 'ta_IN': 'Refreshing tree...', + 'tr_TR': 'Ağaç yenileniyor...', }, /////////////////////////////////////////////////////////////////////////// 'locale-command': { @@ -1236,7 +1279,8 @@ exports.strings = { 'sl_SI': 'Locale nastavljen na {locale}', 'pl' : 'Ustawiono język na {locale}', 'it_IT': "Locale impostato a {locale}", - 'ta_IN': 'பிரதேசம் {locale}ஆக மற்ற பட்டுள்ளது' + 'ta_IN': 'பிரதேசம் {locale}ஆக மற்ற பட்டுள்ளது', + 'etr_TR': '{locale} olarak dil ayarlandı', }, /////////////////////////////////////////////////////////////////////////// 'locale-reset-command': { @@ -1258,7 +1302,8 @@ exports.strings = { 'sl_SI': 'Locale ponastavljen na {locale}', 'pl' : 'Przywrócono język do wartości domyślnych, czyli {locale}', 'it_IT': "Locale resettato al valore di default, che è {locale}", - 'ta_IN': 'பிரதேசம் இயல்புநிலை {locale}க்கி மீட்டமைக்கப்பட்டுள்ளது' + 'ta_IN': 'பிரதேசம் இயல்புநிலை {locale}க்கி மீட்டமைக்கப்பட்டுள்ளது', + 'tr_TR': 'Dil varsayılan olarak sıfırlandı, bu {locale}', }, /////////////////////////////////////////////////////////////////////////// 'show-command': { @@ -1280,7 +1325,8 @@ exports.strings = { 'sl_SI': 'Prosim uporabi enega od naslednjih ukazov', 'pl' : 'Aby uzyskać więcej informacji, użyj jednego z następujących poleceń:', 'it_IT': "Usa uno dei seguenti comandi per maggiori informazioni:", - 'ta_IN': 'மேலும் தகவலுக்கு பின்வரும் கட்டளைகளில் ஒன்றைப் பயன்படுத்தவும்:' + 'ta_IN': 'மேலும் தகவலுக்கு பின்வரும் கட்டளைகளில் ஒன்றைப் பயன்படுத்தவும்:', + 'tr_TR': 'Daha fazla bilgi için lütfen aşağıdaki komutlardan birini kullanın:', }, /////////////////////////////////////////////////////////////////////////// 'show-all-commands': { @@ -1302,7 +1348,8 @@ exports.strings = { 'sl_SI': 'Tu je seznam vseh možnih ukazov:', 'pl' : 'Oto lista wszystkich dostępnych poleceń:', 'it_IT': "Ecco la lista con tutti i comandi disponibili:", - 'ta_IN': 'கிடைக்கக்கூடிய அனைத்து கட்டளைகளின் பட்டியல்:' + 'ta_IN': 'கிடைக்கக்கூடிய அனைத்து கட்டளைகளின் பட்டியல்:', + 'tr_TR': 'İşte tüm mevcut komutların bir listesi:', }, /////////////////////////////////////////////////////////////////////////// 'cd-command': { @@ -1324,7 +1371,8 @@ exports.strings = { 'sl_SI': 'Mapa spremenjena na "/directories/dont/matter/in/this/demo"', 'pl' : 'Katalog zmieniony na "/home/users/windows/pl/demo"', 'it_IT': 'Cartella modificata in "/directories/dont/matter/in/this/demo"', - 'ta_IN': 'அடைவு "/directories/dont/matter/in/this/demo"க்கு மாற்றப்பட்டது' + 'ta_IN': 'அடைவு "/directories/dont/matter/in/this/demo"க்கு மாற்றப்பட்டது', + 'tr_TR': 'Dizin "/directories/dont/matter/in/this/demo" olarak değiştirildi', }, /////////////////////////////////////////////////////////////////////////// 'ls-command': { @@ -1346,7 +1394,8 @@ exports.strings = { 'sl_SI': 'DontWorryAboutFilesInThisDemo.txt', 'pl' : 'SpokojnieToTylkoPlikDemo.txt', 'it_IT': "NoNdEvIpReOcCuPaRtIdEiFiLeInQuEsTaDeMo.txt", - 'ta_IN': 'DontWorryAboutFilesInThisDemo.txt' + 'ta_IN': 'DontWorryAboutFilesInThisDemo.txt', + 'tr_TR': 'DontWorryAboutFilesInThisDemo.txt' }, 'mobile-alert': { '__desc__': 'When someone comes to the site on a mobile device, they can not input commands so this is a nasty alert to tell them', @@ -1368,7 +1417,8 @@ exports.strings = { 'pl' : 'Przepraszamy, ale LearnGitBranching nie obsługuje wpisywania komend z urządzeń mobilnych. Odwiedź LearnGitBranching na komputerze stacjonarnym, warto! :D', 'it_IT': "LGB non funziona su mobile, vieni a trovarci da pc! Ne vale veramente la pena :D", - 'ta_IN': 'LGBஆல் மொபைலில் உள்ளீட்டைப் பெற முடியாது, டெஸ்க்டாப்பில் பார்வையிடவும், அது பயணுள்ளது :D' + 'ta_IN': 'LGBஆல் மொபைலில் உள்ளீட்டைப் பெற முடியாது, டெஸ்க்டாப்பில் பார்வையிடவும், அது பயணுள்ளது :D', + 'tr_TR': 'LGB mobilde giriş alamaz, masaüstü üzerinden ziyaret et! Değmesine değer :D' }, /////////////////////////////////////////////////////////////////////////// 'share-tree': { @@ -1391,7 +1441,8 @@ exports.strings = { 'pl' : 'Udostępnij to drzewo znajomym! Mogą je załadować za pomocą "import tree"', 'it_IT': 'Condividi quest\'albero con i tuoi amici! Può essere importato tramite "import tree"', - 'ta_IN': 'இந்த `tree`ஐ நண்பர்களுடன் பகிர்ந்து கொள்ளுங்கள்! அவர்கள் அதை "import tree" மூலம் பெறலாம்' + 'ta_IN': 'இந்த `tree`ஐ நண்பர்களுடன் பகிர்ந்து கொள்ளுங்கள்! அவர்கள் அதை "import tree" மூலம் பெறலாம்', + 'tr_TR': 'Bu ağacı arkadaşlarınla paylaş! "import tree" komutuyla yükleyebilirler', }, /////////////////////////////////////////////////////////////////////////// 'paste-json': { @@ -1413,7 +1464,8 @@ exports.strings = { 'sl_SI': 'Prilepi JSON kodo spodaj!', 'pl' : 'Wklej poniżej obiekt z kodem JSON!', 'it_IT': "Incolla un blob JSON qui sotto!", - 'ta_IN': 'ஒரு JSON blob-ஐ கீழே ஒட்டவும்' + 'ta_IN': 'ஒரு JSON blob-ஐ கீழே ஒட்டவும்', + 'etr_TR': 'Aşağıya bir JSON verisi yapıştırın!', }, /////////////////////////////////////////////////////////////////////////// 'solved-map-reset': { @@ -1435,7 +1487,8 @@ exports.strings = { 'sl_SI': 'Rešena mapa je ponastavljena, začel boš lahko na novo!', 'pl' : 'Rozwiązania zostały wyczyszczone, zaczynasz z czystą kartą.', 'it_IT': "I progresse salvati sono stati resettati, stai iniziando da zero!", - 'ta_IN': 'தீர்க்கப்பட்ட கோப்பு மீட்டமைக்கப்பட்டது, நீங்கள் ஆரம்பத்தில் இருந்து தொடங்குகிறீர்கள்!' + 'ta_IN': 'தீர்க்கப்பட்ட கோப்பு மீட்டமைக்கப்பட்டது, நீங்கள் ஆரம்பத்தில் இருந்து தொடங்குகிறீர்கள்!', + 'tr_TR': 'Çözülen harita sıfırlandı, temiz bir sayfadan başlıyorsunuz!', }, /////////////////////////////////////////////////////////////////////////// 'level-cant-exit': { @@ -1458,7 +1511,8 @@ exports.strings = { 'pl' : 'Nie jesteś na poziomie! Jesteś w trybie piaskownicy, zacznij poziom wpisując "levels"', 'it_IT': 'Non ti trovi in un livello! Sei nella sandbox, inizia un livello con "levels"', - 'ta_IN': 'ஒரு நிலையில் இல்லாமல், நீங்கள் sandbox-இல் உள்ளீர்கள்! "நிலைகள்" மூலம் ஒரு நிலையைத் தொடங்கவும்' + 'ta_IN': 'ஒரு நிலையில் இல்லாமல், நீங்கள் sandbox-இல் உள்ளீர்கள்! "நிலைகள்" மூலம் ஒரு நிலையைத் தொடங்கவும்', + 'tr_TR': 'Bir seviyede değilsiniz! Bir kum havuzundasınız, "levels" ile bir seviye başlatın.', }, /////////////////////////////////////////////////////////////////////////// 'level-no-id': { @@ -1481,7 +1535,8 @@ exports.strings = { 'pl' : 'Nie znaleziono poziomu {id}!. Otwieranie widoku wyboru poziomu...', 'it_IT': 'Non è stato trovato un livello con id "{id}"! Apro la finestra con la selezione dei livelli', - 'ta_IN': 'அந்த "{id}"-க்கான நிலை காணப்படவில்லை! நிலை தேர்வு செய்யும் திரை திறக்கிறது' + 'ta_IN': 'அந்த "{id}"-க்கான நிலை காணப்படவில்லை! நிலை தேர்வு செய்யும் திரை திறக்கிறது', + 'tr_TR': 'Bu id\'ye "{id}" ait bir seviye bulunamadı! Seviye seçimi görünümünü açıyorum.', }, /////////////////////////////////////////////////////////////////////////// 'undo-stack-empty': { @@ -1503,7 +1558,8 @@ exports.strings = { 'sl_SI': 'Undo seznam je prazen!', 'pl' : 'Nie ma już poleceń do cofnięcia!', 'it_IT': "Non sono presenti comandi da annullare!", - 'ta_IN': 'மீள்பதிவு அடுக்கு காலியாக உள்ளது!' + 'ta_IN': 'மீள்பதிவு அடுக்கு காலியாக உள்ளது!', + 'tr_TR': 'Geri alma yığını boş!', }, /////////////////////////////////////////////////////////////////////////// 'already-solved': { @@ -1526,7 +1582,8 @@ exports.strings = { 'pl' : 'Już rozwiązałeś ten poziom, wypróbuj inne, używając "levels" lub wróć do trybu piaskownicy za pomocą polecenia "sandbox"', 'it_IT': 'Hai già risolto questo livello, prova altri livelli con "levels" o torna alla sandbox con "sandbox"', - 'ta_IN': 'நீங்கள் ஏற்கனவே இந்த நிலையை தீர்த்துள்ளீர்கள், "நிலைகள்" மூலம் பிற நிலைகளை முயற்சிக்கவும் அல்லது "sandbox" உடன் sandbox-க்குச் செல்லவும்' + 'ta_IN': 'நீங்கள் ஏற்கனவே இந்த நிலையை தீர்த்துள்ளீர்கள், "நிலைகள்" மூலம் பிற நிலைகளை முயற்சிக்கவும் அல்லது "sandbox" உடன் sandbox-க்குச் செல்லவும்', + 'tr_TR': 'Bu seviyeyi zaten çözdünüz, "levels" komutuyla diğer seviyeleri deneyin veya "sandbox" komutuyla tekrar sandbox\'a dönün.', }, /////////////////////////////////////////////////////////////////////////// 'solved-level': { @@ -1570,7 +1627,8 @@ exports.strings = { 'sl_SI': 'Ta git ukaz je onemogočen za to stopnjo!', 'pl' : 'To polecenie Gita jest wyłączone na tym poziomie!', 'it_IT': "Questo comando git è disabilitato per questo livello!", - 'ta_IN': 'இந்த நிலையில் அந்த கிட் கட்டளை முடக்கப்பட்டுள்ளது' + 'ta_IN': 'இந்த நிலையில் அந்த கிட் கட்டளை முடக்கப்பட்டுள்ளது', + 'tr_TR': 'Bu seviyede o git komutu devre dışı bırakılmıştır!', }, /////////////////////////////////////////////////////////////////////////// 'share-json': { @@ -1593,7 +1651,8 @@ exports.strings = { 'pl' : 'To jest JSON dla tego poziomu. Udostępnij go, komu chcesz, lub wyślij do mnie na GitHub.', 'it_IT': "Ecco il JSON per questo livello! Condividilo con qualcuno o inviamelo tramite GitHub", - 'ta_IN': 'இதோ இந்த நிலைக்கான JSON, இதை பகிர்ந்து கொள்ளுங்கள் அல்லது GitHub-இல் எனக்கு அனுப்புங்கள்' + 'ta_IN': 'இதோ இந்த நிலைக்கான JSON, இதை பகிர்ந்து கொள்ளுங்கள் அல்லது GitHub-இல் எனக்கு அனுப்புங்கள்', + 'tr_TR': 'İşte bu seviye için JSON! Bunu birisiyle paylaşabilir veya GitHub üzerinden bana gönderebilirsiniz.', }, /////////////////////////////////////////////////////////////////////////// 'want-start-dialog': { @@ -1616,7 +1675,8 @@ exports.strings = { 'pl' : 'Nie określiłeś okna startowego, czy chcesz je dodać?', 'it_IT': "Non hai specificato una finestra di partenza, ne vuoi aggiungere una?", - 'ta_IN': 'தொடக்க உரை எதுவும் நீங்கள் குறிப்பிடவில்லை, ஏதேனும் ஒன்றைச் சேர்க்க விரும்புகிறீர்களா?' + 'ta_IN': 'தொடக்க உரை எதுவும் நீங்கள் குறிப்பிடவில்லை, ஏதேனும் ஒன்றைச் சேர்க்க விரும்புகிறீர்களா?', + 'tr_TR': 'Başlangıç diyaloğunu belirtmediniz, bir tane eklemek ister misiniz?' }, /////////////////////////////////////////////////////////////////////////// 'want-hint': { @@ -1638,7 +1698,8 @@ exports.strings = { 'sl_SI': 'Nisi določil namiga, bi ga rad dodal?', 'pl' : 'Nie podałeś podpowiedzi, czy chcesz ją dodać?', 'it_IT': "Non hai specificato un suggerimento, ne vuoi aggiungere uno?", - 'ta_IN': 'நீங்கள் குறிப்பெதுவும் தரவில்லை, ஏதேனும் ஒன்றைச் சேர்க்க விரும்புகிறீர்களா?' + 'ta_IN': 'நீங்கள் குறிப்பெதுவும் தரவில்லை, ஏதேனும் ஒன்றைச் சேர்க்க விரும்புகிறீர்களா?', + 'tr_TR': 'Bir ipucu belirtmediniz, bir tane eklemek ister misiniz?' }, /////////////////////////////////////////////////////////////////////////// 'prompt-hint': { @@ -1661,7 +1722,8 @@ exports.strings = { 'pl' : 'Wpisz wskazówkę dotyczącą tego poziomu lub pozostaw ją pustą, jeśli nie chcesz jej uwzględniać.', 'it_IT': "Inserisci un suggerimento per questo livello, oppure lascialo vuoto se non ne vuoi aggiungere", - 'ta_IN': 'இந்த நிலைக்கான குறிப்பை உள்ளிடவும், குறிப்பு தேவை இல்லை என்றால் இதனை காலியாக விடுவும்' + 'ta_IN': 'இந்த நிலைக்கான குறிப்பை உள்ளிடவும், குறிப்பு தேவை இல்லை என்றால் இதனை காலியாக விடுவும்', + 'tr_TR': 'Bu seviye için ipucu girin, ya da bir ipucu eklemek istemiyorsanız burayı boş bırakın', }, /////////////////////////////////////////////////////////////////////////// 'prompt-name': { @@ -1683,7 +1745,8 @@ exports.strings = { 'sl_SI': 'Vnesi ime za stopnjo', 'pl' : 'Wprowadź nazwę poziomu', 'it_IT': "Inserisci il nome per questo livello", - 'ta_IN': 'நிலைக்கான பெயரை உள்ளிடவும்' + 'ta_IN': 'நிலைக்கான பெயரை உள்ளிடவும்', + 'tr_TR': 'Seviye için adı girin', }, /////////////////////////////////////////////////////////////////////////// 'solution-empty': { @@ -1705,7 +1768,8 @@ exports.strings = { 'sl_SI': 'Tvoja rešitev je prazna!! Nekaj ni vredu.', 'pl' : 'Twoje rozwiązanie jest puste!! Coś musi zostać zrobione.', 'it_IT': "C'è qualcosa che non va. La soluzione è vuota!! ", - 'ta_IN': 'உங்கள் தீர்வு காலியாக உள்ளது!! ஏதோ தவறாக இருக்கிறது' + 'ta_IN': 'உங்கள் தீர்வு காலியாக உள்ளது!! ஏதோ தவறாக இருக்கிறது', + 'tr_TR': 'Çözümünüz boş!! Bir şeyler eksik', }, /////////////////////////////////////////////////////////////////////////// 'define-start-warning': { @@ -1728,7 +1792,8 @@ exports.strings = { 'pl' : 'Ustawianie punktu startowego... Rozwiązanie i cel zostaną nadpisane, jeśli zostały wcześniej zdefiniowane', 'it_IT': "Definendo punto di partenza... soluzione e obiettivo saranno sovrascritti se erano già stati definiti.", - 'ta_IN': 'தொடக்கத்தை வரையறுத்தல்... தீர்வு மற்றும் குறிக்கோள் முன்னரே வரையறுக்கப்பட்டிருந்தால் மேலெழுதப்படும்' + 'ta_IN': 'தொடக்கத்தை வரையறுத்தல்... தீர்வு மற்றும் குறிக்கோள் முன்னரே வரையறுக்கப்பட்டிருந்தால் மேலெழுதப்படும்', + 'tr_TR': 'Başlangıç noktası belirleniyor... daha önce tanımlanan çözüm ve hedef üzerine yazılacaktır', }, /////////////////////////////////////////////////////////////////////////// 'help-vague-level': { @@ -1751,7 +1816,8 @@ exports.strings = { 'pl' : 'Jesteś na poziomie, więc istnieje kilka rodzajów pomocy. Wpisz "help level", aby dowiedzieć się więcej o tej lekcji, wpisz "help general", aby uzyskać pomoc dotyczącą korzystania z nauki GitBranching, lub wpisz "objective", aby dowiedzieć się, jak rozwiązać ten poziom.', 'it_IT': 'Sei dentro a un livello, hai a disposizione vari tipi di aiuto. Digita "help level" per saperne di più su questa lezione, "help general" per come usare Learn GitBranching, o "objective" per capire come risolvere il livello.', - 'ta_IN': 'நீங்கள் ஒரு நிலையில் உள்ளீர்கள், எனவே பல வகையான உதவி பெற இயலும். இந்த பாடத்தைப் பற்றி மேலும் அறிய "நிலைக்கான உதவி" என்பதைத் தேர்ந்தெடுக்கவும், Learn GitBranching பற்றி மேலும் அறிய "பொது உதவி" பயன்படுத்துக, அல்லது இந்த நிலையை எவ்வாறு தீர்ப்பது என்பது பற்றி அறிய "நோக்கம்" தேர்ந்தெடுக்கவும்.' + 'ta_IN': 'நீங்கள் ஒரு நிலையில் உள்ளீர்கள், எனவே பல வகையான உதவி பெற இயலும். இந்த பாடத்தைப் பற்றி மேலும் அறிய "நிலைக்கான உதவி" என்பதைத் தேர்ந்தெடுக்கவும், Learn GitBranching பற்றி மேலும் அறிய "பொது உதவி" பயன்படுத்துக, அல்லது இந்த நிலையை எவ்வாறு தீர்ப்பது என்பது பற்றி அறிய "நோக்கம்" தேர்ந்தெடுக்கவும்.', + 'tr_TR': 'Bir seviyedesiniz, bu nedenle birden fazla yardım seçeneği mevcuttur. Bu derse dair daha fazla bilgi almak için "help level", Learn GitBranching kullanımını öğrenmek için "help general" veya seviyeyi nasıl çözeceğiniz hakkında bilgi almak için "objective" seçeneğini belirleyebilirsiniz.' }, /////////////////////////////////////////////////////////////////////////// 'help-vague-builder': { @@ -1774,7 +1840,8 @@ exports.strings = { 'pl' : 'Znajdujesz się w kreatorze poziomów. Dostępnych jest tu kilka rodzajów pomocy. Wpisz "help general", aby uzyskać pomoc dotyczącą nauki GitBranching-u, lub wpisz "help builder", aby uzyskać pomoc dotyczącą konstruktora poziomów', 'it_IT': 'Sei in un generatore di livelli, hai a disposizione vari tipi di aiuto. Digita "help general" o "help builder"', - 'ta_IN': 'நீங்கள் ஒரு நிலை கட்டமைப்பானில் உள்ளீர்கள், எனவே பல வகையான உதவி பெற இயலும். தயவுசெய்து "பொது உதவி" அல்லது "கட்டமைப்பான் உதவி" என்பதைத் தேர்ந்தெடுக்கவும்' + 'ta_IN': 'நீங்கள் ஒரு நிலை கட்டமைப்பானில் உள்ளீர்கள், எனவே பல வகையான உதவி பெற இயலும். தயவுசெய்து "பொது உதவி" அல்லது "கட்டமைப்பான் உதவி" என்பதைத் தேர்ந்தெடுக்கவும்', + 'tr_TR': 'Bir seviye oluşturucudasınız, bu nedenle birden fazla yardım seçeneği mevcuttur. Lütfen "help general" veya "help builder" seçeneklerinden birini seçin.' }, /////////////////////////////////////////////////////////////////////////// 'show-goal-button': { @@ -1797,7 +1864,8 @@ exports.strings = { 'sl_SI': 'Prikaži Cilj', 'pl' : 'Pokaż cel', 'it_IT': "Mostra obiettivo", - 'ta_IN': 'இலக்கைக் காட்டு' + 'ta_IN': 'இலக்கைக் காட்டு', + 'tr_TR': 'Hedefi Göster', }, /////////////////////////////////////////////////////////////////////////// 'hide-goal-button': { @@ -1820,7 +1888,8 @@ exports.strings = { 'sl_SI': 'Skrij Cilj', 'pl' : 'Ukryj cel', 'it_IT': "Nascondi obiettivo", - 'ta_IN': 'இலக்கை மறை' + 'ta_IN': 'இலக்கை மறை', + 'tr_TR': 'Hedefi Gizle', }, /////////////////////////////////////////////////////////////////////////// 'objective-button': { @@ -1841,7 +1910,8 @@ exports.strings = { 'pl' : 'Instrukcje', 'it_IT': "Istruzioni", 'pt_BR': 'Instruções', - 'ta_IN': 'வழிமுறைகள்' + 'ta_IN': 'வழிமுறைகள்', + 'tr_TR': 'Talimatlar', }, /////////////////////////////////////////////////////////////////////////// 'git-demonstration-title': { @@ -1862,7 +1932,8 @@ exports.strings = { 'pl' : 'Demo GIT', 'pt_BR': 'Demonstração Git', 'it_IT': "Dimostrazione Git", - 'ta_IN': 'கிட் செயல் விளக்கம்' + 'ta_IN': 'கிட் செயல் விளக்கம்', + 'tr_TR': 'Git Gösterimi', }, /////////////////////////////////////////////////////////////////////////// 'goal-to-reach': { @@ -1885,7 +1956,8 @@ exports.strings = { 'sl_SI': 'Končni Cilj', 'pl': 'Cel do osiągnięcia', 'it_IT': "Obiettivo da raggiungere", - 'ta_IN': 'அடைய வேண்டிய இலக்கு' + 'ta_IN': 'அடைய வேண்டிய இலக்கு', + 'tr_TR': 'Ulaşılması Gereken Hedef', }, /////////////////////////////////////////////////////////////////////////// 'goal-only-main': { @@ -1909,7 +1981,8 @@ exports.strings = { 'pl': ' Uwaga: Na tym poziomie będzie sprawdzana tylko poprawność gałęzi main. Pozostałe gałęzie są tylko odniesieniem (pokazane jako przerywane etykiety poniżej). Jak zawsze, możesz ukryć to okno klikając "Ukryj cel".', 'it_IT': 'Nota: In questo livello sarà selezionato solo il ramo main. Gli altri rami ci sono solo come riferimento (mostrati come etichette tratteggiate). Come sempre, puoi nascondere questa finestra con "hide goal"', - 'ta_IN': 'குறிப்பு: இந்த மட்டத்தில் பிரதான கிளை மட்டுமே சரிபார்க்கப்படும். மற்ற கிளைகள் வெறுமனே விளக்க குறிப்புக்காக மட்டுமே (கீழே விடுபட்ட மேற்கோள்களாக காட்டப்பட்டுள்ளது). எப்பொழுதும் போல், "இலக்கை மறை" மூலம் இந்த சாளரத்தை மறைக்கலாம்' + 'ta_IN': 'குறிப்பு: இந்த மட்டத்தில் பிரதான கிளை மட்டுமே சரிபார்க்கப்படும். மற்ற கிளைகள் வெறுமனே விளக்க குறிப்புக்காக மட்டுமே (கீழே விடுபட்ட மேற்கோள்களாக காட்டப்பட்டுள்ளது). எப்பொழுதும் போல், "இலக்கை மறை" மூலம் இந்த சாளரத்தை மறைக்கலாம்', + 'tr_TR': 'Not: Bu seviyede yalnızca ana dal kontrol edilecektir. Diğer dallar yalnızca referans amaçlıdır (aşağıda kesikli etiketler olarak gösterilmektedir). Her zamanki gibi, bu diyaloğu \"hedefi gizle\" ile gizleyebilirsiniz.', }, /////////////////////////////////////////////////////////////////////////// 'hide-goal': { @@ -1932,7 +2005,8 @@ exports.strings = { 'sl_SI': 'To okno lahko skriješ z "hide goal"', 'pl': 'Możesz ukryć to okno za pomocą opcji "ukryj cel"', 'it_IT': 'Puoi nascondere questa finestra con "hide goal"', - 'ta_IN': 'இந்த சாளரத்தை "இலக்கை மறை" மூலம் மறைக்கலாம்' + 'ta_IN': 'இந்த சாளரத்தை "இலக்கை மறை" மூலம் மறைக்கலாம்', + 'tr_TR': 'Bu pencereyi \"hedefi gizle\" ile gizleyebilirsiniz', }, /////////////////////////////////////////////////////////////////////////// 'hide-start': { @@ -1955,7 +2029,8 @@ exports.strings = { 'sl_SI': 'To okno lahko skriješ z "hide start"', 'pl': 'Możesz ukryć to okno za pomocą opcji "ukryj start"', 'it_IT': 'Puoi nascondere questa finestra con "hide start"', - 'ta_IN': 'இந்த சாளரத்தை "தொடக்கத்தை மறை" மூலம் மறைக்கலாம்' + 'ta_IN': 'இந்த சாளரத்தை "தொடக்கத்தை மறை" மூலம் மறைக்கலாம்', + 'tr_TR': 'Bu pencereyi \"başlangıcı gizle\" ile gizleyebilirsiniz.', }, /////////////////////////////////////////////////////////////////////////// 'level-builder': { @@ -1978,7 +2053,8 @@ exports.strings = { 'sl_SI': 'Graditelj Stopenj', 'pl': 'Twórca poziomu', 'it_IT': "Generatore di livelli", - 'ta_IN': 'நிலை கட்டமைப்பான்' + 'ta_IN': 'நிலை கட்டமைப்பான்', + 'en_US': 'Seviye Yapıcı', }, /////////////////////////////////////////////////////////////////////////// 'no-start-dialog': { @@ -2001,7 +2077,8 @@ exports.strings = { 'sl_SI': 'Ni začetnega dialoga za prikaz te stopnje!', 'pl': 'Dla tego poziomu nie ma okna startowego do wyświetlenia!', 'it_it': "Non esiste una finestra di partenza per questo livello!", - 'ta_IN': 'இந்த நிலை பற்றி விளக்கிகாட்ட தொடக்க உரையாடல் எதுவும் இல்லை' + 'ta_IN': 'இந்த நிலை பற்றி விளக்கிகாட்ட தொடக்க உரையாடல் எதுவும் இல்லை', + 'tr_TR': 'Bu seviye için gösterilecek bir başlangıç penceresi yok!', }, /////////////////////////////////////////////////////////////////////////// 'no-hint': { @@ -2024,7 +2101,8 @@ exports.strings = { 'sl_SI': 'Hmm, izgleda da ni namiga za to stopnjo :-/', 'pl': 'Hmm, wydaje się, że nie ma podpowiedzi dla tego poziomu :-/', 'it_IT': "Mmh, sembra non ci sia un suggerimento per questo livello :-/", - 'ta_IN': 'ஹ்ம், இந்த நிலைக்கு ஒரு குறிப்பு எதுவும் இருப்பதாகத் தெரியவில்லை :-/' + 'ta_IN': 'ஹ்ம், இந்த நிலைக்கு ஒரு குறிப்பு எதுவும் இருப்பதாகத் தெரியவில்லை :-/', + 'tr_TR': 'Hmm, bu seviye için bir ipucu görünmüyor :-/', }, /////////////////////////////////////////////////////////////////////////// 'error-untranslated-key': { @@ -2048,7 +2126,8 @@ exports.strings = { 'pl': 'Tłumaczenie dla klucza "{key}" jeszcze nie istnieje tłumaczenia :( Zapraszam na GitHub, aby pomóc w tłumaczeniu!', 'it_IT': "La traduzione per {key} non esiste ancora :( Fai un salto su GitHub e dacci una mano!", - 'ta_IN': '{key}-இன் மொழிபெயர்ப்பு கிடைக்கவில்லை :( github-இன் வழியாக் நீங்களும் மொழி பெயர்க்க உதவலாம்!' + 'ta_IN': '{key}-இன் மொழிபெயர்ப்பு கிடைக்கவில்லை :( github-இன் வழியாக் நீங்களும் மொழி பெயர்க்க உதவலாம்!', + 'tr_TR': '{key} için henüz bir çeviri yok :( Lütfen GitHub\'a gidin ve bir çeviri önerin!', }, /////////////////////////////////////////////////////////////////////////// 'error-untranslated': { @@ -2122,7 +2201,7 @@ exports.strings = { 'zh_TW': '關卡 ', 'it_IT': " Livello ", 'pl' : ' Poziom ', - 'tr_TR': ' Seviye ' + 'tr_TR': ' Seviye ', }, /////////////////////////////////////////////////////////////////////////// 'command-helper-bar-levels': { @@ -2136,7 +2215,8 @@ exports.strings = { 'de_DE': 'Levels', 'zh_TW': '關卡', 'it_IT': "Livelli", - 'pl' : 'Poziomy' + 'pl' : 'Poziomy', + 'tr_TR': 'Seviyeler', }, /////////////////////////////////////////////////////////////////////////// 'command-helper-bar-solution': { @@ -2150,7 +2230,8 @@ exports.strings = { 'zh_TW': '解答', 'it_IT': "Soluzione", 'pt_BR': 'Solução', - 'pl' : 'Rozwiązanie' + 'pl' : 'Rozwiązanie', + 'tr_TR': 'Çözüm' }, /////////////////////////////////////////////////////////////////////////// 'command-helper-bar-reset': { @@ -2164,7 +2245,9 @@ exports.strings = { 'de_DE': 'Zurücksetzen', 'zh_TW': '重新開始', 'it_IT': "Reset", - 'pl' : 'Wyczyść' + 'pl' : 'Wyczyść', + 'tr_TR': 'Sıfırla', + }, /////////////////////////////////////////////////////////////////////////// 'command-helper-bar-undo': { @@ -2178,7 +2261,8 @@ exports.strings = { 'de_DE': 'Rückgängig', 'zh_TW': '回到上一步', 'it_IT': "Annulla", - 'pl' : 'Cofnij' + 'pl' : 'Cofnij', + 'tr_TR': 'Geri al', }, /////////////////////////////////////////////////////////////////////////// 'command-helper-bar-objective': { @@ -2192,7 +2276,8 @@ exports.strings = { 'zh_TW': '目標', 'it_IT': "Obiettivo", 'pt_BR': 'Objetivo', - 'pl' : 'Cel' + 'pl' : 'Cel', + 'tr_TR': 'Hedef', }, /////////////////////////////////////////////////////////////////////////// 'command-helper-bar-help': { @@ -2206,7 +2291,8 @@ exports.strings = { 'de_DE': 'Hilfe', 'zh_TW': '幫助', 'it_IT': "Aiuto", - 'pl' : 'Pomoc' + 'pl' : 'Pomoc', + 'tr_TR': 'Yardım', }, /////////////////////////////////////////////////////////////////////////// 'error-command-currently-not-supported': { @@ -2238,6 +2324,7 @@ exports.strings = { 'zh_TW': '互動式 Rebase', 'it_IT': "Rebase interattivo", 'pl' : 'Interaktywny Rebase', - 'vi': 'Rebase tương tác' + 'vi': 'Rebase tương tác', + 'tr_TR': 'Etkileşimli Yeniden Temellendirme', }, }; diff --git a/src/js/stores/LocaleStore.js b/src/js/stores/LocaleStore.js index b9992aca4..399482551 100644 --- a/src/js/stores/LocaleStore.js +++ b/src/js/stores/LocaleStore.js @@ -25,7 +25,8 @@ var langLocaleMap = { sl: 'sl_SI', pl: 'pl', it: 'it_IT', - ta: 'ta_IN' + ta: 'ta_IN', + tr: 'tr_TR', }; var headerLocaleMap = { @@ -35,7 +36,8 @@ var headerLocaleMap = { 'es-MX': 'es_MX', 'es-ES': 'es_ES', 'it-IT': 'it_IT', - 'sl-SI': 'sl_SI' + 'sl-SI': 'sl_SI', + 'tr-TR': 'tr_TR', }; var supportedLocalesList = Object.values(langLocaleMap) diff --git a/src/levels/advanced/multipleParents.js b/src/levels/advanced/multipleParents.js index 9b332c166..1b16408c0 100644 --- a/src/levels/advanced/multipleParents.js +++ b/src/levels/advanced/multipleParents.js @@ -22,6 +22,7 @@ exports.level = { 'ta_IN': 'ஒன்றுக்கு மேற்ப்பட்ட துவக்க கிலைகள்', 'it_IT': "Genitori multipli", "pl": "Wielu rodziców", + "tr_TR": "Birden fazla ebeveyn" }, "hint": { "en_US": "Use `git branch bugWork` with a target commit to create the missing reference.", @@ -43,6 +44,7 @@ exports.level = { "ta_IN": "`git branch bugWork` பயன்படுத்தி தேவைப்படும் கமிட்டுடன் இழந்த இணைப்பை உருவாக்குக.", 'it_IT': "Scrivi `git branch bugWork` con un commit per creare il riferimento mancante.", "pl": "Użyj `git branch bugWork` na docelowym commicie, aby utworzyć brakującą referencję.", + "tr_TR": "Eksik referansı oluşturmak için hedef commit ile `git branch bugWork` komutunu kullanın." }, "startDialog": { "en_US": { @@ -1697,5 +1699,93 @@ exports.level = { }, ], }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Ebeveyn Belirtme", + "", + "`~` modifikatörü gibi, `^` modifikatörü de ardından isteğe bağlı bir sayı alabilir.", + "", + "`~`'in geri gitmek için nesil sayısını belirtmesinin aksine, `^` modifikatörü birleştirilmiş bir commit'ten hangi ebeveyn referansını takip edeceğinizi belirtir. Unutmayın ki birleştirilmiş commit'ler birden fazla ebeveyne sahip olduğundan, hangi yolu seçileceği belirsizdir.", + "", + "Git genellikle birleştirilmiş commit'ten \"ilk\" ebeveyni yukarı doğru takip eder, ancak `^` ile bir sayı belirtmek, bu varsayılan davranışı değiştirir.", + "", + "Yeterince konuştuk, gelin bunu aksiyonda görelim.", + "" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Burada birleştirilmiş bir commit var. Eğer `main^`'i modifikatörsüz checkout edersek, birleştirilmiş commit'ten sonra ilk ebeveyni takip edeceğiz.", + "", + "(*Görsellerimizde, ilk ebeveyn birleştirilmiş commit'in hemen üstünde yer alır.*)" + ], + "afterMarkdowns": [ + "Kolay -- bu, hepimizin alışık olduğu şey." + ], + "command": "git checkout main^", + "beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Şimdi, ikinci ebeveyni belirtmeyi deneyelim..." + ], + "afterMarkdowns": [ + "Görüyor musunuz? Diğer ebeveyni yukarıya takip ettik." + ], + "command": "git checkout main^2", + "beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "`^` ve `~` modifikatörleri, commit ağacında gezinmeyi çok güçlü hale getirebilir:" + ], + "afterMarkdowns": [ + "Şimşek gibi hızlı!" + ], + "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": [ + "Daha çılgınca, bu modifikatörler birbirine zincirlenebilir! Bunu izleyin:" + ], + "afterMarkdowns": [ + "Önceki hareketin aynısı, ancak tümünü tek bir komutla." + ], + "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": [ + "### Uygulamada Görelim", + "", + "Bu seviyeyi tamamlamak için, belirtilen hedefte yeni bir branch oluşturun.", + "", + "Tabii ki, commit'i doğrudan belirtmek (örneğin `C6` gibi) kolay olacaktır, ancak bunun yerine konuştuğumuz modifikatörleri kullanmanızı tavsiye ediyorum!" + ] + } + } + ] + } + } }; diff --git a/src/levels/intro/branching.js b/src/levels/intro/branching.js index db07a26af..d4f6c61e8 100644 --- a/src/levels/intro/branching.js +++ b/src/levels/intro/branching.js @@ -1536,11 +1536,11 @@ exports.level = { ] }, "it_IT": { - childViews: [ + "childViews": [ { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "## Rami Git", "", "Anche i rami in Git sono incredibilmente leggeri. Sono semplicemente puntatori a uno specifico commit -- nulla di più. Questo è il motivo per cui gli appassionati di Git predicano:", @@ -1556,37 +1556,37 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Vediamo nella pratica cosa sono i rami.", "", "Qui creeremo un nuovo ramo di nome `newImage`.", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Ecco, questa è la divisione in rami! Il ramo `newImage` ora punta al commit `C1`.", ], - command: "git branch newImage", - beforeCommand: "", + "command": "git branch newImage", + "beforeCommand": "", }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Proviamo ad aggiungere un po' di lavoro su questo nuovo ramo. Premi il pulsante qua sotto.", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Oh no! Il ramo `main` si è spostato ma il ramo `newImage` no! Questo perché non eravamo sul nuovo ramo, infatti l'asterisco (*) era su `main`.", ], - command: "git commit", - beforeCommand: "git branch newImage", + "command": "git commit", + "beforeCommand": "git branch newImage", }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Diciamo a Git che vogliamo selezionare il ramo con", "", "```", @@ -1595,17 +1595,17 @@ exports.level = { "", "Questo ci metterà sul nuovo ramo prima di fare un nuovo commit.", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Ecco qua! I cambiamenti sono stati memorizzati sul nuovo ramo.", ], - command: "git checkout newImage; git commit", - beforeCommand: "git branch newImage", + "command": "git checkout newImage; git commit", + "beforeCommand": "git branch newImage", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "*Nota: In Git versione 2.23, è stato introdotto un nuovo comando, `git switch`, per sostituire `git checkout`, ", "che è sovraccaricato di funzionalità (fa un sacco di cose diverse). Queste lezioni usano comunque ", "`checkout` invece che `switch` perché molti non hanno ancora accesso a `switch`, ma quest'app supporta comunque il comando ", @@ -1614,9 +1614,9 @@ exports.level = { }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Ok! Ora sei pronto a lavorare con i rami. Dopo che questa finestra si chiude,", "crea un nuovo ramo `bugFix` e passa su quel ramo.", "", diff --git a/src/levels/intro/rebasing.js b/src/levels/intro/rebasing.js index 5f268e2a4..e67751690 100644 --- a/src/levels/intro/rebasing.js +++ b/src/levels/intro/rebasing.js @@ -20,6 +20,7 @@ exports.level = { 'sl_SI': 'Uvod v Rebase', 'it_IT': "Introduzione al rebase (ribasare)", "pl": "Wprowadzenie do Rebase", + "ta_IN": "Rebase அறிமுகம்", "tr_TR": "Rebase İşlemine Giriş" }, "hint": { @@ -41,6 +42,7 @@ exports.level = { 'sl_SI': 'Prepričaj se, da si najprej commital bugFix.', 'it_IT': "Assicurati di fare prima il commit da bugFix", "pl": "Upewnij się, że masz już commit z bugFix", + "ta_IN": "முதலில் bugFix இல் இருந்து commit செய்ய நீங்கள் உறுதி செய்யவும்", "tr_TR": "Önce bugFix'ten commit attığınıza emin olun" }, "disabledMap": { @@ -1257,6 +1259,73 @@ exports.level = { }, ], }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Rebase", + "", + "சிறப்பாக எங்காவது வேறுபட்ட பிரான்சுகளில் வேலைகளை ஒன்றாக சேர்க்கும் இரண்டாவது வழி *rebasing* ஆகும். Rebase என்பது ஒரு கமிட்களின் குழுவை, அவற்றை \"நகலெடுத்து\", பிறந்த இடத்தில் வைக்கின்றது.", + "", + "இது குழப்பமாக தோன்றினாலும், rebasing-ன் பயனான அம்சம் என்னவெனில் அது ஒரு நல்ல நேரியல் கமிட் வரிசையை உருவாக்க பயன்படும். ரெப்போசிடரியின் கமிட் பதிவு / வரலாறு மிகவும் சுத்தமாக இருக்கும், அதிகமாக rebasing மட்டும் அனுமதிக்கப்பட்டிருந்தால்.", + "", + "இதை செயல்படுதலாக பார்க்கலாம்..." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "இங்கே நமக்கு இரண்டு பிரான்சுகள் இருக்கின்றன; bugFix பிரான்சு தற்போது தேர்ந்தெடுக்கப்பட்டுள்ளது (சிறிய நட்சத்திரத்தை கவனியுங்கள்)", + "", + "நாம் எங்களின் வேலைகளை bugFix இல் இருந்து நேரடியாக main பிரான்சில் கொண்டு வர விரும்புகிறோம். அப்படி செய்வதால் இந்த இரண்டு பணிகள் தொடர் முறையில் உருவாக்கப்பட்டவை போல தோன்றும், உண்மையில் அவை ஒரே நேரத்தில் உருவாக்கப்பட்டன.", + "", + "இதை `git rebase` கமாண்டைப் பயன்படுத்தி செய்யலாம்." + ], + "afterMarkdowns": [ + "அருமை! இப்போது bugFix பிரான்சிலிருந்து எங்கள் வேலை நேரடியாக main பிரான்சின் மேல் வந்துள்ளது மற்றும் நமக்கு ஒரு நல்ல நேரியல் கமிட் வரிசை உருவாகியுள்ளது.", + "", + "கமிட் C3 இன்னும் எங்காவது உள்ளது (அது மரத்தில் மங்கிய தோற்றத்தில் உள்ளது), மற்றும் C3' என்பது நாம் main இல் rebased செய்த \"நகல்\" ஆகும்.", + "", + "ஒரே பிரச்சினை என்னவென்றால் main இன்னும் புதுப்பிக்கப்படவில்லை, அதை இப்போது செய்யலாம்..." + ], + "command": "git rebase main", + "beforeCommand": "git commit; git checkout -b bugFix C1; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "இப்போது நாம் `main` பிரான்சில் செக் அவுட் செய்துள்ளோம். இனி `bugFix` இல் rebase செய்து பார்க்கலாம்..." + ], + "afterMarkdowns": [ + "இங்கே! ஏனெனில் `main` என்பது `bugFix` இன் முன்னோடி ஆக இருந்தது, git எளிதாக `main` பிரான்சின் குறி வரலாற்றை முன்னேற்றியுள்ளது." + ], + "command": "git rebase bugFix", + "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase main; git checkout main" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இந்த நிலையை முடிக்க, பின்வரும் செயலைப் படி செய்க:", + "", + "* `bugFix` என்ற புதிய பிரான்சை செக் அவுட் செய்யவும்", + "* ஒருமுறை commit செய்யவும்", + "* main இல் சென்று மீண்டும் commit செய்யவும்", + "* மீண்டும் `bugFix` இல் செக் அவுட் செய்து main இல் rebase செய்யவும்", + "", + "வாழ்த்துக்கள்!" + ] + } + } + ] + }, "tr_TR": { "childViews": [ { diff --git a/src/levels/mixed/describe.js b/src/levels/mixed/describe.js index 376052262..abfb00469 100644 --- a/src/levels/mixed/describe.js +++ b/src/levels/mixed/describe.js @@ -29,7 +29,9 @@ exports.level = { "sl_SI": "Git Describe", "it_IT": "Git Describe", "pl": "Git describe", - "tr_TR": "git describe" + "tr_TR": "git describe", + "ko": "Git 설명", + "ta_IN": "Git விவரம்" }, "hint": { "en_US": "Just commit once on bugFix when you're ready to move on", @@ -50,6 +52,7 @@ exports.level = { "sl_SI": "Commitaj enkrat na bugFix, ko boš pripravljen za nadaljevanje.", "it_IT": "Fai un commit da bugFix per procedere", "pl": "Scommituj raz na bugFix, żeby przejść dalej", + "ta_IN": "நீங்கள் தொடர தயாராக இருக்கும்போது bugFix இல் ஒருமுறை commit செய்யவும்.", "tr_TR": "Hazır olduğunuzda bugFix üzerine sadece bir commit atmanız yeterlidir." }, "startDialog": { @@ -1192,22 +1195,131 @@ exports.level = { }, ], }, - "tr_TR": { + "ta_IN": { "childViews": [ { "type": "ModalAlert", "options": { "markdowns": [ - "### Git Describe (Tanımla)", + "### Git Describe", "", - "Etiketler kod tabanında harika \"çekirdekler\" olarak hizmet ettiği için, Git size en yakın \"anchor'a (etikete)\" göre nerede olduğunuzu açıklamak için bir komut sunar. Bu komut `git describe` 'dır!", + "குறிச்சொற்கள் (tags) குறியீட்டு தளத்தில் (codebase) சிறந்த \"தொங்கல்\" (anchors) புள்ளிகளாகச் செயல்படுவதால், நீங்கள் மிக அருகிலுள்ள \"தொங்கலுக்கு\" (அka குறிச்சொற்களுக்கு) ஒப்பாக எங்கு உள்ளீர்கள் என்பதை *விவரிக்க* ஒரு கட்டளையை Git வழங்குகிறது. அந்த கட்டளைக்கு பெயர் `git describe`!", "", - "Git describe, birçok commit'i geriye veya ileriye doğru hareket ettikten sonra nerede bulunduğunuzun anlaşılmasına yardımcı olabilir; bu, bir hata ayıklama araması olan git bisect'i tamamladıktan sonra veya tatilden yeni dönen bir iş arkadaşının bilgisayarına oturduğunuzda karşınıza çıkabilir." + "`git describe` கட்டளை நீங்கள் commit வரலாற்றில் முன்னோக்கி அல்லது பின்னோக்கி நகர்ந்த பிறகு உங்கள் நிலையைப் புரிந்துகொள்ள உதவும்; இது ஒரு `git bisect` (பிழைத் தேடல்) செயல்முறையை முடித்த பிறகு அல்லது விடுமுறையில் இருந்து திரும்பிய வேலைப்பார்வையாளர் ஒருவர் கம்ப்யூட்டருக்கு அருகில் அமர்ந்தபோது நடக்கக்கூடும்." ] } }, - + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "`git describe` கட்டளையின் வடிவம் இதுவாக இருக்கும்:", + "", + "`git describe `", + "", + "`` என்பது Git ஒரு commit ஆக தீர்வு காணக்கூடிய எந்தப் பொருளும் ஆகும். நீங்கள் ஒரு ref ஐ குறிப்பிடாவிட்டால், Git நீங்கள் தற்போது எங்கு checkout செய்துள்ளீர்களோ (அதாவது `HEAD`) அதைத் தேர்ந்தெடுக்கிறது.", + "", + "இந்த கட்டளையின் வெளியீடு இப்படித் தெரியும்:", + "", + "`__g`", + "", + "`` என்பது commit வரலாற்றில் மிக அருகிலுள்ள முன்னோடி குறிச்சொல் (tag), `` அது எத்தனை commit களின் தூரத்தில் உள்ளதைக் குறிக்கிறது, மற்றும் `` விவரிக்கப்பட்ட commit இன் hash ஆகும்." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "விரைவான ஒரு உதாரணத்தைப் பார்ப்போம். கீழே உள்ள மரத்திற்காக:" + ], + "afterMarkdowns": [ + "`git describe main` கட்டளை வெளியீடு இதுவாக இருக்கும்:", + "", + "`v1_2_gC2`", + "", + "இதேபோல், `git describe side` வெளியீடு இதுவாக இருக்கும்:", + "", + "`v2_1_gC4`" + ], + "command": "git tag v2 C3", + "beforeCommand": "git commit; go -b side HEAD~1; gc; gc; git tag v1 C0" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Git describe பற்றிய அடிப்படை இவைதான்! இந்த கட்டளைக்கு பழக, இந்த நிலையில் சில இடங்களை விவரிக்க முயற்சி செய்யுங்கள்.", + "", + "தயார் என்றால், ஒரு முறை commit செய்து நிலையை முடிக்கலாம். உங்களுக்கு இலவசமாக வழங்கிய ஒன்று :P" + ] + } + } ] }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Git Describe", + "", + "Etiketler kod tabanında harika \"çapa noktaları\" olarak hizmet ettiğinden, Git sizin en yakın \"çapa\"ya (yani etikete) göre nerede olduğunuzu *tanımlamak* için bir komut sunar. Bu komutun adı `git describe`!", + "", + "`git describe` komutu, geçmişte ileriye veya geriye birçok commit aldıktan sonra yerinizi belirlemenize yardımcı olabilir; bu, bir `git bisect` (hata ayıklama arama) işlemini tamamladıktan sonra veya tatilden dönen bir iş arkadaşınızın bilgisayarında oturduğunuzda gerçekleşebilir." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "`git describe` komutu şu formda kullanılır:", + "", + "`git describe `", + "", + "`` git'in bir commit'e çözümleyebileceği herhangi bir şeydir. Eğer bir ref belirtmezseniz, git şu an nereye checkout yapmışsanız (genellikle `HEAD`) onu kullanır.", + "", + "Komutun çıktısı şu şekilde görünür:", + "", + "`__g`", + "", + "Burada `tag`, geçmişteki en yakın ata etikettir, `numCommits`, bu etikete olan commit uzaklığıdır ve `` tanımlanan commit'in hash değeridir." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Hızlı bir örneğe göz atalım. Aşağıdaki ağaç için:" + ], + "afterMarkdowns": [ + "`git describe main` komutu şu çıktıyı verecektir:", + "", + "`v1_2_gC2`", + "", + "Öte yandan `git describe side` komutu şu çıktıyı verecektir:", + "", + "`v2_1_gC4`" + ], + "command": "git tag v2 C3", + "beforeCommand": "git commit; go -b side HEAD~1; gc; gc; git tag v1 C0" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Git describe hakkında bilmeniz gerekenler bu kadar! Komuta alışmak için bu seviyedeki birkaç yeri tanımlamayı deneyin.", + "", + "Hazır olduğunuzda, bir kez commit yaparak seviyesi tamamlayabilirsiniz. Küçük bir jest bizden size :P" + ] + } + } + ] + }, } }; diff --git a/src/levels/mixed/grabbingOneCommit.js b/src/levels/mixed/grabbingOneCommit.js index b274ee687..377d6d9f9 100644 --- a/src/levels/mixed/grabbingOneCommit.js +++ b/src/levels/mixed/grabbingOneCommit.js @@ -32,6 +32,7 @@ exports.level = { "sl_SI": "Izbiranje Samo Enega Commita", "it_IT": "Prendi solo 1 Commit", "pl": "Wzięcie tylko 1 commita", + "ta_IN": "ஒரே ஒரு commit மட்டும் எடுப்பது", "tr_TR": "Sadece 1 commit'i yakalamak" }, "hint": { @@ -39,6 +40,7 @@ exports.level = { "de_DE": "Vergiss nicht: Hier kommst du mit interaktivem Rebase oder Cherry-Picking weiter", "fr_FR": "Souvenez-vous, les rebases interactifs ou cherry-pick sont vos amis ici.", "es_AR": "Acordate, el rebase interactivo o cherry-pick son tus amigos acá", + "es_MX": "Recuerda, el rebase interactivo o el cherry-pick son tus aliados aquí", "es_ES": "Recuerda, el rebase interactivo y el cherry-pick son tus amigos", "pt_BR": "Lembre-se, o rebase interativo ou o cherry-pick são seus amigos aqui", "gl": "Recorda, o rebase interativo ou cherry-pick é un dos teus colegas aquí", @@ -52,6 +54,7 @@ exports.level = { "sl_SI": "Pomni, interaktivni rebase ali cherry-pick sta tu tvoja prijatelja.", "it_IT": "Ricorda, rebase interattivo o cherry-pick sono tuoi amici", "pl": "Pamiętaj, że znasz już interaktywny rebase oraz cherry-pick", + "ta_IN": "மறவாதீர்கள், interactive rebase அல்லது cherry-pick இங்கே உங்கள் நண்பர்", "tr_TR": "Unutmayın interactive rebase ve cherry-pick buradaki en iyi dostlarınız." }, "startDialog": { @@ -757,6 +760,45 @@ exports.level = { }, ], }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## உள்ளூரியாக அடுக்கப்பட்ட commits", + "", + "இங்கே அடிக்கடி நிகழும் ஒரு மேம்பாட்டு நிலைமை: நான் ஒரு பிழையை கண்டறிய முயற்சி செய்கிறேன், ஆனால் அது மிகவும் பிடிக்க முடியாதது. எனது விசாரணை பணிக்கு உதவ, நான் சில டிபக் கமாண்டுகளை மற்றும் சில பிரிண்ட் அறிக்கைகளை சேர்க்கிறேன்.", + "", + "இந்த அனைத்து டிபக்/பிரிண்ட் அறிக்கைகளும் தனிப்பட்ட commitகளில் உள்ளன. இறுதியாக, நான் பிழையை கண்டறிந்து சரிசெய்து மகிழ்ச்சியடைந்தேன்!", + "", + "ஒரே பிரச்சனை என்னவென்றால், நான் என் `bugFix` ஐ `main` கிளைக்கு திரும்பப் போட வேண்டும். நான் வெறும் fast-forward செய்வதாக இருந்தால், `main` கிளை அனைத்தும் எனது டிபக் அறிக்கைகளைப் பெறும், இது விரும்பத்தக்கதல்ல. மற்றொரு வழி இருக்க வேண்டும்..." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "நாம் git ஐ ஒரு commit ஐ மட்டும் நகலெடுக்கச் சொல்ல வேண்டும். இது முந்தைய நிலைகளில் வேலைகளை நகர்த்துவதற்கு மாறுபட்டது - அதே கட்டளைகளை நாம் பயன்படுத்தலாம்:", + "", + "* `git rebase -i`", + "* `git cherry-pick`", + "", + "இந்த இலக்கை அடைய." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இது ஒரு பின்னேட்ட நிலை என்பதால், நீங்கள் எந்த கட்டளையை பயன்படுத்த விரும்புகிறீர்கள் என்பதை நீங்கள் தீர்மானிக்க முடியும், ஆனால் நிலையை முடிக்க, `bugFix` குறிப்பிடும் commit ஐ `main` பெறுவதில் உறுதி செய்யவும்." + ] + } + } + ] + }, "tr_TR": { "childViews": [ { diff --git a/src/levels/mixed/jugglingCommits.js b/src/levels/mixed/jugglingCommits.js index b1fcda6f9..775f39b83 100644 --- a/src/levels/mixed/jugglingCommits.js +++ b/src/levels/mixed/jugglingCommits.js @@ -36,13 +36,15 @@ exports.level = { "sl_SI": "Žongliranje s Commiti", "it_IT": "Giocoliere di commit", "pl": "Żonglowanie commitami", - "tr_TR": "Commit Hokkabazlığı", + "ta_IN": "Commitகளுடன் வித்தைகள்", + "tr_TR": "Commit'leri Şekillendirme" }, "hint": { "en_US": "The first command is git rebase -i HEAD~2", "de_DE": "Der erste Befehl ist git rebase -i HEAD~2", "fr_FR": "La première commande est git rebase -i HEAD~2", "es_AR": "El primer comando es git rebase -i HEAD~2", + "es_MX": "El primer comando es git rebase -i HEAD~2", "es_ES": "El primer comando es git rebase -i HEAD~2", "pt_BR": "O primeiro comando é git rebase -i HEAD~2", "gl": "O primeiro comando é git rebase -i HEAD~2", @@ -56,6 +58,7 @@ exports.level = { "sl_SI": "Prvi ukaz je git rebase -i HEAD~2.", "it_IT": "Il primo comando è git rebase -i HEAD~2", "pl": "Pierwsze polecenie to: git rebase -i HEAD~2", + "ta_IN": "முதலில் கொடுக்கவேண்டிய கட்டளை git rebase -i HEAD~2", "tr_TR": "İlk komutunuz git rebase -i HEAD~2" }, "startDialog": { @@ -676,6 +679,40 @@ exports.level = { }, ], }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Commit களை மடலாடுவது", + "", + "இது மிகவும் பொதுவாக நடந்துகொள்கிற ஒரு நிலை. உங்கள் செருக்குகள் (`newImage`) மற்றும் மற்றொரு செருக்கு தொகுதி (`caption`) தொடர்புடையவை, ஆகையால் அவை உங்கள் ரெப்போஸிடரியில் ஒரே காலாண்டில் (அதாவது ஒன்றுக்குப் பிறகு ஒன்று) இருப்பதால் மேலே சீராக stacked ஆக இருக்கின்றன.", + "", + "கஷ்டமான விஷயம் என்னவென்றால், சில சமயங்களில் நீங்கள் ஒரு பத்தினை சின்ன மாற்றம் செய்ய வேண்டியுள்ளது. இந்த நிலைமையில், வடிவமைப்பு அணியால் `newImage` இன் பரிமாணங்களை சிறிது மாற்ற வேண்டும் என்று கூறப்பட்டுள்ளது, ஆனால் அந்த commit எங்கள் வரலாற்றில் முன்பே இருக்கிறது!!" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இந்த சிரமத்தை நாம் பின்வரும் முறையில் களமிறக்குவோம்:", + "", + "* நாம் commit களை மறுசீரமைத்து மாற்ற வேண்டிய commit உடன் மேலே கொண்டு வருவோம் `git rebase -i`", + "* நாம் அந்த சிறிய மாற்றத்தைச் செய்ய `git commit --amend` பயன்படுத்துவோம்", + "* பின்னர் நாம் commit களை முதலில் இருந்தபடி மறுசீரமைக்க `git rebase -i` பயன்படுத்துவோம்", + "* இறுதியாக, நாம் `main` ஐ இந்த புதுப்பிக்கப்பட்ட பாகத்திற்கு நகர்த்துவோம் (உங்கள் தேர்ந்த முறையைப் பயன்படுத்தி)", + "", + "இந்த நிலைமையை அடைவதற்கான பல வழிகள் உள்ளன (நான் உங்களை cherry-pick ஐ பார்க்கின்றேன்), மேலும் நாம் அவற்றை பின் பார்க்கப்போகிறோம், ஆனால் தற்போது நாம் இந்த நுணுக்கத்தில் கவனம் செலுத்துவோம்.", + "இறுதியாக, இதன் நோக்கம் இந்த நிலையில் கவனிக்கப்பட வேண்டும் -- நாம் commit களை இரண்டு முறை நகர்த்துவதை காரணமாக அவை இரண்டு ஆகவே ஒரு அப்போஸ்ட்ராபி சேர்க்கப்படுகின்றன. நாம் மாற்றிய commit க்கு மேலும் ஒரு அப்போஸ்ட்ராபி சேர்க்கப்படுகிறது, இதனால் முடிவில் மரப்போக்கின் இறுதி வடிவத்தை பெறுகிறோம்.", + "", + "இதனுடன், நான் இப்போது நிலைகளைக் ஒப்பிட முடியும் கட்டமைப்பு மற்றும் சாத்தியமான அப்போஸ்ட்ராபி வேறுபாடுகளின் அடிப்படையில். உங்கள் மரத்தில் `main` கிளை ஒரே கட்டமைப்பையும் மற்றும் சம்பந்தப்பட்ட அப்போஸ்ட்ராபி வேறுபாடுகளையும் கொண்டிருப்பதாக இருந்தால், நான் முழு கிரெடிட் அளிக்கிறேன்." + ] + } + } + ] + }, "tr_TR": { "childViews": [ { diff --git a/src/levels/mixed/jugglingCommits2.js b/src/levels/mixed/jugglingCommits2.js index a067b65b0..2c1c5b1ff 100644 --- a/src/levels/mixed/jugglingCommits2.js +++ b/src/levels/mixed/jugglingCommits2.js @@ -35,7 +35,8 @@ exports.level = { "sl_SI": "Žongliranje s Commiti #2", "it_IT": "Giocoliere di commit #2", "pl": "Żonglowanie commitami #2", - "tr_TR": "Commit Hokkabazlığı #2", + "ta_IN": "Commitகளுடன் வித்தைகள் #2", + "tr_TR": "Commit'leri Şekillendirme #2" }, "hint": { "en_US": "Don't forget to forward main to the updated changes!", @@ -56,6 +57,7 @@ exports.level = { "sl_SI": "Ne pozabi prestaviti main naprej na posodobljene spremembe.", "it_IT": "Non dimenticare di avanzare il main verso le ultime modifiche aggiornate!", "pl": "Nie zapomnij sforwardować maina do najnowszych zmian!", + "ta_IN": "Main ஐ புதுப்பிக்கப்பட்ட மாற்றங்களுக்கு முன்னேற்றமிடுவதை மறக்க வேண்டாம்!", "tr_TR": "Main'i yaptığınız değişikliklere ilerletmeyi unutmayın!", }, "startDialog": { @@ -785,11 +787,11 @@ exports.level = { ] }, "it_IT": { - childViews: [ + "childViews": [ { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "## Giocoliere di commit #2", "", "*Se non hai completato Giocoliere di commit #1 (il livello precedente), sei pregato di farlo prima di proseguire*", @@ -801,23 +803,23 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Ricorda che git cherry-pick creerà un qualsiasi commit del repository su HEAD (a condizione che il commit non sia un antenato di HEAD).", "", "Qui un breve demo per rinfrescare la memoria:", ], - afterMarkdowns: ["Grande! Andiamo avanti."], - command: "git cherry-pick C2", - beforeCommand: + "afterMarkdowns": ["Grande! Andiamo avanti."], + "command": "git cherry-pick C2", + "beforeCommand": "git checkout -b bugFix; git commit; git checkout main; git commit", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "In questo livello, dobbiamo fare amend di `C2` una volta, evitando di usare `rebase -i`. Lascerò a te il compito di scoprire come farlo! :D", "", "Ricorda, il numero esatto di apostrofi sul commit non sono importanti, solo le differenze tra essi. Per esempio, considererò l'albero che corrisponde a quello della soluzione ma che ha un apostrofo extra dappertutto.", @@ -826,6 +828,49 @@ exports.level = { }, ], }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Commit-ஐ யோசித்து நடத்தியல் #2", + "", + "*இறுதியில் Commit-ஐ யோசித்து நடத்தியல் #1 (முந்தைய நிலை) முடிக்கவில்லை என்றால், அதை முடித்துக்கொண்டு தொடரவும்*", + "", + "கடந்த நிலைகளில், commit-ஐ மறுசீரமைக்க `rebase -i` ஐ பயன்படுத்தினோம். நாம் மாற்ற விரும்பிய commit மேல் வந்தபோது, அதை எளிதாக --amend செய்து, விரும்பிய வரிசையில் மறுபடியும் சீரமைத்தோம்.", + "", + "இந்த நிலைத் திடீர் சிக்கல்களை உருவாக்கும் பல மறுசீரமைப்புகளை கொண்டுள்ளது. அதனால் `git cherry-pick` என்ற மற்றொரு முறையை பார்க்கலாம்." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "நீங்கள் நினைவில் வைக்க வேண்டும், `git cherry-pick` எந்த commit-ஐயும் HEAD இல் வைக்க முடியும் (அந்த commit HEAD இன் முன்னோடியல்லாமல் இருக்க வேண்டும்).", + "", + "இங்கே ஒரு சிறிய திரும்பப் பார்வை:" + ], + "afterMarkdowns": [ + "சிறந்தது! 이제 계속 진행합시다." + ], + "command": "git cherry-pick C2", + "beforeCommand": "git checkout -b bugFix; git commit; git checkout main; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இந்த நிலை-ல், நாம் `C2` ஐ ஒரே தடவையோ மாற்ற வேண்டும் ஆனால் `rebase -i` ஐ பயன்படுத்தாமல் அதை செய்ய வேண்டும். நான் உங்களுக்கு அதை கண்டுபிடிக்க விடுகிறேன்! :D", + "", + "நினைவில் வைக்கவும், commit-இல் உள்ள குறிப்பிட்ட எண்ணிக்கையான apostrophe-கள் (') முக்கியம் இல்லை, ஆனால் அந்த commit-இன் சமிக்ஞைகளில் உள்ள வித்தியாசங்கள் தான் முக்கியம். உதாரணமாக, நான் ஒரு மரத்தில், இலக்கு மரத்திற்கு பொருந்தும்போது, ஒரு கூடுதல் apostrophe உள்ளதையும் அளிப்பேன்." + ] + } + } + ] + }, "tr_TR": { "childViews": [ { diff --git a/src/levels/mixed/tags.js b/src/levels/mixed/tags.js index b844a754a..52f9a3aa0 100644 --- a/src/levels/mixed/tags.js +++ b/src/levels/mixed/tags.js @@ -21,6 +21,7 @@ exports.level = { "sl_SI": "Git Tagi", "it_IT": "Git Tag", "pl": "Tagi Gita", + "ta_IN": "Git டேக்கள்", "tr_TR": "Git Tagleri" }, "hint": { @@ -42,6 +43,7 @@ exports.level = { "sl_SI": "Checkoutaš lahko neposredno commit ali pa preprosto njegov tag!", "it_IT": "Puoi fare direttamente checkout del commit o semplicemente del tag!", "pl": "Możesz checkoutować commit bezpośrednio lub po prostu tag!", + "ta_IN": "நீங்கள் நேரடியாக commit ஐ அல்லது tag ஐ checkout செய்யலாம்!", "tr_TR": "İsterseniz direkt commit'e veya direkt tag'e checkout yapabilirsiniz!", }, "startDialog": { @@ -930,11 +932,11 @@ exports.level = { ] }, "it_IT": { - childViews: [ + "childViews": [ { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "## Git Tag", "", "Come hai già imparato nelle lezioni precedenti, i rami sono facili da spostare e puntano a commit differenti man mano che il lavoro avanza. I rami subiscono modifiche, spesso temporaneamente, ma sono sempre in continua evoluzione.", @@ -945,9 +947,9 @@ exports.level = { }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ 'Ci puoi scommettere! Git tag serve proprio a questo -- i tag contrassegnano in modo permanente dei commit "importanti" a cui puoi far riferimento come avviene con i rami.', "", 'Ancora più importante il fatto che non si spostano anche se vengono eseguiti nuovi commit. Non puoi selezionare un tag e aggiungere del lavoro su quel tag -- i tag esistono come ancore nell\'albero dei commit, e si riferiscono a determinati punti.', @@ -957,22 +959,22 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Creiamo un tag in `C1` che è la nostra versione 1 del prototipo.", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Ecco! Abbastanza facile. Abbiamo creato il tag `v1` che si riferisce al solo commit `C1`. Se non specifichi il commit, git creera il tag sul commit puntato da `HEAD`.", ], - command: "git tag v1 C1", - beforeCommand: "git commit", + "command": "git tag v1 C1", + "beforeCommand": "git commit", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "In questo livello riproduci gli stessi tag mostrati nell'obiettivo, e alla fine seleziona il tag `v1`. Presta attenzione a come vai nello stato di detached `HEAD` -- questo perché non puoi creare commit direttamente dal tag `v1.", "", "Nel livello successivo vedremo un utilizzo più interessante dell'uso dei tag.", @@ -981,6 +983,56 @@ exports.level = { }, ], }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Tagகள்", + "", + "முன்னிருப்புகளிலிருந்து நீங்கள் கற்றது போல், கிளைகள் எளிதாக நகர்த்தப்படக்கூடியவை மற்றும் வேலை முடிந்தபோது அவை பல்வேறு commit களை குறிப்பிடுகின்றன. கிளைகள் எளிதாக மாற்றப்படக்கூடியவை, பெரும்பாலும் தற்காலிகமாக இருக்கும், மற்றும் எப்போதும் மாறி கொண்டிருக்கும்.", + "", + "அப்படி இருந்தால், நீங்கள் உங்கள் திட்டத்தின் வரலாற்றில் *நிரந்தரமாக* புள்ளிகளை குறிக்க ஒரு வழி இருக்கிறதா என்று கேட்கலாம். முக்கிய வெளியீடுகள் மற்றும் பெரிய இணையதிகள் போன்றவற்றுக்கு, இந்த commit களை ஒரு கிளை விட நிரந்தரமான முறையில் குறிக்க எந்த வழி இருக்கின்றது?", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "நீங்கள் கேட்கும் கேள்விக்கு பதில் இருக்கின்றது! Git tagகள் இந்த பயன்பாட்டை ஆதரிக்கின்றன -- அவை (சில அளவில்) குறிப்பிட்ட commit களை \"மைல்கல்\" ஆக நிரந்தரமாக குறிக்க உதவுகின்றன, பின்னர் நீங்கள் அவற்றை கிளையின் போல தொடர்பு கொள்ளலாம்.", + "", + "மேலும் முக்கியமாக, அவை புதிய commit களை உருவாக்கும்போது மாறாது. நீங்கள் ஒரு tag ஐ \"check out\" செய்து, அதன் மீது பணியாற்ற முடியாது -- tagகள் commit மரத்தில் குறிப்பிட்ட இடங்களை அடையாளப்படுத்தும் பிணைகளாக இருப்பவை." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "நாம் `C1` இல் ஒரு tag உருவாக்க முயற்சிக்கலாம், இது எங்கள் பதிப்பு 1 முன் வடிவம்." + ], + "afterMarkdowns": [ + "இங்கே! மிகவும் எளிதாக உள்ளது. நாம் tag ஐ `v1` என்று பெயரிட்டோம் மற்றும் commit ஐ `C1` க்குத் தெளிவாகக் குறிப்பிட்டோம். commit ஐ விட்டுவிடினால், git அது எந்த `HEAD` இல் இருக்கிறதோ அதையே பயன்படுத்தும்." + ], + "command": "git tag v1 C1", + "beforeCommand": "git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இந்த நிலையில், குறிக்கவும் `v1` ஐ check out செய்யவும் குறித்த tag களை உருவாக்கவும். நீங்கள் எப்படி detached `HEAD` நிலைக்கு செல்லுவதை கவனிக்கவும் -- இது `v1` tag க்கு நேரடியாக commit செய்ய முடியாது என்பதினால்.", + "", + "அடுத்த நிலைல் நாம் tag களுக்கான ஒரு அதிக ஆர்வமான பயன்பாட்டைப் பார்ப்போம்." + ] + } + } + ] + }, "tr_TR": { "childViews": [ { diff --git a/src/levels/rampup/cherryPick.js b/src/levels/rampup/cherryPick.js index 8c282972a..b969ee8e0 100644 --- a/src/levels/rampup/cherryPick.js +++ b/src/levels/rampup/cherryPick.js @@ -25,6 +25,7 @@ exports.level = { "sl_SI": "Uvod v Cherry-pick", "it_IT": "Introduzione al cherry-pick", "pl": "Wprowadzenie do cherry-pick", + "ta_IN": "Cherry-pick அறிமுகம்", "tr_TR": "Cherry-pick işlemine giriş" }, "hint": { @@ -33,6 +34,7 @@ exports.level = { "de_DE": "git cherry-pick gefolgt von Commit-Namen.", "ja": "git cherry-pickの後にコミット名を追加", "es_AR": "git cherry-pick seguido de los nombres de los commits", + "es_MX": "¡git cherry-pick seguido de los nombres de los commits!", "es_ES": "git cherry-pick seguido de los nombres de los commits", "pt_BR": "git cherry-pick seguido dos nomes dos commits", "gl": "git cherry-pick seguido das referencias a commits", @@ -45,6 +47,7 @@ exports.level = { "sl_SI": "git cherry-pick nato pa imena commitov.", "it_IT": "git cherry-pick seguito dai nomi dei commit!", "pl": "git cherry-pick a po nim nazwy commitów!", + "ta_IN": "git cherry-pick க்கு பிறகு commit பெயர்களை பின்தொடரவும்!", "tr_TR": "git cherry-pick komutunun ardından, seçilen commit'lerin adlarını yazın!" }, "startDialog": { @@ -1033,9 +1036,9 @@ exports.level = { }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "## Git Cherry-pick", "", "Il primo comando si chiama `git cherry-pick`. Il comando ha il seguente aspetto:", @@ -1050,23 +1053,23 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "In questo repository abbiamo del lavoro nel ramo `side` che vogliamo copiare nel `main`. Questo può essere eseguito tramite rebase (che abbiamo già imparato), ma vediamo il cherry-pick all'opera.", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Ecco qua! Volevamo i commit `C2` e `C4` e git li ha copiati sotto di noi. Semplicissimo!", ], - command: "git cherry-pick C2 C4", - beforeCommand: + "command": "git cherry-pick C2 C4", + "beforeCommand": "git checkout -b side; git commit; git commit; git commit; git checkout main; git commit;", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Per completare questo livello, copia il lavoro dai tre rami sul main. Puoi vedere quali sono i commit richiesti guardando l'obiettivo.", "", ], @@ -1075,6 +1078,61 @@ exports.level = { ], }, }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## பணியை இங்கே எடுத்து போகும் முறை", + "", + "இப்போது நாம் git இன் அடிப்படை அம்சங்களை கற்றுக்கொண்டோம் - commit செய்தல், கிளைகள் உருவாக்குதல் மற்றும் source tree இல் சுற்றிக்கொள்வது. இந்த அடிப்படை கான்செப்டுகள் git repository களைப் பயன்படுத்துவதற்கான 90% சக்தியைப் பயன்படுத்துவதற்கும், டெவலப்பர்களின் முக்கிய தேவைகளைப் பூர்த்தி செய்யத் தயாராக இருக்கின்றன.", + "", + "ஆனால், இந்த 10% கெஞ்சுவதன் மூலம் சிக்கலான workflow களின் போது (அல்லது நீங்கள் ஒரு சிக்கலில் இருந்து வெளியே வரும்போது) மிகவும் பயனுள்ளதாக இருக்கும். அடுத்த கான்செப்ட் நாம் கற்றுக்கொள்ளப்போகும் ஒன்று \"பணியை இங்கே எடுத்து போகும் முறை\" - மற்றொரு வார்த்தையில், இது டெவலப்பர்களுக்கு \"இந்தப் பணியை இங்கே, அந்தப் பணியை அங்கே\" எனச் சொல்லுவதற்கான ஒரு முறை.", + "", + "இது ஒரு பெரிய விஷயம் போல் தெரிந்தாலும், இது மிகவும் எளிய கான்செப்ட்டாகும்." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Cherry-pick", + "", + "இந்த தொடரில் முதல் கட்டளையான `git cherry-pick` ஆகும். இது பின்வரும் வடிவத்தில் இருக்கும்:", + "", + "* `git cherry-pick <...>`", + "", + "இது உங்கள் தற்போதைய இடத்திற்கு கீழே உள்ள commit களை நகலெடுக்க விரும்புவதாகச் சொல்லுவதற்கு ஒரு மிகவும் நேரடியாக வழி ஆகும் (`HEAD`). நான் தனிப்பட்ட முறையில் `cherry-pick` ஐ விரும்புகிறேன் ஏனெனில் இது சிறிது மாயாஜாலம் கொண்டது மற்றும் எளிதில் புரிந்துகொள்ளக்கூடியது.", + "", + "வ demonstration பார்க்கலாம்!" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "இங்கே ஒரு repository உள்ளது, இதில் நாம் `side` கிளையில் உள்ள சில பணிகளை `main` கிளைக்கு நகலெடுக்க விரும்புகிறோம். இது ஒரு rebase மூலம் சாதிக்க முடியும் (நாம் ஏற்கனவே கற்றுக்கொண்டது), ஆனால் `cherry-pick` எப்படி செயல்படுகிறது என்பதைப் பார்க்கலாம்." + ], + "afterMarkdowns": [ + "அது போதும்! நாம் `C2` மற்றும் `C4` commit களை வேண்டினோம், மற்றும் git அவற்றை எளிதாக நமக்கு கீழே நகலெடுத்தது. மிக எளிதானது!" + ], + "command": "git cherry-pick C2 C4", + "beforeCommand": "git checkout -b side; git commit; git commit; git commit; git checkout main; git commit;" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இந்த நிலையை முடிக்க, காட்டப்பட்டுள்ள மூன்று கிளைகளிலிருந்து சில பணிகளை `main` கிளைக்கு நகலெடுக்கவும். நாம் எவை commit செய்கின்றோம் என்பதை நீங்கள் goal visualization ஐப் பார்த்து தெரிந்துகொள்ளலாம்." + ] + } + } + ] + }, "tr_TR": { "childViews": [ { diff --git a/src/levels/rampup/detachedHead.js b/src/levels/rampup/detachedHead.js index 619117c9a..7a9e67b07 100644 --- a/src/levels/rampup/detachedHead.js +++ b/src/levels/rampup/detachedHead.js @@ -20,11 +20,14 @@ exports.level = { 'vi': "Tháo đầu cái nào", "sl_SI": "Ločevanje tvoje glave - HEAD-a", "it_IT": "Perdere la testa (HEAD)", - "pl": "Odczep sobie HEAD" + "pl": "Odczep sobie HEAD", + "tr_TR": "HEAD'i Ayır", + "ta_IN": "உங்கள் HEAD ஐப் பிரிகொள்ளுங்கள்" }, "hint": { "en_US": "Use the label (hash) on the commit for help!", "es_AR": "¡Usá la etiqueta (hash) sobre el commit para ayudarte!", + "es_MX": "¡Usa la etiqueta (hash) sobre el commit para ayudarte!", "es_ES": "¡Usa la etiqueta (hash) sobre el commit para ayudarte!", "pt_BR": "Use o identificador (hash) sobre o commit para te ajudar!", "gl": "¡Usa a etiqueta (hash) sobre o commit para axudarte!", @@ -40,6 +43,8 @@ exports.level = { "sl_SI": "Uporabi oznako (hash) commita za pomoč!", "it_IT": "Usa l'etichetta (hash) sul commit per aiutarti!", "pl": "Użyj nazwy commita (hasza)!", + "ta_IN": "உங்களுக்கு உதவ commit இன் லேபிள் (hash) ஐப் பயன்படுத்துங்கள்!", + "tr_TR": "Yardım için commit üzerindeki etiket (hash) değerini kullanın!" }, "startDialog": { "en_US": { @@ -1439,6 +1444,149 @@ exports.level = { }, ], }, - + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git'te Hareket Etmek", + "", + "Git'in daha ileri düzey özelliklerine geçmeden önce, projenizi temsil eden commit ağacında farklı şekillerde nasıl hareket edebileceğinizi anlamak önemlidir.", + "", + "Bir kez hareket etmeye alıştığınızda, diğer git komutlarıyla olan gücünüz de artacaktır!" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## HEAD", + "", + "İlk olarak \"HEAD\" konusunu ele alalım. HEAD, şu anda checkout yaptığınız commit'i ifade eden sembolik bir isimdir -- temelde üzerinde çalıştığınız commit'tir.", + "", + "HEAD her zaman, çalışma ağacında yansıyan en son commit'e işaret eder. Çoğu git komutu, çalışma ağacını değiştirdiğinde HEAD'i değiştirerek başlar.", + "", + "Normalde HEAD bir dal adına işaret eder (örneğin bugFix). Bir commit yaptığınızda, bugFix'in durumu değişir ve bu değişiklik HEAD üzerinden görünür." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Bunu eylemde görelim. Burada HEAD'i bir commit öncesinde ve sonrasında göstereceğiz." + ], + "afterMarkdowns": [ + "Görüyorsunuz! HEAD, `main` dalımızın altındaymış." + ], + "command": "git checkout C1; git checkout main; git commit; git checkout C2", + "beforeCommand": "" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "### HEAD'i Ayırma", + "", + "HEAD'i ayırmak, onu bir dal yerine bir commit'e bağlamak anlamına gelir. Bu önceki haliyle şöyle görünüyordu:", + "", + "HEAD -> main -> C1" + ], + "afterMarkdowns": [ + "Ve şimdi şu şekilde:", + "", + "HEAD -> C1" + ], + "command": "git checkout C1", + "beforeCommand": "" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu bölümü tamamlamak için, HEAD'i `bugFix` dalından ayıralım ve yerine commit'e bağlayalım.", + "", + "Bu commit'i hash'i ile belirtin. Her commit'in hash'i, commit'i temsil eden dairede gösterilir." + ] + } + } + ] + }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git இல் இயக்கம்", + "", + "Git இன் மேலும் முன்னேற்றமான அம்சங்களுக்கு செல்லும் முன், உங்கள் திட்டத்தை பிரதிபலிக்கும் commit மரத்தில் எவ்வாறு இயக்கம் செய்ய வேண்டும் என்பதைக் புரிந்துகொள்வது முக்கியம்.", + "", + "ஒரு முறை நீங்கள் இயக்கத்திற்கு பழகிய பின்னர், மற்ற git கட்டளைகளின் மூலம் உங்கள் சக்தி பெருகும்!" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## HEAD", + "", + "முதலில், \"HEAD\" பற்றிய பேச்சு வேண்டியது அவசியம். HEAD என்பது தற்போது `checkout` செய்யப்படும் commit இன் செம்மையான பெயராகும் -- அதாவது நீங்கள் எந்த commit இல் வேலை செய்கிறீர்கள் என்பதை குறிக்கின்றது.", + "", + "HEAD எப்போதும், வேலை செய்வதை பிரதிபலிக்கும் கடைசியாக commit செய்யப்பட்ட commit இற்கே இட்டுப்போகின்றது. பெரும்பாலான git கட்டளைகள், வேலை செய்யும் மரத்தை மாற்றும்போது HEAD ஐ மாற்றி தொடங்குகின்றன.", + "", + "பொதுவாக HEAD என்பது ஒரு கிளையின் பெயரைக் குறிக்கின்றது (உதாரணமாக bugFix). நீங்கள் commit செய்தால், அந்த கிளையின் நிலை மாற்றப்படுகிறது மற்றும் அந்த மாற்றம் HEAD மூலம் காட்டப்படுகின்றது." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "இதை செயல்பாட்டில் பார்க்கலாம். இங்கே நாம் commit ஆக்கும் முன் மற்றும் பிறகு HEAD ஐ காட்டுவோம்." + ], + "afterMarkdowns": [ + "பாருங்கள்! HEAD எப்போது `main` கிளையின் கீழ் மறைந்திருந்தது." + ], + "command": "git checkout C1; git checkout main; git commit; git checkout C2", + "beforeCommand": "" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "### HEAD ஐ தனித்துவமாக்குதல்", + "", + "HEAD ஐ தனித்துவமாக்குதல் என்பது அதை ஒரு commit க்கு கிளையைப் பதிலாக இணைக்கவையாகும். இது முன்னதாக எப்படி இருந்தது என்பதைப் பாருங்கள்:", + "", + "HEAD -> main -> C1" + ], + "afterMarkdowns": [ + "இப்போது இது:", + "", + "HEAD -> C1" + ], + "command": "git checkout C1", + "beforeCommand": "" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இந்த நிலையை முடிக்க, HEAD ஐ `bugFix` கிளையிலிருந்து தனித்துவமாக்கி commit க்கு இணைக்கவும்.", + "", + "இந்த commit ஐ அதன் hash மூலம் குறிப்பிடுங்கள். ஒவ்வொரு commit இன் hash அந்த commit ஐ பிரதிபலிக்கும் வட்டத்தில் காட்டப்படுகிறது." + ] + } + } + ] + } } }; diff --git a/src/levels/rampup/interactiveRebase.js b/src/levels/rampup/interactiveRebase.js index dde17c7e8..f71bb197d 100644 --- a/src/levels/rampup/interactiveRebase.js +++ b/src/levels/rampup/interactiveRebase.js @@ -24,7 +24,9 @@ exports.level = { "vi": "bạn có thể sử dụng tham chiếu tương đối (HEAD~) hoặc nhánh để chỉ định mục tiêu rebase", "sl_SI": "Uporabiš lahko bilokateri branch ali relativno referenco (HEAD~), da določiš cilj za rebase.", "it_IT": "Puoi usare sia i rami che i riferimenti relativi (HEAD~) per specificare l'obiettivo del rebase", - "pl": "Możesz użyć gałęzi lub referencji względnych (HEAD~), aby określić cel rebase'a" + "pl": "Możesz użyć gałęzi lub referencji względnych (HEAD~), aby określić cel rebase'a", + "ta_IN": "நீங்கள் rebase இலக்கை குறிப்பதற்கு கிளைகள் அல்லது பொருந்திய ரெஃபரன்ஸ்கள் (HEAD~) பயன்படுத்த முடியும்", + "tr_TR": "Rebase hedefini belirtmek için ya dalları ya da göreli referansları (HEAD~) kullanabilirsiniz" }, "name": { "en_US": "Interactive Rebase Intro", @@ -45,6 +47,8 @@ exports.level = { "sl_SI": "Interaktivni uvod v Rebase", "it_IT": "Introduzione al rebase interattivo", "pl": "Wprowadzenie do interaktywnego rebase'a", + "ta_IN": "இன்டராக்டிவ் ரீபெஸ் அறிமுகம்", + "tr_TR": "Etkileşimli Rebase'e Giriş" }, "startDialog": { "en_US": { @@ -1160,11 +1164,11 @@ exports.level = { ] }, "it_IT": { - childViews: [ + "childViews": [ { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "## Git rebase interattivo", "", "Git cherry-pick è fantastico quando sai quale commit vuoi (_e_ conosci l'hash corrispondente) -- è difficile avere di meglio.", @@ -1176,9 +1180,9 @@ exports.level = { }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Fare rebase interattivo significa usare il comando `rebase` con l'opzione `-i`.", "", "Se aggiungi quest'opzione, git aprirà un'interfaccia per mostrarti quali commit stanno per essere copiati sotto il commit su cui vuoi fare il rebase. Verrà anche mostrato l'hash e il messaggio del commit, il che è grandioso per darci l'idea di cosa è cosa", @@ -1188,9 +1192,9 @@ exports.level = { }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Quando la finestra si apre, hai la possibilità di fare due cose:", "", "* Puoi riordinare i commit modificandone l'ordine (drag & drop con il mouse).", @@ -1205,27 +1209,159 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Quando premi il pulsante, apparirà la finestra del rebase interattivo. Riordina qualche commit (o sentiti libero di scartarne qualcuno) e vediamo il risultato!", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Boom! Git ha fatto la copia nell'ordine esatto che hai specificato nell'interfaccia grafica.", ], - command: "git rebase -i HEAD~4 --aboveAll", - beforeCommand: "git commit; git commit; git commit; git commit", + "command": "git rebase -i HEAD~4 --aboveAll", + "beforeCommand": "git commit; git commit; git commit; git commit", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Per concludere questo livello, esegui un rebase interattivo e raggiungi l'obiettivo mostrato. Ricordati che puoi sempre fare `undo` o `reset` per correggere gli errori :D", ], }, }, ], }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Etkileşimli Rebase", + "", + "Git cherry-pick, hangi commit'leri istediğinizi biliyorsanız (ve onların karşılık gelen hash'lerini de biliyorsanız) harikadır – sağladığı sadeliği geçmek zordur.", + "", + "Peki, hangi commit'leri istediğinizi bilmediğiniz bir durumla karşılaşırsanız ne olur? Neyse ki git bu konuda da sizi destekliyor! Bunu çözmek için etkileşimli rebase kullanabiliriz – bu, rebase yapacağınız commit'lerin bir serisini gözden geçirmenin en iyi yoludur.", + "", + "Hadi detaylara dalalım..." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Etkileşimli rebase, git'in `rebase` komutunu `-i` seçeneği ile kullanması anlamına gelir.", + "", + "Bu seçeneği eklediğinizde, git rebase'in hedefinin altına kopyalanacak commit'leri gösteren bir kullanıcı arayüzü açar. Bu arayüz, commit'lerin hash'lerini ve mesajlarını da gösterir, bu da neyin ne olduğunu anlamak için harikadır.", + "", + "Gerçek git'te, bu kullanıcı arayüzü, `vim` gibi bir metin düzenleyicisinde bir dosya açmak anlamına gelir. Bizim amacımız için ise, aynı şekilde davranan küçük bir iletişim kutusu oluşturdum." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Etkileşimli rebase iletişim kutusu açıldığında, eğitim uygulamamızda iki şey yapabilirsiniz:", + "", + "* Commit'leri, UI'de sıralarını değiştirerek (fareyle sürükleyip bırakarak) yeniden sıralayabilirsiniz.", + "* Tüm commit'leri tutabilir veya belirli olanları silebilirsiniz. İletişim kutusu açıldığında, her commit, yanındaki `pick` düğmesinin aktif olmasıyla dahil edilmek üzere ayarlanır. Bir commit'i silmek için, `pick` düğmesini kapatın.", + "", + "*Gerçek git'te etkileşimli rebase ile daha birçok şey yapılabilir, örneğin commit'leri birleştirme (squash), commit mesajlarını değiştirme ve hatta commit'leri düzenleme. Ancak bizim amacımız için yalnızca yukarıdaki iki işlemi odaklanacağız.*", + "", + "Harika! Hadi bir örneğe bakalım." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Düğmeye tıkladığınızda, etkileşimli bir rebase penceresi açılacaktır. Bazı commit'leri sıralayın (veya bazılarını seçmeyin) ve sonucu görün!" + ], + "afterMarkdowns": [ + "Boom! Git, commit'leri tam olarak UI üzerinden belirttiğiniz şekilde kopyaladı." + ], + "command": "git rebase -i HEAD~4 --aboveAll", + "beforeCommand": "git commit; git commit; git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu bölümü bitirmek için etkileşimli rebase yapın ve hedef görselleştirmesinde gösterilen sıralamayı elde edin. Unutmayın, her zaman `undo` veya `reset` komutlarını kullanarak hataları düzeltebilirsiniz :D" + ] + } + } + ] + }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git இன்டராக்டிவ் ரீபெஸ்", + "", + "நீங்கள் எந்த commitகளையும் விரும்புகிறீர்கள் என்று தெரிந்திருப்பின் (அல்லது அவற்றின் hashகளைப் பெறுவது தெரிந்திருந்தால்) Git cherry-pick அருமையாக இருக்கிறது -- அது வழங்கும் எளிமையை ஆஸ்தி வைத்து எதிர்க்க முடியாது.", + "", + "ஆனால் நீங்கள் எந்த commitகளையும் விரும்புகிறீர்கள் என்று தெரியாத சந்தர்ப்பத்தில் என்ன செய்வது? அதற்காக Git இல் இன்டராக்டிவ் ரீபெசிங் உதவிகரமாக இருக்கும்! இது நீங்கள் ரீபெஸ் செய்யும் commitகளை பார்வையிடுவதற்கான சிறந்த வழி.", + "", + "விவரங்களுக்குள் விரைவில் செல்கின்றோம்..." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "எல்லா இன்டராக்டிவ் ரீபெஸ் என்று பொருள் Git `rebase` கமாண்டுடன் `-i` விருப்பத்தைப் பயன்படுத்துவதாகும்.", + "", + "இந்த விருப்பத்தை சேர்த்தால், Git உங்கள் ரீபெஸ் இலக்கின் கீழ் படிபடும் commitகளைக் காண்பிக்கும் UIவை திறக்கும். அது commit hashes மற்றும் messagesஐவும் காட்டுகிறது, இது என்னவென்றால் என்ன என்பதை அறிய உதவும்.", + "", + "சதா Git-இல், UI விண்டோவாக இருந்தால், அது `vim` போன்ற ஒரு உரைத் தொகுப்பியில் ஒரு கோப்பைத் திறப்பதாகும். ஆனால் இங்கு, நான் அதேவாறு செயல்படும் சிறிய டயலாக் விண்டோவை உருவாக்கினேன்." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இன்டராக்டிவ் ரீபெஸ் டயலாக் திறக்கப்பட்டவுடன், நீங்கள் நம்முடைய கல்வி பயன்பாட்டில் இரண்டு செயல்களை செய்ய முடியும்:", + "", + "* நீங்கள் commitகளை UIவில் அவர்களின் வரிசையை மாற்றுவதன் மூலம் திருப்பிசெய்யலாம் (முழுவதும் திரும்ப வைக்கும் மாறும்போது).", + "* நீங்கள் அனைத்து commitகளையும் வைத்திருப்பதற்கும், குறிப்பிட்ட commitகளை விட்டு வைக்க முடியும். டயலாக் திறக்கும்போது, ஒவ்வொரு commitக்கும் `pick` பொத்தானுடன் சேர்க்கப்பட்டுள்ளது.", + "", + "*உண்மையான Git-இல் இன்டராக்டிவ் ரீபெஸில் பல மேலதிக செயல்களையும் செய்ய முடியும், உதாரணமாக commitகளை சேர்க்க, commit messageஐ திருத்த, commitகளை திருத்துவதற்கும் கூட. ஆனால் இங்கு, நாம் மேலே குறிப்பிடப்பட்ட இரண்டு செயல்களுக்கே கவனம் செலுத்துவோம்.*", + "", + "சிறப்பாக! ஒரு உதாரணத்தைப் பார்ப்போம்." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "பொத்தானை அழுத்தினால், ஒரு இன்டராக்டிவ் ரீபெஸ் விண்டோ திறக்கப்படும். commitகளை வரிசைப்படுத்துங்கள் (அல்லது அவற்றை unpick செய்யவும்) மற்றும் முடிவைப் பாருங்கள்!" + ], + "afterMarkdowns": [ + "பூம்! Git commitகளை UI வழியாக நீங்கள் குறிப்பிடும் வகையில் அதேபோல கொடுத்து விடும்." + ], + "command": "git rebase -i HEAD~4 --aboveAll", + "beforeCommand": "git commit; git commit; git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இந்த நிலையை முடிக்க, ஒரு இன்டராக்டிவ் ரீபெஸ் செய்யவும் மற்றும் இலக்கக் காட்சி காட்டிய வரிசையை அடையவும். தவறுகளை சரிசெய்ய `undo` அல்லது `reset` எப்போது வேண்டுமானாலும் பயன்படுத்தலாம் :D" + ] + } + } + ] + } } }; diff --git a/src/levels/rampup/relativeRefs.js b/src/levels/rampup/relativeRefs.js index 588b099ed..c2d6c8443 100644 --- a/src/levels/rampup/relativeRefs.js +++ b/src/levels/rampup/relativeRefs.js @@ -21,6 +21,8 @@ exports.level = { "sl_SI": "Relativne Reference (^)", "it_IT": "Riferimenti relativi (^)", "pl": "Referencje względne (^)", + "tr_TR": "İlgili Referanslar (^)", + "ta_IN": "உதவிக்குறிப்பு குறிப்பிடல்கள் (^)" }, "hint": { "en_US": "Remember the Caret (^) operator!", @@ -28,6 +30,7 @@ exports.level = { "ja": "相対リファレンス(^)を思い出して!", "de_DE": "Denk an den Dach-Operator (^)!", "es_AR": "¡No te olvides del operador ^!", + "es_MX": "¡No olvides el operador ^!", "es_ES": "¡No te olvides del operador ^!", "pt_BR": "Não se esqueça do operador circunflexo (^)", "gl": "Non se esqueza do operador circunflexo (^)", @@ -40,6 +43,8 @@ exports.level = { "sl_SI": "Spomni se na (^) operator!", "it_IT": "Ricorda l'operatore Caret(^)... l'accento circonflesso!", "pl": "Pamiętaj o operatorze wstawienia (^)!", + "ta_IN": "உதவிக்குறிப்பை (^), மறக்காதீர்கள்!", + "tr_TR": "^ operatörünü hatırlayın!" }, "startDialog": { "en_US": { @@ -1318,11 +1323,11 @@ exports.level = { ] }, "it_IT": { - childViews: [ + "childViews": [ { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "## Riferimenti relativi", "", "Spostarsi in Git specificando l'hash dei commit può essere una scocciatura. Nella vita vera non avrai un bell'albero con tutti i commit sullo schermo, dovrai usare `git log` per vedere gli hash.", @@ -1334,9 +1339,9 @@ exports.level = { }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Come detto prima, specificare un commit tramite l'hash non è assolutamente il modo migliore, ragion per cui Git ha i riferimenti relativi. Sono stupendi!", "", "Tramite i riferimenti relativi, puoi partire da un punto facile da ricordare (per esempio dal ramo `bugFix` o `HEAD`) e procedere da lì.", @@ -1349,9 +1354,9 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Diamo un occhiata all'operatore (^) chiamato Caret o accento circonflesso. Ogni volta che lo aggiungi a un riferimento, stai dicendo a Git di cercare il genitore del commit specificato.", "", 'Quindi, dire `main^` è equivalente a dire "il primo genitore di `main`".', @@ -1360,31 +1365,31 @@ exports.level = { "", "Selezioniamo il commit sopra main.", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Colpito! Fatto. Mille volte meglio che scrivere l'hash.", ], - command: "git checkout main^", - beforeCommand: "git commit", + "command": "git checkout main^", + "beforeCommand": "git commit", }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Puoi considerare `HEAD` come un riferimento relativo. Usiamolo un paio di volte per risalire l'albero dei commit.", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Facile! Possiamo viaggiare in dietro nel tempo con `HEAD^`", ], - command: + "command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^", - beforeCommand: "git commit; git commit", + "beforeCommand": "git commit; git commit", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Per completare questo livello, seleziona il commit padre di `bugFix`. Questo provocherà una detached `HEAD`.", "", "Puoi usare l'hash se vuoi, ma prova a usare i riferimenti relativi!", @@ -1393,6 +1398,80 @@ exports.level = { }, ], }, - + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Göreceli Referanslar", + "", + "Git'te commit hash'lerini belirterek gezinmek biraz sıkıcı olabilir. Gerçek dünyada terminalin yanında güzel bir commit ağacı görselleştirmesi olmayacağı için hash'leri görmek için `git log` kullanmanız gerekecek.", + "", + "Ayrıca, hash'ler gerçek Git dünyasında genellikle çok daha uzun olur. Örneğin, önceki seviyeyi oluşturan commit'in hash'i `fed2da64c0efc5293610bdd892f82a58e8cbc5d8`. Pek de kolay okunabilir değil...", + "", + "İyi tarafı, Git'in hash'lerle akıllı olmasıdır. Sadece commit'i benzersiz şekilde tanımlayabilen hash'in yeterince uzun kısmını belirtmeniz gerekir. Yani yukarıdaki uzun string yerine `fed2` yazabilirim." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Dediğim gibi, commit'leri hash'leriyle belirtmek her zaman en pratik şey değildir, bu yüzden Git göreceli referansları sunar. Bunlar harikadır!", + "", + "Göreceli referanslarla, hatırlanması kolay bir yerden (mesela `bugFix` dalı ya da `HEAD`) başlayabilir ve buradan ilerleyebilirsiniz.", + "", + "Göreceli commit'ler güçlüdür, ancak burada iki basit örneğini sunacağız:", + "", + "* `^` ile bir commit yukarıya hareket etmek", + "* `~` ile birden fazla commit yukarıya hareket etmek" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "İlk olarak Caret (^) operatörüne bakalım. Her defasında bu operatörü bir referans adının sonuna eklediğinizde, Git'e belirtilen commit'in ebeveynini bulmasını söylüyorsunuz.", + "", + "`main^` demek, \"`main`'in ilk ebeveyni\" demektir.", + "", + "`main^^` ise `main`'in büyükbabasıdır (ikinci kuşak atasal commit).", + "", + "Hadi `main` üzerindeki bir commit'e bakalım." + ], + "afterMarkdowns": [ + "Boom! İşte bu kadar. Commit hash'ini yazmaktan çok daha kolay." + ], + "command": "git checkout main^", + "beforeCommand": "git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "`HEAD`'i de göreceli bir referans olarak kullanabilirsiniz. Hadi bunu birkaç kez kullanalım ve commit ağacında yukarıya doğru hareket edelim." + ], + "afterMarkdowns": [ + "Kolay! `HEAD^` ile zaman içinde geri gidebiliriz." + ], + "command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^", + "beforeCommand": "git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu seviyeyi tamamlamak için, `bugFix`'in ebeveyn commit'ine göz atın. Bu, `HEAD`'i ayıracaktır.", + "", + "Hash'i belirtmek isterseniz belirtebilirsiniz, ancak göreceli referansları kullanmayı deneyin!" + ] + } + } + ] + } } }; diff --git a/src/levels/rampup/relativeRefs2.js b/src/levels/rampup/relativeRefs2.js index df280e09a..ea1287714 100644 --- a/src/levels/rampup/relativeRefs2.js +++ b/src/levels/rampup/relativeRefs2.js @@ -8,6 +8,7 @@ exports.level = { "zh_CN": "这一关至少要用到一次直接引用 (即哈希值)", "zh_TW": "這一關至少要用到一次直接參考(hash)", "es_AR": "Vas a necesitar usar al menos una referencia directa (hash) para completar este nivel", + "es_MX": "Vas a necesitar usar al menos una referencia directa (hash) para completar este nivel", "es_ES": "Vas a necesitar usar al menos una referencia directa (hash) para completar este nivel", "pt_BR": "Você precisará usar pelo menos uma referência direta (hash) para completar este nível", "gl": "Precisarás usar polo menos unha referencia directa (hash) para completar este nivel", @@ -18,9 +19,10 @@ exports.level = { "uk": "Тобі потрібно використати як мінімум одне пряме посилання (хеш) щоб пройти цей рівень", "vi": "Bạn sẽ cần dùng ít nhất một tham chiếu trực tiếp (mã băm) để hoàn thành cấp độ này", "sl_SI": "Moral boš uporabiti vsaj eno direktno referenco (hash) za dokončanje te stopnje.", - "it_IT": - "Dovrai usare almeno un riferimento diretto (hash) per completare questo livello", + "it_IT": "Dovrai usare almeno un riferimento diretto (hash) per completare questo livello", "pl": "Aby ukończyć ten poziom, musisz użyć co najmniej jednej bezpośredniej referencji (hasza).", + "ta_IN": "இந்த நிலவை முடிக்க குறைந்தது ஒரு நேரடி குறிப்பு (ஹாஷ்) பயன்படுத்த வேண்டும்", + "tr_TR": "Bu seviyeyi tamamlamak için en az bir doğrudan referans (hash) kullanmanız gerekecek" }, "name": { "en_US": "Relative Refs #2 (~)", @@ -40,7 +42,9 @@ exports.level = { "vi": "Tham chiếu tương đối #2 (~)", "sl_SI": "Relativne Reference #2 (~)", "it_IT": "Riferimenti relativi #2 (~)", - "pl": "Referencje względne #2 (~)" + "pl": "Referencje względne #2 (~)", + "ta_IN": "இணைக்கப்பட்ட குறிப்பு #2 (~)", + "tr_TR": "Göreli Referanslar #2 (~)" }, "startDialog": { "en_US": { @@ -1202,11 +1206,11 @@ exports.level = { ] }, "it_IT": { - childViews: [ + "childViews": [ { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ '### L\'operatore "~"', "", "Nel caso in cui voglia risalire di più livelli l'albero dei commit, è una seccatura aggiungere `^` per ogni salto, per questo Git ha l'operatore tilde(~).", @@ -1217,20 +1221,20 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "Specifichiamo il numero di commit con `~`.", ], - afterMarkdowns: ["Fatto! Breve ed efficace -- i riferimenti relativi sono stupendi."], - command: "git checkout HEAD~4", - beforeCommand: "git commit; git commit; git commit", + "afterMarkdowns": ["Fatto! Breve ed efficace -- i riferimenti relativi sono stupendi."], + "command": "git checkout HEAD~4", + "beforeCommand": "git commit; git commit; git commit", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "### Forzatura dei rami (branch forcing)", "", "Ormai sei un esperto di riferimenti relativi, quindi facciamone realmente *uso* per qualcosa.", @@ -1244,21 +1248,21 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: ["Vediamolo in azione."], - afterMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": ["Vediamolo in azione."], + "afterMarkdowns": [ "Ecco qua! I riferimenti relativi ci permettono facilmente di specificare `C1` e il branch forcing (`-f`) ci da modo di spostare rapidamente il ramo su quella posizione.", ], - command: "git branch -f main HEAD~3", - beforeCommand: + "command": "git branch -f main HEAD~3", + "beforeCommand": "git commit; git commit; git commit; git checkout -b bugFix", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Ora che hai visto i riferimenti relativi e il branch forcing, usiamoli per completare il prossimo livello.", "", "Per completare questo livello, sposta `HEAD`, `main`, e `bugFix` alla loro destinazione finale mostrata nell'obiettivo.", @@ -1267,6 +1271,75 @@ exports.level = { }, ], }, - + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### \"~\" operatörü", + "", + "Diyelim ki commit ağacında çok fazla seviye yukarı gitmek istiyorsunuz. `^` operatörünü birkaç kez yazmak zahmetli olabilir, bu yüzden Git ayrıca tilde (~) operatörünü sunuyor.", + "", + "Tilde operatörü (isteğe bağlı olarak) gitmek istediğiniz ebeveyn sayısını belirten bir sayı alır. Hadi bunu görelim." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Şimdi `~` ile birden fazla commit geriye gidelim." + ], + "afterMarkdowns": [ + "Boom! Ne kadar kısa ve öz -- göreli referanslar harika." + ], + "command": "git checkout HEAD~4", + "beforeCommand": "git commit; git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Branch zorlaması", + "", + "Artık göreli referanslar konusunda uzmansınız, o zaman bunları bir şeyler için *kullanalım*.", + "", + "Göreli referansları en sık kullandığım yollarından biri de branch'leri taşımak. `-f` seçeneği ile bir branch'i bir commit'e doğrudan yeniden atayabilirsiniz. Örneğin:", + "", + "`git branch -f main HEAD~3`", + "", + "Bu, main branch'ini HEAD'in üç ebeveyn gerisine zorla taşır.", + "", + "*Not: Gerçek bir git ortamında `git branch -f` komutu şu anki branch'iniz için geçerli değildir.*" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Önceki komutu uygulamalı olarak görelim." + ], + "afterMarkdowns": [ + "İşte böyle! Göreli referanslar bize `C1`'e başvurmanın kısa bir yolunu sundu ve branch zorlaması (`-f`) ise branch'i hızlıca o konuma taşımanın yolunu verdi." + ], + "command": "git branch -f main HEAD~3", + "beforeCommand": "git commit; git commit; git commit; git checkout -b bugFix" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Artık göreli referanslar ve branch zorlamasını birleştirerek gördünüz, şimdi bunları bir sonraki seviyeyi çözmek için kullanalım.", + "", + "Bu seviyeyi tamamlamak için, `HEAD`, `main` ve `bugFix`'i belirtilen hedeflerine taşıyın." + ] + } + } + ] + } } }; diff --git a/src/levels/rampup/reversingChanges.js b/src/levels/rampup/reversingChanges.js index 19960ba5b..cfbbeb901 100644 --- a/src/levels/rampup/reversingChanges.js +++ b/src/levels/rampup/reversingChanges.js @@ -22,6 +22,7 @@ exports.level = { "sl_SI": "Revertanje Sprememb v Gitu", "it_IT": "Annullare i cambiamenti in Git", "pl": "Odwracanie zmian w Gicie", + "tr_TR": "Değişiklikleri Git'te Geri Almak" }, "hint": { "en_US": "Notice that revert and reset take different arguments.", @@ -42,6 +43,8 @@ exports.level = { "sl_SI": "Revert in reset sprejmeta različne argumente.", "it_IT": "Revert e reset hanno parametri diversi.", "pl": "Zauważ, że revert i reset przyjmują różne argumenty", + "tr_TR": "revert ve reset'in farklı parametreler aldığını unutma." + }, "startDialog": { "en_US": { @@ -1109,11 +1112,11 @@ exports.level = { ] }, "it_IT": { - childViews: [ + "childViews": [ { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "## Annullare i cambiamenti in Git", "", "Esistono molti modi per annullare i cambiamenti in Git. Come la creazione di commit, anche l'annullamento in Git ha sia una componente di basso livello (tracciatura dei singoli file o blocchi) e uno di alto livello (come l'annullamento viene realmente eseguito). La nostra applicazione si concentrerà su quest'ultima.", @@ -1124,45 +1127,45 @@ exports.level = { }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "## Git Reset", "", '`git reset` annulla le modifiche spostando il puntatore al ramo indietro nel tempo a un commit precedente. Puoi vederla come se stessi "riscrivendo la storia;" `git reset` torna al commit precedente come se il nuovo commit non fosse mai esistito.', "", "Vediamone una rappresentazione:", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Grande! Git ha spostato il puntatore del ramo main the main sul commit `C1`; ora il nostro repository locale è come se non avesse mai avuto un commit `C2`.", ], - command: "git reset HEAD~1", - beforeCommand: "git commit", + "command": "git reset HEAD~1", + "beforeCommand": "git commit", }, }, { - type: "GitDemonstrationView", - options: { - beforeMarkdowns: [ + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ "## Git Revert", "", 'Git reset funziona perfettamente in locale sul proprio computer, ma la funzione di "riscrivere la storia" non va d\'accordo con i rami salvati in remoto utilizzati da altri colleghi.', "", "Per fare in modo di annullare e *condividere* con gli altri le modifiche annullate, dobbiamo usare `git revert`. Vediamolo in azione.", ], - afterMarkdowns: [ + "afterMarkdowns": [ "Strano, un nuovo commit è stato creato sotto il commit che volevamo annullare. Questo perché il nuovo commit `C2'` porta *cambiamenti* -- per l'esattezza i cambiamenti sono quelli che annullano il commit `C2`.", "", "Con git revert, aggiungi i cambiamenti che possono essere poi condivisi con altri.", ], - command: "git revert HEAD", - beforeCommand: "git commit", + "command": "git revert HEAD", + "beforeCommand": "git commit", }, }, { - type: "ModalAlert", - options: { - markdowns: [ + "type": "ModalAlert", + "options": { + "markdowns": [ "Per completare questo livello, annulla i commit più recenti sia in `local` che in `pushed`. Alla fine annullerai due commit in totale (uno per ramo).", "", "Tieni presente che `pushed` è un ramo remoto e `local` è un ramo locale -- questo dovrebbe aiutarti a scegliere quale metodo usare.", @@ -1171,6 +1174,68 @@ exports.level = { }, ], }, - + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git'te Değişiklikleri Geri Alma", + "", + "Git'te değişiklikleri geri almanın birçok yolu vardır. Ve tıpkı commit yapmada olduğu gibi, değişiklikleri geri almak da hem düşük seviyeli bir bileşene (bireysel dosyaları veya parçaları sahneleme) hem de yüksek seviyeli bir bileşene (değişikliklerin nasıl geri alındığına) sahiptir. Uygulamamız, ikincisine odaklanacaktır.", + "", + "Git'te değişiklikleri geri almanın iki temel yolu vardır: birincisi `git reset` kullanmak, diğeri ise `git revert` kullanmaktır. Bunların her birine bir sonraki diyalogda göz atacağız.", + "" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "## Git Reset", + "", + "`git reset`, bir dal referansını geçmişteki eski bir commit'e geri hareket ettirerek değişiklikleri geri alır. Bu anlamda, onu \"tarihi yeniden yazmak\" olarak düşünebilirsiniz; `git reset`, bir dalı, sanki commit hiç yapılmamış gibi geriye doğru hareket ettirir.", + "", + "Bunu nasıl göründüğünü görelim:" + ], + "afterMarkdowns": [ + "Güzel! Git, main dalını `C1`'e geri taşıdı; şimdi yerel depomuz, `C2`'nin hiç olmamış gibi bir durumda." + ], + "command": "git reset HEAD~1", + "beforeCommand": "git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "## Git Revert", + "", + "Resetleme, kendi makinenizdeki yerel dallar için mükemmel çalışırken, \"tarihi yeniden yazma\" yöntemi, başkalarının kullandığı uzak dallar için işe yaramaz.", + "", + "Değişiklikleri geri almak ve *geri alınan değişiklikleri başkalarıyla paylaşmak* için `git revert` kullanmamız gerekir. Bunu nasıl çalıştığını görelim." + ], + "afterMarkdowns": [ + "Tuhaf, geri almak istediğimiz commit'in altına yeni bir commit geldi. Çünkü bu yeni commit `C2'`, *değişiklikler* getiriyor -- sadece, `C2`'nin commit'ini tam olarak geri alan değişiklikler getiriyor.", + "", + "Revertleme ile değişikliklerinizi başkalarına paylaşmak için push edebilirsiniz." + ], + "command": "git revert HEAD", + "beforeCommand": "git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu seviyeyi tamamlamak için, hem `local` hem de `pushed` üzerindeki en son commit'i geri alın. Toplamda iki commit'i geri almış olacaksınız (birini her dal için).", + "", + "`pushed` uzak bir dal ve `local` yerel bir dal olduğuna dikkat edin -- bu, yöntemlerinizi seçmenize yardımcı olacaktır." + ] + } + } + ] + } } }; diff --git a/src/levels/rebase/manyRebases.js b/src/levels/rebase/manyRebases.js index bcd58ffa8..761876134 100644 --- a/src/levels/rebase/manyRebases.js +++ b/src/levels/rebase/manyRebases.js @@ -9,9 +9,9 @@ exports.level = { "startTree": "{\"branches\":{\"main\":{\"target\":\"C2\",\"id\":\"main\"},\"bugFix\":{\"target\":\"C3\",\"id\":\"bugFix\"},\"side\":{\"target\":\"C6\",\"id\":\"side\"},\"another\":{\"target\":\"C7\",\"id\":\"another\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C0\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C5\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"main\",\"id\":\"HEAD\"}}", "name": { "en_US": "Rebasing over 9000 times", - "de_DE": "10000 Rebases unter dem `HEAD`", + "de_DE": "9000 Rebases unter dem `HEAD`", "es_AR": "Rebaseando más de 9000 veces", - "es_MX": "Rebaseando más de 8000... veces", + "es_MX": "Rebaseando más de 9000... veces", "es_ES": "Rebaseando más de 9000 veces", "pt_BR": "Fazendo mais de 9000 rebases", "gl": "Facendo máis de 9000 rebases", @@ -24,8 +24,8 @@ exports.level = { "uk": "Rebase over 9000 разів", "vi": "Rebase hơn 9000 lần", "sl_SI": "Več kot 9000 Rebaseov", - "it_IT": "Rebasing livello 8000", - "pl": "Rebase ponad 8000 razy", + "it_IT": "Rebasing livello 9000", + "pl": "Rebase ponad 9000 razy", "tr_TR": "9000 kereden fazla rebase işlemi yapmak" }, "hint": { diff --git a/src/levels/remote/clone.js b/src/levels/remote/clone.js index 35e02fc34..eeafa13c0 100644 --- a/src/levels/remote/clone.js +++ b/src/levels/remote/clone.js @@ -19,7 +19,8 @@ exports.level = { "vi": "Giới thiệu về clone", "sl_SI": "Uvod v Git Clone", "pl": "Wstęp do klonowania (clone)", - "it_IT": "Introduzione al clone" + "it_IT": "Introduzione al clone", + "tr_TR": "Clone Tanıtımı" }, "hint": { "en_US": "Just git clone!", @@ -39,7 +40,9 @@ exports.level = { "vi": "Đơn giản là git clone!", "sl_SI": "Preprosto samo git clone!", "pl": "Po prostu git clone!", - "it_IT": "Semplicemente git clone!" + "it_IT": "Semplicemente git clone!", + "tr_TR": "Sadece git clone yapın!" + }, "startDialog": { "en_US": { @@ -1066,6 +1069,63 @@ exports.level = { } } ] + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Uzak Depoları", + "", + "Uzak depolar aslında o kadar karmaşık değildir. Günümüz bulut bilişim dünyasında, uzak depoların arkasında bir sürü sihir olduğunu düşünmek kolay olabilir, ancak aslında bunlar sadece başka bir bilgisayardaki depo kopyalarınızdır. Genellikle bu başka bilgisayarlarla internet üzerinden iletişim kurabilirsiniz, bu da size değişiklikleri karşılıklı olarak aktarmayı sağlar.", + "", + "Bununla birlikte, uzak depoların bir dizi harika özelliği vardır:", + "", + "- İlk ve en önemli olarak, uzak depolar mükemmel bir yedekleme işlevi görür! Yerel git depoları, dosyaları önceki bir duruma geri yükleyebilme yeteneğine sahiptir (bildiğiniz gibi), ancak tüm bu bilgiler yerel olarak depolanır. Git deponuzun kopyalarını diğer bilgisayarlarda bulundurmak, tüm yerel verilerinizi kaybetseniz bile kaldığınız yerden devam etmenizi sağlar.", + "", + "- Daha da önemlisi, uzak depolar kodlamayı sosyal hale getirir! Projenizin bir kopyası başka bir yerde barındırıldığında, arkadaşlarınız çok kolay bir şekilde projenize katkıda bulunabilir (ya da son değişikliklerinizi çekebilir).", + "", + "Uzak depolar etrafındaki etkinlikleri görselleştiren web siteleri kullanmak çok popüler hale geldi (örneğin [GitHub](https://github.com/)), ancak uzak depolar _her zaman_ bu araçların temel altyapısını oluşturur. Bu yüzden onları anlamak önemlidir!" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Uzak Depoları Oluşturmak için Komutumuz", + "", + "Şu ana kadar, Learn Git Branching yerel depo çalışmalarının (dallama, birleştirme, yeniden tabanlama, vb.) temellerini öğretmeye odaklanmıştı. Ancak şimdi uzak depo çalışmalarını öğrenmek istediğimiz için, bu dersler için ortamı kuracak bir komuta ihtiyacımız var. `git clone` bu komut olacak.", + "", + "Teknik olarak, gerçek dünyada `git clone` komutu, uzak depoların (örneğin GitHub'dan) yerel kopyalarını oluşturmak için kullanacağınız komuttur. Ancak Learn Git Branching'de biz bu komutu biraz farklı kullanıyoruz -- `git clone`, aslında yerel deponuzu bir uzak depoya dönüştürür. Gerçek komutun anlamının tam tersini yapsa da, bu, klonlama ve uzak depo çalışmaları arasındaki bağlantıyı kurmaya yardımcı olur, bu yüzden şimdilik böyle kullanacağız.", + "" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Hadi yavaşça başlayalım ve bir uzak deponun neye benzediğine bakalım (görselleştirmemizde).", + "" + ], + "afterMarkdowns": [ + "İşte bu! Şimdi projemizin bir uzak deposuna sahibiz. Görünüşü oldukça benzer, ancak ayırt edici bir fark yaratmak için bazı görsel değişiklikler yapıldı -- sonraki seviyelerde bu depolar arasında nasıl çalıştığımızı paylaşacağınızı göreceksiniz." + ], + "command": "git clone", + "beforeCommand": "" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu seviyeyi bitirmek için mevcut deponuzu sadece `git clone` komutuyla klonlayın. Gerçek öğrenme sonraki derslerde olacak." + ] + } + } + ] } } }; diff --git a/src/levels/remote/fakeTeamwork.js b/src/levels/remote/fakeTeamwork.js index eebf3bfe1..e1782e5f3 100644 --- a/src/levels/remote/fakeTeamwork.js +++ b/src/levels/remote/fakeTeamwork.js @@ -20,7 +20,8 @@ exports.level = { "vi": "Giả lập làm việc nhóm", "sl_SI": "Lažno Ekipno Delo", "pl": "Symulacja pracy zespołowej", - "it_IT": "Simulare il lavoro di squadra" + "it_IT": "Simulare il lavoro di squadra", + "tr_TR": "Takım Çalışması Simülasyonu" }, "hint": { "en_US": "Remember you can specify the number of commits to fake", @@ -40,7 +41,8 @@ exports.level = { "vi": "Nhớ rằng bạn có thể chỉ định số lượng commit để giả lập", "sl_SI": "Spomni se, da lahko določiš število lažnih commitov.", "pl": "Pamiętaj, że możesz określić liczbę symulowanych commitów", - "it_IT": "Tieni a mente che puoi specificare il numero di commit da simulare" + "it_IT": "Tieni a mente che puoi specificare il numero di commit da simulare", + "tr_TR": "Kaç commit oluşturulacağını belirtebileceğinizi unutmayın" }, "startDialog": { "en_US": { @@ -1016,6 +1018,60 @@ exports.level = { } } ] + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## İş birliğini simüle etmek", + "", + "Şimdi zor olan kısım şu -- bu gelecek derslerin bazıları için, uzaktaki bir depoda yapılan değişiklikleri nasıl çekeceğinizi öğretmemiz gerekiyor.", + "", + "Bu, esasen uzaktaki deponun, iş arkadaşlarınızdan / arkadaşlarınızdan / iş birliği yaptığınız kişilerden biri tarafından, bazen belirli bir dalda ya da belli sayıda commit ile güncellendiğini \"taklit etmemiz\" gerektiği anlamına geliyor.", + "", + "Bunu yapabilmek için uygun bir şekilde adlandırılmış `git fakeTeamwork` komutunu tanıttık! Oldukça açıklayıcı bir komut, haydi bir demo görelim..." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "`fakeTeamwork` komutunun varsayılan davranışı, ana dalda bir commit oluşturup eklemektir." + ], + "afterMarkdowns": [ + "İşte bu kadar -- uzaktaki depo yeni bir commit ile güncellendi ve biz henüz bu commit'i indirmedik çünkü `git fetch` komutunu çalıştırmadık." + ], + "command": "git fakeTeamwork", + "beforeCommand": "git clone" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Komuta bir dal adı veya commit sayısını ekleyerek bunları da belirtebilirsiniz." + ], + "afterMarkdowns": [ + "Tek bir komutla, takım arkadaşınızın uzaktaki depodaki `foo` dalına üç commit gönderdiğini simüle ettik." + ], + "command": "git fakeTeamwork foo 3", + "beforeCommand": "git branch foo; git clone" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Gelecek seviyeler oldukça zorlayıcı olacak, bu yüzden bu seviyede sizden daha fazlasını istiyoruz.", + "", + "Bir uzaktan depo oluşturun (`git clone` ile), o uzaktan depoda bazı değişiklikleri taklit edin, kendi commit'inizi yapın ve ardından bu değişiklikleri indirin. Bu, birkaç dersin bir araya gelmiş hali gibi!" + ] + } + } + ] } } }; diff --git a/src/levels/remote/fetch.js b/src/levels/remote/fetch.js index 155627e81..8b491148d 100644 --- a/src/levels/remote/fetch.js +++ b/src/levels/remote/fetch.js @@ -20,27 +20,31 @@ exports.level = { "vi": "Git Fetch", "sl_SI": "Git Fetch", "pl": "Git fetch", - "it_IT": "Git Fetch" + "it_IT": "Git Fetch", + "tr_TR": "Git Fetch", + "ta_IN": "Git Fetch" }, "hint": { - "en_US": "just run git fetch!", - "fr_FR": "Exécuter juste git fetch", - "de_DE": "Einfach git fetch ausführen!", - "ja": "単にgit fetchを実行!", - "es_AR": "Simplemente ¡hacé git fetch!", - "es_MX": "Simplemente ¡escribe git fetch!", - "es_ES": "Simplemente ¡escribe git fetch!", - "pt_BR": "Simplesmente chame git fetch!", - "gl": "¡Sinxelamente fai git fetch!", - "zh_CN": "只需要运行 git fetch 命令!", - "zh_TW": "只要下 git fetch 指令", - "ru_RU": "Просто выполните git fetch!", - "uk": "Просто виконай git fetch!", - "ko": "그냥 git fetch를 하세요!", - "vi": "Gõ git fetch là được!", - "sl_SI": "Le izvedi git fetch!", - "pl": "Po prostu uruchom git fetch!", - "it_IT": "Semplicemente git fetch!" + "en_US": "just run git fetch!", + "fr_FR": "Exécuter juste git fetch", + "de_DE": "Einfach git fetch ausführen!", + "ja": "単にgit fetchを実行!", + "es_AR": "Simplemente ¡hacé git fetch!", + "es_MX": "Simplemente ¡escribe git fetch!", + "es_ES": "Simplemente ¡escribe git fetch!", + "pt_BR": "Simplesmente chame git fetch!", + "gl": "¡Sinxelamente fai git fetch!", + "zh_CN": "只需要运行 git fetch 命令!", + "zh_TW": "只要下 git fetch 指令", + "ru_RU": "Просто выполните git fetch!", + "uk": "Просто виконай git fetch!", + "ko": "그냥 git fetch를 하세요!", + "vi": "Gõ git fetch là được!", + "sl_SI": "Le izvedi git fetch!", + "pl": "Po prostu uruchom git fetch!", + "it_IT": "Semplicemente git fetch!", + "tr_TR": "Sadece git fetch komutunu çalıştırın!", + "ta_IN": "பொதுவாக git fetch நடத்துங்கள்!" }, "startDialog": { "en_US": { @@ -1357,5 +1361,149 @@ exports.level = { } ] }, + "ta_IN": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Fetch", + "", + "Git remote களைப் பயன்படுத்துவது உண்மையில் மற்ற repository களிலிருந்து மற்றும் அதற்கு தகவலை அனுப்புவது மற்றும் பெறுவதிலேயே முடிவடைகிறது. நாம் commit களை பரிமாற முடிந்தால், எதை வேண்டுமானாலும் பகிர முடியும் (git மூலம் கண்காணிக்கப்படும் எந்தவொரு புதுப்பிப்பையும் பகிர முடியும், அதாவது வேலை, புதிய கோப்புகள், புதிய கருத்துக்கள், காதல் கடிதங்கள், இதரவை).", + "", + "இந்த பாடத்தில், நாம் ஒரு remote repository இலிருந்து தரவை fetch செய்வது எப்படி என்பதைக் கற்றுக் கொள்ளப் போகிறோம் -- இதற்கான command ஆக `git fetch` ஆகும்.", + "", + "நாம் remote repository ஐ புதுப்பிப்பதைக் காணும்போது, நமது _remote_ branches அவற்றின் புதிய பிரதிபலன்களை சுட்டிக்காட்டும் வகையில் புதுப்பிக்கப்படும். இது முன்னர் கற்றுக்கொண்ட remote branches பற்றிய பாடத்துடன் தொடர்பு கொள்கிறது." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "`git fetch` குறித்த விவரங்களில் நுழையவுமுன், அதை செயல்படுவதை காண்போம்! இங்கே உள்ள ஒரு remote repository இல் எங்கள் உள்ளூர்த் repository இல் இல்லாத இரண்டு commits உள்ளன." + ], + "afterMarkdowns": [ + "சரி! Commit கள் `C2` மற்றும் `C3` நமது உள்ளூர்த் repository க்கு பதிவிறக்கம் செய்யப்பட்டது, மற்றும் நமது remote branch `o/main` இந்த புதுப்பிப்பை பிரதிபலிக்கவும் புதுப்பிக்கப்பட்டது." + ], + "command": "git fetch", + "beforeCommand": "git clone; git fakeTeamwork 2" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Fetch என்ன செய்கிறது", + "", + "`git fetch` இரண்டு முக்கியமான படிகளைச் செய்கிறது, மற்றும் அவை மட்டுமே. இது:", + "", + "* remote க்கு இருக்கும்போது, ஆனால் நமது உள்ளூர் repository இல் இல்லாத commit களை பதிவிறக்கம் செய்யும், மற்றும்...", + "* எங்கள் remote branches எங்கு இருக்கின்றன என்பதைக் கொண்டு புதுப்பிக்கின்றது (உதாரணமாக, `o/main`)", + "", + "`git fetch` என்றால், நமது _local_ பிரதிபலனின் status ஐ _actual_ remote repository உடன் ஒத்திசைவாக்குவது (தற்போது).", + "", + "நாம் முன் கற்ற remote branches என்பது remote repositories இல் உள்ள நிலையை பிரதிபலிக்கின்றது என்று கூறினோம் _நீங்கள் அந்த remote களுடன் கடைசியாக பேசினபோது_ என்ற நிலை. `git fetch` என்பது இந்த remote களுடன் நீங்கள் பேசும் வழியாகும்! இந்த தொடர்பு தெளிவாக இருக்கும் என்று நம்புகிறேன்.", + "", + "`git fetch` பெரும்பாலும் remote repository உடன் இணையதளம் மூலம் (உதாரணமாக `http://` அல்லது `git://` போன்ற protocol மூலம்) தொடர்பு கொள்ளும்." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Fetch என்ன செய்யவில்லை", + "", + "`git fetch` என்றாலும், அது _உங்கள்_ உள்ளூர் நிலையை எதுவும் மாற்றாது. இது உங்கள் `main` branch ஐ புதுப்பிக்காது அல்லது உங்கள் கோப்பக அமைப்பின் (file system) தற்போதைய நிலையை மாற்றாது.", + "", + "இது முக்கியம் என்பதை புரிந்துகொள்வது ஏனெனில் பல டெவலப்பர்கள் `git fetch` ஐ இயக்கினால், அது அவர்களது உள்ளூர் பணியை remote இன் நிலையை பிரதிபலிக்கச் செய்யும் என்று நினைப்பார்கள். அது தேவையான அனைத்து தரவையும் பதிவிறக்கம் செய்யலாம், ஆனால் அது உண்மையில் உங்கள் உள்ளூர் கோப்புகளை மாற்றாது. நாம் பின்னர் கற்றுக் கொள்ளப்போகும் command கள் அந்த செயல்களைச் செய்யும் :D", + "", + "அதனால், ஒரு நாள் முடிவில், `git fetch` ஐ இயக்குவது என்பது ஒரு பதிவிறக்கம் செய்யும் படியாக எண்ணலாம்." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "இந்த level ஐ முடிக்க, எளிதாக `git fetch` செய்து அனைத்து commits களையும் பதிவிறக்கம் செய்யுங்கள்!" + ] + } + } + ] + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Fetch", + "", + "Git uzak depoları ile çalışmak aslında verileri başka depolara _göndermek_ ve _geri almak_ ile ilgilidir. Bir kez ki commit'leri birbirimize gönderebildiğimiz sürece, git tarafından izlenen her tür güncellemeyi (ve dolayısıyla işi, yeni dosyaları, yeni fikirleri, sevgi mektuplarını vb.) paylaşabiliriz.", + "", + "Bu derste, bir uzak depodan veri çekmeyi öğreneceğiz -- bu komut `git fetch` olarak adlandırılmıştır.", + "", + "Uzak depomuzun temsilini güncellediğimizde, _uzak_ dallarımızın da bu yeni temsili yansıtacak şekilde güncellendiğini fark edeceksiniz. Bu, önceki derste öğrendiğimiz uzak dallar ile ilgili konuyu pekiştiriyor." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "`git fetch` komutunun detaylarına girmeden önce, onu bir eylemde görelim! İşte bizim yerel depomuzun henüz almadığı iki commit içeren bir uzak depo." + ], + "afterMarkdowns": [ + "İşte oldu! `C2` ve `C3` commit'leri yerel depomuza indirildi ve uzak dalımız `o/main` bunu yansıtacak şekilde güncellendi." + ], + "command": "git fetch", + "beforeCommand": "git clone; git fakeTeamwork 2" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Fetch ne yapar", + "", + "`git fetch` iki ana adım ve sadece iki ana adım yapar. Şunları yapar:", + "", + "* Uzak deponun sahip olduğu ve yerel depomuzda olmayan commit'leri indirir ve...", + "* Uzak dallarımızın işaret ettiği yerleri günceller (örneğin `o/main`)", + "", + "`git fetch`, aslında uzak deponun _gerçek_ halini (şu anda) yerel temsilimize senkronize eder.", + "", + "Önceki derste hatırlayacağınız üzere, uzak dalların, bu uzak depolarla son konuşmanızdan bu yana uzak depoların durumunu yansıttığını söylemiştik. `git fetch` bu uzak depolarla konuşma şeklinizdir! Umarım uzak dallar ve `git fetch` arasındaki bağlantı şimdi daha net olmuştur.", + "", + "`git fetch` genellikle uzak depolarla İnternet üzerinden iletişim kurar (örneğin `http://` veya `git://` gibi bir protokol üzerinden)." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Fetch ne yapmaz", + "", + "`git fetch` ise yerel durumunuzu değiştirmez. `main` dalınızı güncellemez ya da dosya sisteminizde herhangi bir değişiklik yapmaz.", + "", + "Bunu anlamak önemlidir çünkü birçok geliştirici, `git fetch` komutunu çalıştırmanın yerel çalışmalarının uzak depo ile uyumlu hale geleceğini düşünür. Gerekli tüm verileri indiriyor olabilir, ancak bu _gerçekten_ yerel dosyalarınızda herhangi bir değişiklik yapmaz. Bunun için ilerleyen derslerde komutlar öğreneceğiz :D", + "", + "Sonuç olarak, `git fetch` komutunu çalıştırmayı bir indirme adımı olarak düşünebilirsiniz." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu seviyeyi tamamlamak için sadece `git fetch` komutunu çalıştırın ve tüm commit'leri indirin!" + ] + } + } + ] + } } }; diff --git a/src/levels/remote/fetchArgs.js b/src/levels/remote/fetchArgs.js index 03cf1070c..646ee8ccb 100644 --- a/src/levels/remote/fetchArgs.js +++ b/src/levels/remote/fetchArgs.js @@ -19,7 +19,8 @@ exports.level = { "vi": "Tham số fetch", "sl_SI": "Fetch argumenti", "pl": "Argumenty fetch", - "it_IT": "Parametri di git fetch" + "it_IT": "Parametri di git fetch", + "tr_TR": "Fetch argümanları" }, "hint": { "en_US": "Pay attention how the commit ids may have swapped! You can read slides again with \"help level\"", @@ -38,7 +39,8 @@ exports.level = { "vi": "Lưu ý id của các commit bị tráo đổi, bạn có thể dùng \"help level\" để đọc lại hộp thoại", "sl_SI": "Bodi pozoren kako so se commit id-ji morda zamenjali! Ponovno lahko prebereš navodila z \"help level\".", "pl": "Zauważ, że identyfikatory commitów mogły zostać zamienione! Slajdy możesz przeczytać jeszcze raz po wpisaniu: \"help level\"", - "it_IT": "Fai attenzione, alcuni ID dei commit potrebbero essere invertiti! Puoi leggere nuovamente le slide con \"help level\"" + "it_IT": "Fai attenzione, alcuni ID dei commit potrebbero essere invertiti! Puoi leggere nuovamente le slide con \"help level\"", + "tr_TR": "Commit ID'lerinin nasıl değiştiğine dikkat edin! \"help level\" komutunu kullanarak slaytları tekrar okuyabilirsiniz." }, "startDialog": { "en_US": { @@ -2145,5 +2147,128 @@ exports.level = { } ] }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git fetch parametreleri", + "", + "Az önce git push parametreleri, bu havalı `` parametresi ve hatta kolon referansları (`:`) hakkında her şeyi öğrendik. Peki bu bilgileri `git fetch` için de kullanabilir miyiz?", + "", + "Tabii ki! `git fetch` için kullanılan parametreler aslında `git push` ile çok, çok benzer. Aynı türdeki kavramlar, ancak bu sefer ters yönde uygulanıyor (çünkü artık yükleme değil, indirme yapıyorsunuz).", + "", + "Hadi bu kavramları birer birer inceleyelim..." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### `` parametresi", + "", + "`git fetch` komutuyla bir yer belirttiğinizde, örneğin şu komutla:", + "", + "`git fetch origin foo`", + "", + "Git, uzak depodaki `foo` dalına gidip, yerel deponuzda bulunmayan tüm commit'leri alacak ve ardından bunları yerel `o/foo` dalına yerleştirecek.", + "", + "Bunu aksiyon içinde görmek için (sadece hatırlatma olarak) gözden geçirelim." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Bir yer belirterek..." + ], + "afterMarkdowns": [ + "`foo` dalındaki commit'leri indirdik ve `o/foo` dalına yerleştirdik." + ], + "command": "git fetch origin foo", + "beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Belki de merak ediyorsunuzdur -- neden git, bu commit'leri yerel `foo` dalıma değil de `o/foo` uzak dalına yerleştirdi? `` parametresi hem yerel hem de uzak depoda bulunan bir yer değil mi?", + "", + "Git bu durumda özel bir istisna yapıyor çünkü `foo` dalında bozmak istemediğiniz işleriniz olabilir!! Bu, `git fetch` ile ilgili önceki derse bağlanıyor -- `git fetch`, yerel olmayan dalınızı güncellemez, yalnızca commit'leri indirir (bu commit'leri daha sonra inceleyip birleştirebilirsiniz).", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "\"O zaman ne olur, eğer `:` ile hem kaynağı hem de hedefi açıkça belirtirsem?\"", + "", + "Eğer commit'leri *doğrudan* yerel bir dala almak için çok hevesliyseniz, o zaman evet, bunu kolon referanslarıyla belirtebilirsiniz. Ancak commit'leri aktif bir dala alamazsınız, ancak git bununla buna izin verir.", + "", + "Buradaki tek dikkat edilmesi gereken şey şu -- ``, artık bir *uzak* yerde ve `` ise bu commit'leri yerleştireceğiniz *yerel* bir yerdir. Bu, `git push` komutunun tam tersidir ve bu mantıklıdır çünkü veri yönü tersine transfer ediliyordur!", + "", + "Ancak şunu söylemek gerekir ki, geliştiriciler pratikte bunu nadiren yapar. Bunu, `fetch` ve `push` komutlarının ne kadar benzer olduğunu, sadece ters yönde çalıştıklarını kavramsallaştırmak amacıyla tanıtıyorum." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Bunu aksiyon içinde görelim:" + ], + "afterMarkdowns": [ + "Vay! Görüyorsunuz, git `C2`'yi bir yer olarak çözümlerken bu commit'leri `bar` dalına (yerel bir dal) indirdi." + ], + "command": "git fetch origin C2:bar", + "beforeCommand": "git branch foo; git clone; git branch bar; git fakeTeamwork foo 2" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Ya hedef önceden var değilse? Hadi son slaydı `bar` olmadan görelim." + ], + "afterMarkdowns": [ + "Görün! Tam olarak `git push` gibi. Git, hedefi yerel olarak oluşturdu ve fetch işlemi yaptı, tıpkı git'in uzak depoya push yaparken hedefi oluşturması gibi (eğer mevcut değilse)." + ], + "command": "git fetch origin C2:bar", + "beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Parametre yok?", + "", + "`git fetch` parametre almazsa, uzak depodaki tüm commit'leri tüm uzak dallara indirir..." + ], + "afterMarkdowns": [ + "Oldukça basit ama sadece bir kez gözden geçirmeye değer." + ], + "command": "git fetch", + "beforeCommand": "git branch foo; git clone; git fakeTeamwork foo; git fakeTeamwork main" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Tamam, yeterince konuştuk! Bu seviyeyi bitirmek için, hedef görselleştirmesinde belirtilen commit'leri fetch yapın. O komutlarla biraz yaratıcı olun!", + "", + "Her iki fetch komutu için de kaynak ve hedefi belirtmeniz gerekecek. Hedef görselleştirmesine dikkat edin, çünkü ID'ler yer değiştirebilir!" + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/fetchRebase.js b/src/levels/remote/fetchRebase.js index 9e52cfa6c..69a9f7cf1 100644 --- a/src/levels/remote/fetchRebase.js +++ b/src/levels/remote/fetchRebase.js @@ -19,7 +19,8 @@ exports.level = { "vi": "Dị biệt lịch sử", "sl_SI": "Razdeljena Zgodovina", "pl": "Rozbieżna historia", - "it_IT": "Storico divergente" + "it_IT": "Storico divergente", + "tr_TR": "Sapmış Tarihçe", }, "hint": { "en_US": "Check out the ordering from the goal visualization", @@ -38,7 +39,8 @@ exports.level = { "vi": "Kiểm tra kỹ thứ tự trên mô hình mục tiêu", "sl_SI": "Preveri vrstni red iz ciljne vizualizacije.", "pl": "Przyjrzyj się kolejności na wizualizacji celu", - "it_IT": "Controlla l'ordinamento dalla schermata dell'obiettivo" + "it_IT": "Controlla l'ordinamento dalla schermata dell'obiettivo", + "tr_TR": "Hedef görselleştirmesindeki sıralamaya dikkat edin", }, "startDialog": { "en_US": { @@ -2471,6 +2473,148 @@ exports.level = { } } ] - } + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Çatışan Çalışma", + "", + "Şu ana kadar başkalarından nasıl `pull` yaparak commit alacağımızı ve kendi değişikliklerimizi nasıl `push` yapacağımızı gördük. Oldukça basit görünüyor, o zaman insanlar neden bu kadar karışabiliyor?", + "", + "Zorluk, depo geçmişi *çatıştığında* başlar. Bunun ayrıntılarını tartışmadan önce, bir örneğe göz atalım..." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Pazartesi günü bir depo klonladığınızı ve yan bir özellik üzerinde çalışmaya başladığınızı hayal edin. Cuma günü özelliğinizi yayınlamaya hazır olduğunuzda, aman Tanrım! İş arkadaşlarınız hafta boyunca bir sürü kod yazmış ve özelliğiniz artık geçersiz ve güncel değil. Ayrıca bu commit'leri ortak uzak depoya da göndermişler, bu yüzden *sizin* çalışmanız artık eski bir proje sürümüne dayanıyor.", + "", + "Bu durumda, `git push` komutu belirsizdir. `git push` komutunu çalıştırırsanız, git uzak depoyu Pazartesi günkü haline mi döndürmeli? Kodunuzu yeni kodları silmeden mi eklemeli? Yoksa tamamen geçersiz olan değişikliklerinizi yok saymalı mı?", + "", + "Çünkü bu durumda çok fazla belirsizlik vardır (geçmiş çatıştığı için), git değişikliklerinizi `push` etmenize izin vermez. Gerçekten de, değişikliklerinizi paylaşmadan önce uzak deponun en son durumunu entegre etmenizi zorunlu kılar." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Çok konuştuk! Hadi bu durumu pratikte görelim." + ], + "afterMarkdowns": [ + "Görüyorsunuz değil mi? Hiçbir şey olmadı çünkü komut başarısız oldu. `git push` komutu başarısız oldu çünkü en son commit'iniz `C3`, `C1`'den alınan uzak depoya dayalıydı. Ancak uzak depo `C2`'ye güncellenmişti, bu yüzden git `push` işleminizi reddetti." + ], + "command": "git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu durumu nasıl çözebilirsiniz? Çok basit, tek yapmanız gereken çalışmanızı uzak dalın en son sürümüne dayandırmak.", + "", + "Bunu yapmanın birkaç yolu vardır, ancak en basit yöntem çalışmanızı rebase yaparak taşımaktır. Hadi bunu nasıl göründüğüne bakalım." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Şimdi eğer önce rebase yaparsak..." + ], + "afterMarkdowns": [ + "Vay! Uzak deponun yerel temsiline `git fetch` ile güncelleme yaptık, çalışmamızı uzak depodaki yeni değişiklikleri yansıtacak şekilde rebase ettik ve ardından `git push` ile gönderdik." + ], + "command": "git fetch; git rebase o/main; git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Uzak depo güncellendiyse, çalışmamı güncellemenin başka yolları var mı? Tabii ki! Aynı şeyi `merge` kullanarak da gözden geçirelim.", + "", + "`git merge` çalışmanızı taşımaz (sadece bir merge commit'i oluşturur), ancak git'e uzak deponun tüm değişikliklerini entegre ettiğinizi bildirmenin bir yoludur. Çünkü uzak dal artık kendi dalınızın *atası* haline gelir, yani commit'iniz uzak dalın tüm commit'lerini yansıtır.", + "", + "Bunu gösterelim..." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Şimdi rebase yerine merge yapalım..." + ], + "afterMarkdowns": [ + "Vay! Uzak deponun yerel temsiline `git fetch` ile güncelleme yaptık, yeni çalışmaları *merge* ederek çalışmamıza entegre ettik (yeni değişiklikleri yansıtmak için) ve ardından `git push` ile gönderdik." + ], + "command": "git fetch; git merge o/main; git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Harika! Peki, bu işlemi bu kadar çok komut yazmadan yapmanın bir yolu var mı?", + "", + "Tabii ki -- zaten `git pull`'ün bir fetch ve merge kısaltması olduğunu biliyorsunuz. Ne kadar pratik, `git pull --rebase` ise fetch ve rebase için kısaltmadır!", + "", + "Hadi bu kısaltma komutlarını görelim." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "İlk olarak `--rebase` ile..." + ], + "afterMarkdowns": [ + "Tıpkı öncekiler gibi! Ama çok daha kısa." + ], + "command": "git pull --rebase; git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Şimdi ise normal `pull` ile." + ], + "afterMarkdowns": [ + "Yine, tıpkı öncekiler gibi!" + ], + "command": "git pull; git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu fetch, rebase/merge ve push iş akışı oldukça yaygındır. Gelecek derslerde bu iş akışlarının daha karmaşık versiyonlarını inceleyeceğiz, ancak şimdilik bunu deneyelim.", + "", + "Bu seviyeyi çözmek için şu adımları takip etmeniz gerekiyor:", + "", + "* Depoyu klonlayın", + "* Takım çalışması sahteleyin (1 commit)", + "* Kendi çalışmanızı commit edin (1 commit)", + "* Çalışmanızı *rebase* yaparak yayınlayın" + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/lockedMain.js b/src/levels/remote/lockedMain.js index 099410741..235ba911c 100644 --- a/src/levels/remote/lockedMain.js +++ b/src/levels/remote/lockedMain.js @@ -18,7 +18,8 @@ exports.level = { "ja": "mainブランチをoriginのmainと同じ状態になるようにリセットする前に、ローカルのmainからfeatureブランチを作成します。", "pl": "Stwórz boczną gałąź tematyczną (feature) z lokalnego main, a późnej zsynchronizuj ją z main na origin", "vi": "Tạo những nhánh tính năng từ nhánh cục bộ trước khi trả chúng về lại giống như o/main", - "it_IT": "Crea il ramo per la feature a partire dal main locale prima di resettarlo al pari del main remoto" + "it_IT": "Crea il ramo per la feature a partire dal main locale prima di resettarlo al pari del main remoto", + "tr_TR": "Özellik dalını, origin/main ile aynı olacak şekilde sıfırlamadan önce yerel main'den oluşturun.", }, "name": { "en_US": "Locked Main", @@ -36,7 +37,8 @@ exports.level = { "ja": "ロックされたmain", "pl": "Zablokowany main", "vi": "Nhánh chính bị khóa (Locked Main)", - "it_IT": "Main bloccato" + "it_IT": "Main bloccato", + "tr_TR": "Kilitli Main", }, "startDialog": { "en_US": { @@ -696,5 +698,45 @@ exports.level = { } ] }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Uzak Sunucu Reddi!", + "", + "Büyük bir işbirliği ekibinde çalışıyorsanız, muhtemelen main branch'ı kilitlidir ve değişiklikleri bir Pull Request süreci ile birleştirmeniz gerekir. Eğer main'e doğrudan yerel olarak commit yapar ve push etmeye çalışırsanız, şu benzer bir mesajla karşılaşırsınız:", + "", + "```", + " ! [remote rejected] main -> main (TF402455: Bu branch'a push yapılmasına izin verilmiyor; bu branch'ı güncellemek için bir pull request kullanmalısınız.)", + "```" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Neden reddedildi?", + "", + "Uzak sunucu, main branch'ına doğrudan commit gönderilmesini, main üzerinde sadece pull request ile değişiklik yapılması gerektiği politikasından dolayı reddetti.", + "", + "Branch oluşturup, o branch'i push edip pull request yapmak amacıyla bu süreci takip etmeliydiniz ama unutup doğrudan main'e commit yaptınız. Şimdi sıkıştınız ve değişikliklerinizi push edemiyorsunuz." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Çözüm", + "", + "Başka bir branch oluşturun, ona feature adını verin ve bu branch'i uzak sunucuya push edin. Ayrıca main'i uzak sunucu ile senkronize etmek için sıfırlayın, aksi takdirde bir sonraki pull işleminizde başkalarının commit'leriyle çatışma yaşama riskiyle karşılaşabilirsiniz." + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/mergeManyFeatures.js b/src/levels/remote/mergeManyFeatures.js index 68ff9a8da..071f1f0b1 100644 --- a/src/levels/remote/mergeManyFeatures.js +++ b/src/levels/remote/mergeManyFeatures.js @@ -19,7 +19,8 @@ exports.level = { "vi": "Hợp nhất nhánh từ xa", "sl_SI": "Merganje z oddaljenim repozitorijem", "pl": "Scalanie z remote", - "it_IT": "Fondere in remoto" + "it_IT": "Fondere in remoto", + "tr_TR": "Uzak Sunucularla Birleştirme", }, "hint": { "en_US": "Pay attention to the goal tree!", @@ -38,7 +39,8 @@ exports.level = { "vi": "Hãy để ý đến cây mục tiêu!", "sl_SI": "Poglej si ciljno drevo!", "pl": "Zwróć uwagę, jak wygląda docelowe drzewo!", - "it_IT": "Fai attenzione all'albero nell'obiettivo" + "it_IT": "Fai attenzione all'albero nell'obiettivo", + "tr_TR": "Hedef ağacına dikkat et!", }, "compareOnlyMain": true, "startDialog": { @@ -807,5 +809,50 @@ exports.level = { } ] }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Neden merge yapmıyoruz?", + "", + "Yeni güncellemeleri uzak depoya gönderebilmek için tek yapmanız gereken, uzak depodaki en son değişiklikleri *dahil etmek*. Yani ya *rebase* yapabilir ya da uzak dalı (örneğin `o/main`) *merge* edebilirsiniz.", + "", + "O zaman her iki yöntemle de bunu yapabiliyorsanız, neden dersler şu ana kadar sadece rebase yapmaya odaklandı? Neden merge ile uzak depolarla çalışmaya hiç yer verilmedi?", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Geliştirme topluluğunda, merge ve rebase arasındaki avantajlar ve dezavantajlar hakkında çok fazla tartışma bulunmaktadır. İşte rebase'in genel artıları / eksileri:", + "", + "Artılar:", + "", + "* Rebase, commit ağacınızı çok temiz gösterir çünkü her şey düz bir çizgide olur.", + "", + "Eksiler:", + "", + "* Rebase, commit ağacının (görünürdeki) geçmişini değiştirir.", + "", + "Örneğin, `C1` commit'i, `C3`'ün *öncesine* rebase edilebilir. Bu durumda `C1'`in çalışması aslında daha önce yapılmışken, sanki `C3`ten sonra yapılmış gibi görünür.", + "", + "Bazı geliştiriciler tarihi korumayı sever ve bu yüzden merge yapmayı tercih eder. Diğerleri (benim gibi) temiz bir commit ağacını tercih eder ve rebase yapmayı sever. Sonuçta bu tamamen tercihe bağlı :D" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu seviyede, önceki seviyeyi *merge* kullanarak çözmeyi deneyelim. Biraz karışabilir ama durumu iyi şekilde gösterecektir." + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/pull.js b/src/levels/remote/pull.js index 3dc1cae95..9ba72112c 100644 --- a/src/levels/remote/pull.js +++ b/src/levels/remote/pull.js @@ -19,7 +19,8 @@ exports.level = { "vi": "Git pull", "sl_SI": "Git Pull", "pl": "Git pull", - "it_IT": "Git Pull" + "it_IT": "Git Pull", + "tr_TR": "Git Pull", }, "hint": { "en_US": "Just run git pull!", @@ -38,7 +39,8 @@ exports.level = { "vi": "Đơn giản là gõ git pull!", "sl_SI": "Samo izvedi git pull!", "pl": "Po prostu uruchom git pull!", - "it_IT": "Semplicemente git pull!" + "it_IT": "Semplicemente git pull!", + "tr_TR": "Sadece git pull komutunu çalıştırın!", }, "startDialog": { "en_US": { @@ -1043,6 +1045,65 @@ exports.level = { } } ] - } + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Pull", + "", + "`git fetch` komutunu kullanarak uzak depodan veri aldığımızı gördük, şimdi bu değişiklikleri yansıtarak çalışmalarımızı güncelleyelim!", + "", + "Bunu yapmanın aslında birçok yolu var -- yeni commitler yerel olarak mevcut olduğunda, onları diğer dallarda olduğu gibi dahil edebilirsiniz. Bu, şu komutları çalıştırabileceğiniz anlamına gelir:", + "", + "* `git cherry-pick o/main`", + "* `git rebase o/main`", + "* `git merge o/main`", + "* vb.", + "", + "Aslında, *fetch* işlemini yapıp ardından *merge* işlemi gerçekleştirmek o kadar yaygın ki, git aslında ikisini bir arada yapan bir komut sunuyor! Bu komut `git pull`." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "`fetch` ve `merge` işlemlerini sırasıyla nasıl çalıştırdığımıza bakalım." + ], + "afterMarkdowns": [ + "Boom -- `git fetch` komutuyla `C3`'ü indirdik ve ardından `git merge o/main` komutuyla bu işi birleştirdik. Artık `main` dalımız, uzak depodan (bu durumda `origin` olarak adlandırıldı) gelen yeni çalışmaları yansıtıyor." + ], + "command": "git fetch; git merge o/main", + "beforeCommand": "git clone; git commit; git fakeTeamwork" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "`git pull` kullanırsak ne olur?" + ], + "afterMarkdowns": [ + "Aynı şey! Bu, `git pull`'ün aslında bir `git fetch` ve ardından yeni alınan dalın merge işlemiyle kısaltılmış bir versiyon olduğunu açıkça gösteriyor." + ], + "command": "git pull", + "beforeCommand": "git clone; git commit; git fakeTeamwork" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "`git pull` komutunun detaylarını daha sonra inceleyeceğiz (seçenekler ve argümanlar dahil), ancak şimdilik bunu seviyede deneyelim.", + "", + "Unutmayın -- aslında bu seviyeyi sadece `fetch` ve `merge` komutlarıyla çözebilirsiniz, ancak bu size ekstra bir komut maliyetine mal olur :P" + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/pullArgs.js b/src/levels/remote/pullArgs.js index 883b22b79..3a1a66edd 100644 --- a/src/levels/remote/pullArgs.js +++ b/src/levels/remote/pullArgs.js @@ -20,7 +20,8 @@ exports.level = { "vi": "Tham số pull", "sl_SI": "Pull argumenti", "pl": "Argumenty pull", - "it_IT": "Parametri di git pull" + "it_IT": "Parametri di git pull", + "tr_TR": "Git pull komutunun parametreleri", }, "hint": { "en_US": "Remember that you can create new local branches with fetch/pull arguments", @@ -40,7 +41,8 @@ exports.level = { "vi": "Nhớ rằng, bạn có thể tạo nhánh cục bộ mới với tham số của fetch/pull", "sl_SI": "Zapomni si, da lahko ustvariš nove lokalne branche s fetch/pull argumenti.", "pl": "Pamiętaj, że za pomocą argumentów fetch/pull możesz tworzyć nowe lokalne gałęzie", - "it_IT": "Ricorda che puoi creare nuovi rami locali sfruttando fetch/pull + parametri" + "it_IT": "Ricorda che puoi creare nuovi rami locali sfruttando fetch/pull + parametri", + "tr_TR": "Unutma, fetch/pull parametreleri ile yeni yerel dallar oluşturabilirsin", }, "startDialog": { "en_US": { @@ -1384,5 +1386,79 @@ exports.level = { } ] }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git pull argümanları", + "", + "Artık `git fetch` ve `git push` için argümanlarla ilgili bilmeniz gereken hemen hemen *her şey* öğrendiniz, geriye neredeyse hiçbir şey kalmadı :)", + "", + "Çünkü git pull, nihayetinde *gerçekten* sadece bir fetch ve ardından alınan değişikliklerin birleştirilmesi için kullanılan kısa bir komuttur. Bunu, `git fetch` komutunu *aynı* argümanlarla çalıştırmak ve sonra bu commitlerin nereye yerleştiğine bakarak birleştirmek gibi düşünebilirsiniz.", + "", + "Bu, karmaşık argümanlar kullansanız bile geçerlidir. İşte bazı örnekler:" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "İşte git'teki bazı eşdeğer komutlar:", + "", + "`git pull origin foo` şu komutla eşdeğerdir:", + "", + "`git fetch origin foo; git merge o/foo`", + "", + "Ve...", + "", + "`git pull origin bar:bugFix` şu komutla eşdeğerdir:", + "", + "`git fetch origin bar:bugFix; git merge bugFix`", + "", + "Görüyorsunuz değil mi? git pull aslında fetch + merge komutlarının kısaltmasıdır ve git pull yalnızca commitlerin nereye yerleştiğiyle ilgilenir (fetch sırasında bulduğu `destination` argümanı).", + "", + "Şimdi bir demo yapalım:" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Eğer fetch edilecek yeri belirtirsek, her şey daha önce fetch ile olduğu gibi gerçekleşir, ancak yeni alınan değişiklikleri birleştiririz." + ], + "afterMarkdowns": [ + "Görüyorsunuz! `main`'i belirterek `o/main` üzerindeki commitleri normal şekilde indirdik. Sonra `o/main`'i şu anda üzerinde çalıştığımız konumla birleştirdik, bu da *yerel main branşı* değil. Bu nedenle aslında git pull'ü farklı konumlardan (aynı argümanlarla) birden fazla kez çalıştırmak, birden fazla branşı güncellemek için mantıklı olabilir." + ], + "command": "git pull origin main", + "beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Peki ya kaynak ve hedef ile de çalışıyor mu? Kesinlikle! Bunu görelim:" + ], + "afterMarkdowns": [ + "Vay, bu bir komutta tonlarca şey oldu. Yerel olarak `foo` adında yeni bir branch oluşturduk, uzak depodaki `main`'den commitleri bu `foo` branch'ine indirdik ve sonra bu branch'i şu anda üzerinde çalıştığımız `bar` branch'ine birleştirdik. Bu gerçekten 9000'in üzerinde!!!" + ], + "command": "git pull origin main:foo", + "beforeCommand": "git clone; git fakeTeamwork; go -b bar; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Tamam, bitirmek için hedef görselleştirmesinin durumuna ulaşın. Bazı commitleri indirmeniz, yeni branşlar oluşturmanız ve bu branşları diğer branşlara birleştirmeniz gerekecek, ancak bu çok fazla komut almaz :P" + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/push.js b/src/levels/remote/push.js index d0aa37055..00c22d295 100644 --- a/src/levels/remote/push.js +++ b/src/levels/remote/push.js @@ -779,15 +779,15 @@ exports.level = { "markdowns": [ "## Git Push", "", - "Ok, so I've fetched changes from remote and incorporated them into my work locally. That's great and all... but how do I share _my_ awesome work with everyone else?", + "Tamam, uzak depodan değişiklikleri çektim ve bunları yerel olarak işime dahil ettim. Bu harika, ama _benim_ harika işlerimi diğer herkesle nasıl paylaşırım?", "", - "Well, the way to upload shared work is the opposite of downloading shared work. And what's the opposite of `git pull`? `git push`!", + "Evet, paylaşılan işleri yüklemenin yolu, paylaşılan işleri indirme yolunun tersidir. Peki, `git pull`'ün tersi nedir? `git push`!", "", - "`git push` is responsible for uploading _your_ changes to a specified remote and updating that remote to incorporate your new commits. Once `git push` completes, all your friends can then download your work from the remote.", + "`git push`, _sizin_ değişikliklerinizi belirtilen bir uzak depoya yüklemek ve o uzak depoyu yeni commitlerinizle güncellemekten sorumludur. `git push` tamamlandığında, tüm arkadaşlarınız uzak depodan işinizi indirebilir.", "", - "You can think of `git push` as a command to \"publish\" your work. It has a bunch of subtleties that we will get into shortly, but let's start with baby steps...", + "`git push`'u işinizi \"yayınlamak\" için bir komut olarak düşünebilirsiniz. Birkaç ince detaya sahip olacak, ama öncelikle adım adım başlayalım...", "", - "*note -- the behavior of `git push` with no arguments varies depending on one of git's settings called `push.default`. The default value for this setting depends on the version of git you're using, but we are going to use the `upstream` value in our lessons. This isn't a huge deal, but it's worth checking your settings before pushing in your own projects.*" + "*Not -- `git push`'un argüman olmadan davranışı, git'in `push.default` adında bir ayarına bağlı olarak değişir. Bu ayarın varsayılan değeri kullandığınız git sürümüne bağlıdır, ancak biz derslerimizde `upstream` değerini kullanacağız. Bu büyük bir mesele değil, ancak kendi projelerinizde push yapmadan önce ayarlarınızı kontrol etmekte fayda var.*" ] } }, @@ -795,10 +795,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "Here we have some changes that the remote does not have. Let's upload them!" + "Burada uzakta olmayan bazı değişikliklerimiz var. Hadi bunları yükleyelim!" ], "afterMarkdowns": [ - "There we go -- the remote received commit `C2`, the branch `main` on the remote was updated to point at `C2`, and our *own* reflection of the remote (`o/main`) was updated as well. Everything is in sync!" + "İşte böyle -- uzak depo `C2` commitini aldı, uzak depodaki `main` branch'i `C2`'yi işaret edecek şekilde güncellendi ve bizim *kendi* uzak depo yansımamız (`o/main`) da güncellendi. Her şey senkronize!" ], "command": "git push", "beforeCommand": "git clone; git commit" @@ -808,7 +808,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "To finish this level, simply share two new commits with the remote. Strap in though, because these lessons are about to get a lot harder!" + "Bu bölümü bitirmek için, uzak depoya iki yeni commit paylaşmanız yeterli. Ancak dikkatli olun, çünkü bu dersler çok daha zorlaşacak!" ] } } diff --git a/src/levels/remote/pushArgs.js b/src/levels/remote/pushArgs.js index 372701938..e46061731 100644 --- a/src/levels/remote/pushArgs.js +++ b/src/levels/remote/pushArgs.js @@ -23,7 +23,8 @@ exports.level = { "vi": "Tham số git push", "sl_SI": "Git push argumenti", "pl": "Argumenty git push", - "it_IT": "Parametri di git push" + "it_IT": "Parametri di git push", + "tr_TR": "Git push argümanları", }, "hint": { "en_US": "You can always look at the last slide of the dialog with \"objective\"", @@ -42,7 +43,8 @@ exports.level = { "vi": "Bạn có thể sử dụng \"objective\" để đọc trang cuối của cửa sổ hộp thoại", "sl_SI": "Vedno lahko pogledaš zadnji dialog z \"objective\".", "pl": "Możesz wpisać \"objective\", żeby zobaczyć ostatni slajd z każdego poziomu", - "it_IT": "Puoi sempre guardare l'ultima slide del dialogo con \"objective\"" + "it_IT": "Puoi sempre guardare l'ultima slide del dialogo con \"objective\"", + "tr_TR": "Her zaman \"objective\" komutunu kullanarak diyalog penceresinin son sayfasına bakabilirsiniz", }, "startDialog": { "en_US": { @@ -1298,6 +1300,79 @@ exports.level = { } } ] - } + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Push argümanları", + "", + "Harika! Şimdi uzaktan izleme dallarını bildiğine göre, git push, fetch ve pull komutlarının nasıl çalıştığının ardındaki bazı gizemleri keşfetmeye başlayabiliriz. Her seferinde bir komut ele alacağız, ancak bu komutlar arasındaki kavramlar oldukça benzer.", + "", + "Öncelikle `git push` komutuna bakalım. Uzaktan izleme dersinde öğrendiğin gibi, git, şu anda kontrol edilen dalın (takip ettiği uzak dal) özelliklerine bakarak, hangi uzak sunucuya ve hangi dalına push yapılacağını anlar. Bu, herhangi bir argüman belirtilmediğinde görülen davranıştır, ancak git push, şu şekilde argümanlar alabilir:", + "", + "`git push `", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + " parametresi nedir diyorsanız? Ayrıntılara yakında dalacağız, ancak önce bir örnek. Aşağıdaki komutu verelim:", + "", + "`git push origin main`", + "", + "Bu komutun İngilizcesi şu şekilde çevrilebilir:", + "", + "*\"main\" adlı dalı deposunda bul, tüm commit'leri al ve sonra \"origin\" adlı uzak depodaki \"main\" dalına git. O dalda eksik olan commit'leri oraya ekle ve işin bittiğinde bana haber ver.*", + "", + "Burada `main`'i \"place\" parametresi olarak belirtmemiz, git'e commit'lerin nereden geleceğini ve nereye gideceğini söyledik. Aslında bu, iki depo arasında senkronize edilecek \"yer\" veya \"konum\"dur.", + "", + "Unutmayın ki git'e her şeyi bildirdiğimiz için (her iki argümanı da belirterek), nerede olduğumuzu kontrol etmez!" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Argümanları belirttiğimiz bir örneği görelim. Bu örnekte kontrol edilen konuma dikkat edin." + ], + "afterMarkdowns": [ + "İşte böyle! `main` dalı, bu argümanları belirttiğimiz için uzak depoda güncellendi." + ], + "command": "git checkout C0; git push origin main", + "beforeCommand": "git clone; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Ya argümanları belirtmeseydik? Ne olurdu?" + ], + "afterMarkdowns": [ + "Komut başarısız olur (gördüğünüz gibi), çünkü `HEAD` uzak izleme dalında kontrol edilmiyor." + ], + "command": "git checkout C0; git push", + "beforeCommand": "git clone; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Tamam, bu seviye için hem `foo` hem de `main` dallarını uzak depoda güncellememiz gerekiyor. Fark şu ki, bu seviyede `git checkout` devre dışı bırakıldı!", + "", + "*Not: Uzak depo dalları, UI'ımızda tam `origin/` etiketinin sığmadığı için `o/` önekleriyle etiketlendi. Endişelenmeyin... basitçe `origin`'i uzak depo adı olarak kullanın, her zamanki gibi.*" + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/pushArgs2.js b/src/levels/remote/pushArgs2.js index 9dafdec8a..bcf619543 100644 --- a/src/levels/remote/pushArgs2.js +++ b/src/levels/remote/pushArgs2.js @@ -19,7 +19,8 @@ exports.level = { "vi": "Tham số git push -- bản mở rộng!", "sl_SI": "Git push argumenti -- Razširjeni!", "pl": "Argumenty git push -- Głębiej!", - "it_IT": "Parametri di git push - Espansione!" + "it_IT": "Parametri di git push - Espansione!", + "tr_TR": "Git push argümanları -- Genişletilmiş!", }, "hint": { "en_US": "Remember you can admit defeat and type in \"show solution\" :P", @@ -38,7 +39,8 @@ exports.level = { "vi": "Nhớ rằng, bạn có thể thừa nhận thất bại và gõ \"show solution\" :P", "sl_SI": "Vedno se lahko predaš in napišeš \"show solution\". :P", "pl": "Pamiętaj, że możesz się poddać i zobaczyć gotowe rozwiązanie, wpisując \"show solution\" :P", - "it_IT": "Puoi sempre ammettere la tua sconfitta e digitare \"show solution\" :P" + "it_IT": "Puoi sempre ammettere la tua sconfitta e digitare \"show solution\" :P", + "tr_TR": "Unutma, teslim olabileceğini ve \"show solution\" yazabileceğini :P", }, "startDialog": { "en_US": { @@ -1241,5 +1243,75 @@ exports.level = { } ] }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## `` argümanı detayları", + "", + "Önceki dersten hatırlayacağınız gibi, `git push` komutunda `main`'i yer argümanı olarak belirttiğimizde, commitlerin nereden geleceğini (kaynak) ve nereye gideceğini (hedef) belirlemiştik.", + "", + "O zaman şöyle bir soru aklınıza gelebilir: Eğer kaynak ve hedef farklı olursa ne olur? Örneğin, yerel `foo` dalındaki commitleri uzaktaki `bar` dalına itmek isterseniz?", + "", + "Ne yazık ki, git'te bu imkansız... Şaka yapıyorum! Tabii ki mümkün :)... Git, oldukça fazla esneklik sunar (belki de fazla).", + "", + "Bir sonraki slaytta nasıl yapılacağını görelim..." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Hem kaynak hem de hedefi belirtmek için, her ikisini iki nokta ile birleştirmeniz yeterlidir:", + "", + "`git push origin :`", + "", + "Bu, genellikle iki noktalı refspec olarak adlandırılır. Refspec, git'in anlayabileceği bir konum için kullanılan havalı bir terimdir (örneğin `foo` dalı ya da sadece `HEAD~1`).", + "", + "Her iki argümanı bağımsız olarak belirttiğinizde, uzaktaki komutlarla oldukça detaylı ve hassas işlemler yapabilirsiniz. Hadi bir demo görelim!" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Hatırlayın, `source` git'in anlayacağı herhangi bir konum olabilir:" + ], + "afterMarkdowns": [ + "Vay canına! Oldukça karmaşık bir komut ama mantıklı -- git, `foo^`'u bir konuma çözümlüyor, uzak sunucuda henüz bulunmayan commitleri yüklüyor ve sonra hedefi güncelliyor." + ], + "command": "git push origin foo^:main", + "beforeCommand": "git clone; go -b foo; git commit; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Peki ya hedef dalı yoksa ne olur? Sorun değil! Sadece bir dal adı verin, git sizin için bu dalı uzak sunucuda oluşturacaktır." + ], + "afterMarkdowns": [ + "Vay, bu oldukça havalı :D" + ], + "command": "git push origin main:newBranch", + "beforeCommand": "git clone; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu seviyede, görsellemede gösterilen hedef duruma ulaşmaya çalışın ve şu formatı hatırlayın:", + "", + "`:`" + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/pushManyFeatures.js b/src/levels/remote/pushManyFeatures.js index bffd2262a..c09d0ebce 100644 --- a/src/levels/remote/pushManyFeatures.js +++ b/src/levels/remote/pushManyFeatures.js @@ -19,7 +19,8 @@ exports.level = { "vi": "Nhớ rằng bạn luôn luôn có thể hoàn tác hoặc soạn lại câu lệnh", "sl_SI": "Vedno lahko razveljaviš ukaz ali ponastaviš stopnjo.", "pl": "Pamiętaj, że zawsze możesz skorzystać z poleceń undo i reset", - "it_IT": "Ricorda che puoi sempre usare i comandi undo e reset" + "it_IT": "Ricorda che puoi sempre usare i comandi undo e reset", + "tr_TR": "Unutmayın, her zaman undo veya reset komutlarını kullanabilirsiniz.", }, "name": { "en_US": "Push Main!", @@ -38,7 +39,8 @@ exports.level = { "vi": "Push Main!", "sl_SI": "Push Main!", "pl": "Wypychanie dla wytrwałych!", - "it_IT": "Push main!" + "it_IT": "Push main!", + "tr_TR": "Main'i Push Et!", }, "compareOnlyMainHashAgnostic": true, "startDialog": { @@ -943,5 +945,58 @@ exports.level = { } ] }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Özellik Dalı Birleştirme", + "", + "Artık fetch, pull ve push işlemleri konusunda rahat olduğunuza göre, bu becerileri yeni bir iş akışı ile test edelim.", + "", + "Büyük projelerde geliştiricilerin tüm çalışmalarını özellik dallarında (`main` dalından) yapmaları ve bu çalışmaları yalnızca hazır olduklarında entegre etmeleri yaygın bir durumdur. Bu, önceki derse benzer (yan dalların uzaktaki depoya gönderilmesi gibi), ancak burada bir adım daha ekliyoruz.", + "", + "Bazı geliştiriciler yalnızca `main` dalında olduklarında push ve pull işlemi yapar -- bu şekilde `main` her zaman uzaktaki `o/main` ile güncel olur.", + "", + "Bu iş akışında iki şeyi birleştiriyoruz:", + "", + "* Özellik dalı çalışmalarını `main` dalına entegre etmek ve", + "* Uzaktan push ve pull işlemi yapmak" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "`main` dalını güncelleme ve çalışmayı push etme işlemini hızlıca gözden geçirelim." + ], + "afterMarkdowns": [ + "Burada iki komut çalıştırdık ki bunlar:", + "", + "* Çalışmamızı uzak depodan gelen yeni commit'lere rebase etti, ve", + "* Çalışmamızı uzak depoya gönderdi" + ], + "command": "git pull --rebase; git push", + "beforeCommand": "git clone; git commit; git fakeTeamwork" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu seviye oldukça zorlu -- çözmek için genel bir çizelge:", + "", + "* Üç özellik dalı var -- `side1`, `side2`, ve `side3`", + "* Bu özelliklerin her birini sırasıyla uzak depoya push etmemiz gerekiyor", + "* Uzak depo zaten güncellendi, bu yüzden bu çalışmaları da entegre etmemiz gerekecek", + "", + ":O yoğun! İyi şanslar, bu seviyeyi tamamlamak büyük bir adım." + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/remoteBranches.js b/src/levels/remote/remoteBranches.js index edafe5188..c1cc82219 100644 --- a/src/levels/remote/remoteBranches.js +++ b/src/levels/remote/remoteBranches.js @@ -20,7 +20,8 @@ exports.level = { "vi": "Nhánh từ xa", "sl_SI": "Oddaljeni Branchi", "pl": "Zdalne gałęzie", - "it_IT": "Rami Remoti" + "it_IT": "Rami Remoti", + "tr_TR": "Uzak Dallar", }, "hint": { "en_US": "Pay attention to the ordering -- commit on main first!", @@ -40,7 +41,8 @@ exports.level = { "vi": "Chú ý đến thứ tự -- commit trên nhánh main trước!", "sl_SI": "Bodi pozoren na vrsti red -- commitaj najprej na main!", "pl": "Zwróć uwagę na kolejność -- najpierw zatwierdzaj na main", - "it_IT": "Presta attenzione all'ordine -- fai prima un commit sul main!" + "it_IT": "Presta attenzione all'ordine -- fai prima un commit sul main!", + "tr_TR": "Sıraya dikkat et -- önce main üzerinde commit yap!", }, "startDialog": { "en_US": { @@ -1146,6 +1148,69 @@ exports.level = { } } ] - } + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Uzak Dallanma", + "", + "`git clone` komutunun nasıl çalıştığını gördükten sonra, yapılan değişikliklere biraz daha yakından bakalım.", + "", + "İlk fark ettiğiniz şey, yerel deposunda `o/main` adında yeni bir dalın görünmesidir. Bu tür dallara _uzak_ dal denir; uzak dallar özel özelliklere sahiptir çünkü özel bir amaca hizmet ederler.", + "", + "Uzak dallar, uzak depoların _durumunu_ yansıtır (son kez bu uzak depolarla iletişim kurduğunuzdan itibaren). Bu dallar, yerel çalışmanızla kamuya açık çalışmanız arasındaki farkı anlamanıza yardımcı olur — başkalarıyla çalışmanızı paylaşmadan önce atılacak kritik bir adımdır.", + "", + "Uzak dalların özel bir özelliği vardır; onları kontrol ettiğinizde, `HEAD` moduna geçersiniz. Git bunu bilerek yapar çünkü bu dallarda doğrudan çalışamazsınız; başka bir yerde çalışıp ardından çalışmanızı uzak depo ile paylaşmalısınız (ve bundan sonra uzak dallarınız güncellenir).", + "", + "Açık olmak gerekirse: Uzak dallar yerel deponuzda bulunur, uzak depoda değil." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### `o/` Nedir?", + "", + "Bu uzak dallarda önceden gelen `o/` ne için diye merak ediyor olabilirsiniz. Uzak dalların (zorunlu) bir adlandırma konvansiyonu vardır — şu formatta görüntülenirler:", + "", + "* `/`", + "", + "Dolayısıyla, `o/main` adındaki bir dala bakarsanız, dal adı `main` ve uzak adın adı `o`'dur.", + "", + "Çoğu geliştirici aslında ana uzaklarını `origin` olarak adlandırır, `o` değil. Bu o kadar yaygındır ki, git bir depoyu `git clone` komutuyla kopyaladığınızda, uzak deponuzu `origin` olarak ayarlar.", + "", + "Maalesef, `origin`'in tam adı UI'mızda yer almaz, bu yüzden `o` olarak kısaltıyoruz :( Gerçek git kullanırken, uzak deponuzun muhtemelen `origin` olarak adlandırıldığını unutmayın!", + "", + "Bunlar biraz yoğun bilgiler, şimdi tüm bunları pratikte görelim." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Bir uzak dalı inceleyelim ve ne olduğunu görelim." + ], + "afterMarkdowns": [ + "Gördüğünüz gibi, git bizi `detached HEAD` moduna aldı ve yeni bir commit eklediğimizde `o/main` güncellenmedi. Bunun nedeni, `o/main` dalının yalnızca uzak depo güncellendiğinde güncellenmesidir." + ], + "command": "git checkout o/main; git commit", + "beforeCommand": "git clone" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu seviyeyi bitirmek için, önce `main` dalından bir commit yapın ve sonra `o/main`'i kontrol ettikten sonra bir commit daha yapın. Bu, uzak dalların nasıl farklı davrandığını ve yalnızca uzak depo durumunu yansıtacak şekilde nasıl güncellendiklerini anlamanıza yardımcı olacaktır." + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/sourceNothing.js b/src/levels/remote/sourceNothing.js index e7da04279..903459a6d 100644 --- a/src/levels/remote/sourceNothing.js +++ b/src/levels/remote/sourceNothing.js @@ -25,7 +25,8 @@ exports.level = { "vi": "Không có nguồn", "sl_SI": "Izvor Ničesar", "pl": "Źródło nicości", - "it_IT": "Fonte del nulla" + "it_IT": "Fonte del nulla", + "tr_TR": "Hiçliğin kaynağı" }, "hint": { "en_US": "The branch command is disabled for this level so you'll have to use fetch!", @@ -44,7 +45,8 @@ exports.level = { "vi": "Lệnh branch đã bị vô hiệu hóa ở cấp độ này nên bạn sẽ phải dùng fetch!", "sl_SI": "Ukaz za branchanje je v tej stopnji onemogočen, zato boš moral uporabiti fetch!", "pl": "Polecenie branch jest zablokowane na tym poziomie, musisz skorzystać z fetch!", - "it_IT": "Il comando branch è disabilitato per questo livello quindi dovrai usare fetch!" + "it_IT": "Il comando branch è disabilitato per questo livello quindi dovrai usare fetch!", + "tr_TR": "Bu seviyede branch komutu devre dışı bırakıldı, bu yüzden fetch kullanman gerekecek!", }, "startDialog": { "en_US": { @@ -951,6 +953,59 @@ exports.level = { } } ] - } + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### `` Anomalleri", + "", + "Git, `` parametresini iki tuhaf şekilde kullanır. Bu iki tuhaf kullanım, teknik olarak git push ve git fetch için \"hiçbir şey\"i geçerli bir `source` olarak belirleyebilmenizi sağlayan bir durumdan kaynaklanır. Hiçbir şey belirlemenin yolu, boş bir argüman kullanmaktır:", + "", + "* `git push origin :side`", + "* `git fetch origin :bugFix`", + "", + "Hadi bunların ne yaptığını görelim..." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "\"Hiçbir şeyi\" uzak bir dala push yapmak ne yapar? Onu siler!" + ], + "afterMarkdowns": [ + "İşte, \"hiçbir şeyi\" uzak bir dala push yaparak `foo` dalını başarıyla sildik. Bu bir anlam taşıyor gibi... " + ], + "command": "git push origin :foo", + "beforeCommand": "git clone; git push origin main:foo" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Son olarak, \"hiçbir şey\"i bir yere fetch yapmak, aslında yeni bir dal oluşturur." + ], + "afterMarkdowns": [ + "Çok garip / tuhaf, ama neyse. Git işte böyle!" + ], + "command": "git fetch origin :bar", + "beforeCommand": "git clone" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Bu hızlı bir seviye -- sadece bir uzak dalı sil ve `git fetch` ile yeni bir dal oluşturmayı bitir!" + ] + } + } + ] + }, } }; diff --git a/src/levels/remote/tracking.js b/src/levels/remote/tracking.js index 191f36a05..fcf8f3bc6 100644 --- a/src/levels/remote/tracking.js +++ b/src/levels/remote/tracking.js @@ -19,7 +19,8 @@ exports.level = { "vi": "Theo dõi từ xa", "sl_SI": "Sledenje Oddaljenega Repota", "pl": "Śledzenie zdalnych repo", - "it_IT": "Tracciamento remoto" + "it_IT": "Tracciamento remoto", + "tr_TR": "Uzaktan İzleme", }, "hint": { "en_US": "Remember there are two ways to set remote tracking!", @@ -38,7 +39,8 @@ exports.level = { "vi": "Hãy nhớ rằng, có 2 cách để thiết lập theo dõi từ xa!", "sl_SI": "Spomni se, da obstajata dva načina za sledenje oddaljenega repota.", "pl": "Pamiętaj, zdalne repo można śledzić na dwa sposoby!", - "it_IT": "Ricorda che ci sono due modi per impostare il tracciamento remoto!" + "it_IT": "Ricorda che ci sono due modi per impostare il tracciamento remoto!", + "tr_TR": "Unutma, uzak izlemeyi ayarlamanın iki yolu vardır!", }, "startDialog": { "en_US": { @@ -2167,6 +2169,122 @@ exports.level = { } } ] - } + }, + "tr_TR": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Uzak İzleme (Remote-Tracking) dalları", + "", + "Son birkaç derste gördüğünüz bazı \"büyülü\" şeylerden biri, git'in `main` dalının `o/main` ile ilişkili olduğunu bilmesiydi. Elbette bu dalların benzer isimlere sahip olması ve uzak `main` dalını yerel `main` dalıyla bağlamak mantıklı olabilir, ancak bu bağlantı iki senaryoda açıkça gösterilmektedir:", + "", + "* Bir pull işlemi sırasında, commit'ler `o/main`'e indirilir ve sonra `main` dalına *birleştirilir* (merge edilir). Birleştirilme hedefi, bu bağlantıdan türetilir.", + "* Bir push işlemi sırasında, `main` dalındaki çalışma uzak `main` dalına (yerel olarak `o/main` olarak temsil edilen) itilir. Push işleminin *hedefi* ise `main` ve `o/main` arasındaki bağlantıdan belirlenir." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Uzak izleme", + "", + "Kısa bir şekilde özetlemek gerekirse, `main` ve `o/main` arasındaki bu bağlantı, dalların \"uzak izleme\" özelliğiyle basitçe açıklanır. `main` dalı, `o/main`'i izlemek üzere ayarlanmıştır; bu, `main` dalı için dolaylı bir birleştirme hedefi ve dolaylı bir push hedefi olduğu anlamına gelir.", + "", + "Bu özelliğin, herhangi bir komut çalıştırmadan nasıl ayarlandığını merak ediyor olabilirsiniz. Aslında, bir depo klonladığınızda, bu özellik sizin için otomatik olarak ayarlanır.", + "", + "Bir klonlama işlemi sırasında, git uzak depodaki her dal için bir uzak dal (yani `o/main` gibi) oluşturur. Ardından, genellikle `main` olan aktif uzak dalı izleyen bir yerel dal oluşturur.", + "", + "Git clone işlemi tamamlandığında, yalnızca bir yerel dalınız olur (yani bunaltıcı olmazsınız), ancak uzak depodaki farklı dalları görebilirsiniz (çok meraklıysanız). Bu, her iki dünyanın en iyisi!", + "", + "Bu, aynı zamanda klonlama işlemi sırasında şu çıktıyı görmenizin nedenini de açıklar:", + "", + " yerel dal \"main\" uzak dal \"o/main\" ile izlenmek üzere ayarlandı" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Bunu kendim belirleyebilir miyim?", + "", + "Evet, belirleyebilirsiniz! Herhangi bir dalı `o/main`'i izlemeye ayarlayabilirsiniz ve eğer bunu yaparsanız, o dalın, `main` ile aynı dolaylı push hedefi ve birleştirme hedefi olacaktır. Bu, `totallyNotMain` adında bir dalda `git push` komutunu çalıştırarak, çalışmanızı uzak `main` dalına itebileceğiniz anlamına gelir!", + "", + "Bu özelliği ayarlamanın iki yolu vardır. Birincisi, bir uzak dalı belirtilen ref olarak kullanarak yeni bir dal oluşturmak. Aşağıdaki komutu çalıştırarak:", + "", + "`git checkout -b totallyNotMain o/main`", + "", + "`totallyNotMain` adında yeni bir dal oluşturur ve bu dalı `o/main`'i izlemeye ayarlar." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Yeterince konuştuk, şimdi bir gösterim izleyelim! Yeni bir dal olan `foo`'yu kontrol ederek, bunu uzak `main` dalını izlemeye ayarlayacağız." + ], + "afterMarkdowns": [ + "Gördüğünüz gibi, `o/main`'in dolaylı birleştirme hedefini kullanarak `foo` dalını güncelledik. Dikkat edin, `main` güncellenmedi!" + ], + "command": "git checkout -b foo o/main; git pull", + "beforeCommand": "git clone; git fakeTeamwork" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Bu aynı şekilde git push için de geçerlidir." + ], + "afterMarkdowns": [ + "Boom. Çalışmamızı `foo` adında bir dal olsa bile uzak `main` dalına ittik." + ], + "command": "git checkout -b foo o/main; git commit; git push", + "beforeCommand": "git clone" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Yöntem #2", + "", + "Bir dalda uzak izlemeyi ayarlamanın bir diğer yolu da `git branch -u` seçeneğini kullanmaktır. Aşağıdaki komutu çalıştırarak:", + "", + "`git branch -u o/main foo`", + "", + "`foo` dalını `o/main`'i izlemeye ayarlar. Eğer `foo` şu anda kontrol ediliyorsa, hatta bunu dışarıda bırakabilirsiniz:", + "", + "`git branch -u o/main`" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Şimdi, uzak izlemeyi belirtmenin bu diğer yolunu hızlıca görelim..." + ], + "afterMarkdowns": [ + "Öncekiyle aynı, sadece daha açık bir komut. Harika!" + ], + "command": "git branch -u o/main foo; git commit; git push", + "beforeCommand": "git clone; git checkout -b foo" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Tamam! Bu seviyede, yerel olarak `main`'de olmasanız bile, uzak `main` dalına çalışmanızı itmeniz gerekiyor. Bunun yerine `side` adında bir dal oluşturmalısınız, bu hedef diyagramında gösterilecektir." + ] + } + } + ] + }, } };