diff --git a/src/js/dialogs/nextLevel.js b/src/js/dialogs/nextLevel.js index 2c653636..c474d887 100644 --- a/src/js/dialogs/nextLevel.js +++ b/src/js/dialogs/nextLevel.js @@ -183,7 +183,7 @@ exports.dialog = { markdowns: [ '## Dobra robota!!', '', - 'Rozwiązałeś poziom za pomocą *{numCommands}* poleceń/poleceniach; ', + 'Rozwiązałeś poziom używając *{numCommands}* poleceń/ia; ', 'nasze rozwiązanie składa się z {best}.' ] } diff --git a/src/js/intl/strings.js b/src/js/intl/strings.js index f8c04abb..e621ad03 100755 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -39,7 +39,7 @@ exports.strings = { 'ko': '다음 레벨로 넘어갈까요? 레벨 *"{nextLevel}"*', 'vi': 'Bạn có muốn chuyển sang cấp độ tiếp: *"{nextLevel}"* không?', 'sl_SI': 'Bi rad nadaljeval na *"{nextLevel}"*, naslednjo stopnjo?', - 'pl': 'Czy chcesz przejść do *"{nextLevel}"*, następnego poziomu?' + 'pl': 'Czy chcesz przejść do następnego poziomu - *"{nextLevel}"*?' }, /////////////////////////////////////////////////////////////////////////// 'finish-dialog-win': { @@ -60,7 +60,7 @@ exports.strings = { 'ko': '멋져요! 우리의 해답과 일치하거나 우리보다 좀 더 나은 해답입니다.', 'vi': 'Tuyệt vời! Đáp án của bạn đạt chuẩn thâm chí có thể tốt hơn.', 'sl_SI': 'Bravo! Izenačil ali celo presegel si našo rešitev.', - 'pl': 'Niesamowite! Rozwiązano nasze zadanie, a nawet lepiej.' + 'pl': 'Niesamowite! Rozwiązałeś zadanie w ten sam sposób lub lepiej.' }, /////////////////////////////////////////////////////////////////////////// 'finish-dialog-lose': { @@ -1670,7 +1670,7 @@ exports.strings = { 'ko': 'Note: 이 레벨에선 오직 마스터 브랜치만이 검사될 것입니다.. 다른 브랜치들은 단순히 참고용입니다. (아래에 대시 라벨로 보여집니다.). "hide goal"을 사용하여 언제든지 창을 숨길 수 있습니다.', 'vi': 'Chú ý: Ở cấp độ này chỉ nhánh master bị kiểm tra. Các nhánh khác chỉ dùng để tham chiếu(có dấu - ở nhãn). Như thường lệ, bạn có thể ẩn mục tiêu bằng "hide goal".', 'sl_SI': 'Opomba: Samo master branch bo preverjen v tej stopnji. Ostali branchi so zgolj za referenco (prikazani kot črtaste oznake spodaj). Kot ponavadi, lahko skriješ dialog z "hide goal"', - 'pl': ' Uwaga: Na tym poziomie sprawdzana będzie tylko branch główny. Pozostałe branch-e są tylko do odwołania (pokazane jako przerywane etykiety poniżej). Jak zawsze, możesz ukryć to okno dialogowe z "ukryj cel".' + 'pl': ' Uwaga: Na tym poziomie sprawdzana będzie tylko główna gałąź. Pozostałe gałęzie są tylko do odwołania (pokazane jako przerywane etykiety poniżej). Jak zawsze, możesz ukryć to okno dialogowe z "ukryj cel".' }, /////////////////////////////////////////////////////////////////////////// 'hide-goal': { @@ -1796,7 +1796,7 @@ exports.strings = { 'ko': '{key}를 위한 번역은 아직 존재하지 않습니다 :( 번역에 참여해주세요!', 'vi': 'Bản dịch cho {key} không có rồi :( Nếu có thể thì hãy lên dự án của chúng tôi ở GitHub để cung cấp bản dịch!', 'sl_SI': 'Prevod za {key} še ne obstaja :( Skoči na github in dodaj prevod!', - 'pl': 'Tłumaczenie dla klucza "{key}" jeszcze nie istnieje tłumaczenia :(\nProszę wejdź na GitHub i zaoferuj tłumaczenie!' + 'pl': 'Tłumaczenie dla klucza "{key}" jeszcze nie istnieje tłumaczenia :( Zapraszam na GitHub, aby pomóc w tłumaczeniu!' }, /////////////////////////////////////////////////////////////////////////// 'error-untranslated': { @@ -1817,6 +1817,18 @@ exports.strings = { 'ko': '이 대화창이나 텍스트는 아직 번역되지 않았습니다. :( 번역에 참여해주세요!', 'vi': 'Hội thoại hoặc văn bản này chưa được dịch ra ngôn ngữ của bạn rồi. :( Hãy lên GitHub để cung cấp bản dịch!', 'sl_SI': 'Ta dialog ali tekst še ni preveden za tvoj jezik :( Skoči na github in dodaj prevod!', - 'pl' : 'Kolejne okno dialogowe lub tekst nie zostało jeszcze przetłumaczone na język polski :(\nZapraszam na GitHub, aby pomóc w tłumaczeniu!' + 'pl' : 'Kolejne okno dialogowe lub tekst nie zostało jeszcze przetłumaczone na język polski :( Zapraszam na GitHub, aby pomóc w tłumaczeniu!' + }, + /////////////////////////////////////////////////////////////////////////// + 'cancel-button': { + '__desc__': 'Cancel button label after completing a level', + 'en_US': 'Cancel', + 'pl' : 'Powrót' + }, + /////////////////////////////////////////////////////////////////////////// + 'confirm-button': { + '__desc__': 'Confirm button label after completing a level', + 'en_US': 'Confirm', + 'pl' : 'Dalej' } }; diff --git a/src/js/views/index.js b/src/js/views/index.js index ab825f28..759a1658 100644 --- a/src/js/views/index.js +++ b/src/js/views/index.js @@ -139,8 +139,8 @@ var ConfirmCancelView = ResolveRejectBase.extend({ this.destination = options.destination; this.deferred = options.deferred || Q.defer(); this.JSON = { - confirm: options.confirm || 'Confirm', - cancel: options.cancel || 'Cancel' + confirm: options.confirm || intl.str('confirm-button'), + cancel: options.cancel || intl.str('cancel-button') }; this.render(); diff --git a/src/levels/rampup/detachedHead.js b/src/levels/rampup/detachedHead.js index f021ff55..d001b03b 100644 --- a/src/levels/rampup/detachedHead.js +++ b/src/levels/rampup/detachedHead.js @@ -17,7 +17,8 @@ exports.level = { "ko" : "HEAD 분리하기", "uk": "Втрачаємо голову чи detached HEAD", 'vi': "Tháo đầu cái nào", - "sl_SI": "Ločevanje tvoje glave - HEAD-a" + "sl_SI": "Ločevanje tvoje glave - HEAD-a", + "pl" : "Odczep swój HEAD" }, "hint": { "en_US": "Use the label (hash) on the commit for help!", @@ -34,7 +35,8 @@ exports.level = { "ko" : "커밋에 있는 라벨(hash)을 활용하세요!", "uk": "Орієнтуйся по індентифікаторам (hash) комітів.", "vi": "Dùng mã băm (hash) của commit để hoàn thành!", - "sl_SI": "Uporabi oznako (hash) commita za pomoč!" + "sl_SI": "Uporabi oznako (hash) commita za pomoč!", + "pl": "Wpisz (hash) w wiadomości commita aby uzyskać pomoc!", }, "startDialog": { "en_US": { @@ -1202,6 +1204,84 @@ exports.level = { } } ] + }, + "pl": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Poruszanie się w Git", + "", + "Zanim przejdziemy do niektórych z bardziej zaawansowanych funkcji Gita, ważne jest, aby zrozumieć różne sposoby poruszania się po drzewie commitów, które reprezentują twój projekt.", + "", + "Kiedy będziesz już czuć się swobodnie, twoje moce z innymi komendami gitowymi zostaną wzmocnione!", + "", + "", + "", + "", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## HEAD", + "", + "Najpierw musimy porozmawiać o \"HEAD\". HEAD to symboliczna nazwa dla aktualnie zcheckout'owanego commitu - jest to zasadniczo ostatni commit nad, którym pracowałeś.", + "", + "HEAD zawsze wskazuje na najnowszy commit, który jest odzwierciedlony w drzewie zmian. Większość poleceń git, które wprowadzają zmiany w drzewie, zaczyna się od zmiany HEAD'a.", + "", + "Normalnie HEAD wskazuje na nazwę gałęzi (jak np. `bugFix`). Kiedy commitujesz zmiany, status gałęzi `bugFix` się zmienia i zmiana ta jest widoczna właśnie poprzez przemieszczenie się HEAD'a." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Sprawdźmy to w akcji. Pokażemy HEAD przed i po commicie." + ], + "afterMarkdowns": [ + "Zobacz! HEAD przez cały czas ukrywał się pod naszą gałęzią `main`." + ], + "command": "git checkout C1; git checkout main; git commit; git checkout C2", + "beforeCommand": "" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "### Odłączanie HEAD'a", + "", + "Odłączenie HEAD'a oznacza po prostu dołączenie go do commita, a nie gałęzi. Tak to wyglądało przed:", + "", + "HEAD -> main -> C1", + "" + ], + "afterMarkdowns": [ + "A tak po:", + "", + "HEAD -> C1" + ], + "command": "git checkout C1", + "beforeCommand": "" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Aby ukończyć ten poziom, odłącz HEAD od gałęzi `bugFix` i dołącz go do commita.", + "", + "Możesz wybrać konkretnego commita posługując się jego haszem. Hasz każdego commita jest wyświetlany na okręgu, który go reprezentuje." + ] + } + } + ] } } }; diff --git a/src/levels/rampup/relativeRefs.js b/src/levels/rampup/relativeRefs.js index 5d5dc901..0cee8da9 100644 --- a/src/levels/rampup/relativeRefs.js +++ b/src/levels/rampup/relativeRefs.js @@ -17,7 +17,8 @@ exports.level = { "ko" : "상대 참조 (^) (Relative Refs)", "uk": "Відносні посилання", "vi": "Tham chiếu tương đối (^)", - "sl_SI": "Relativne Reference (^)" + "sl_SI": "Relativne Reference (^)", + "pl": "Referencje względne (^)", }, "hint": { "en_US": "Remember the Caret (^) operator!", @@ -34,7 +35,8 @@ exports.level = { "ko" : "(^)연산자를 기억하세요!", "uk": "Не забудь оператор `^`", "vi": "Đừng quên dấu mũ (^)!", - "sl_SI": "Spomni se na (^) operator!" + "sl_SI": "Spomni se na (^) operator!", + "pl": "Pamiętaj o operatorze karetu (^)!", }, "startDialog": { "en_US": { @@ -1161,6 +1163,81 @@ exports.level = { } } ] - } + }, + "pl": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Relatywne referencje", + "", + "Poruszanie się w Gitcie poprzez określanie haszy commitów może być trochę nudne. W prawdziwym świecie nie będziesz miał ładnej wizualizacji drzewa commitów obok swojego terminalu (chyba, że będziesz używać Fork'a lub TortoiseGit'a). Będziesz musiał użyć `git log` aby zobaczyć hasz.", + "", + "Co więcej, hasz jest zazwyczaj o wiele dłuższy w prawdziwym Gitcie. Na przykład, hash commitu, które był na początku poprzedniego poziomu to `fed2da64c0efc5293610bdd892f82a58e8cbc5d8`. Spróbuj to przeczytać!", + "", + "Plusem jest to, że Git jest sprytny jeżeli chodzi o hasze. Wymaga jedynie podania tylu znaków haszu, aż do momentu, gdy jednoznacznie zidentyfikuje konkretny commit. Dlatego mogę wpisać jedynie `fed2` zamiast długiego łańcucha powyżej." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Jak już powiedzieliśmy, wybieranie commitów używając ich hasza nie jest najprzyjemniejszą rzeczą w życiu, dlatego Git ma referencje względne. Są niesamowite!", + "", + "Korzystając z referencji względnych, możesz zacząć od miejsca, które zapamiętasz (jak np. gałąź `bugFix` lub `HEAD`) i pracować stamtąd.", + "", + "Relatywne commity są potężne, ale pokażemy tu tylko dwie proste sytuacje:", + "", + "* Poruszanie się wstecz o jeden commit `^`", + "* Poruszanie się wstecz o ileś commitów `~`" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Spójrzmy najpierw na operator Karety / daszek (^). Za każdym razem, gdy dodajesz go do referencji względnej, mówisz Gitowi, aby znalazł rodzica określonego commita.", + "", + "Więc wpisując `main^` mamy na myśli \"pierwszego rodzica z gałęzi `main`\".", + "", + "`main^^` to dziadek (przodek drugiego stopnia) gałęzi `main`", + "", + "Zcheckoutujmy commit powyżej `main`." + ], + "afterMarkdowns": [ + "Boom! Zrobione. O wiele łatwiej niż wpisując hasz commitu." + ], + "command": "git checkout main^", + "beforeCommand": "git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Możesz również odwołać się do `HEAD` jako referencji względnej. Użyjmy tego kilka razy, aby przesunąć się w górę drzewa commitów." + ], + "afterMarkdowns": [ + "Łatwizna! Możemy podróżować do tyłu w czasie używając `HEAD^`" + ], + "command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^", + "beforeCommand": "git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Aby ukończyć ten poziom, zcheckoutuj commit'a-rodzica z gałęzi `bugFix`. To spowoduje odczepienie `HEAD`a.", + "", + "Możesz wybrać commit'a po haszu jeżeli chcesz, ale spróbuj wykorzystać to czego się nauczyłeś i użyć referencji względnej!" + ] + } + } + ] + }, } }; diff --git a/src/levels/rampup/relativeRefs2.js b/src/levels/rampup/relativeRefs2.js index caa0fb67..dfac39f1 100644 --- a/src/levels/rampup/relativeRefs2.js +++ b/src/levels/rampup/relativeRefs2.js @@ -17,7 +17,8 @@ exports.level = { "ko" : "이번 레벨을 완료하려면 최소 한번은 직접 참조(해시)를 사용해야 합니다.", "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." + "sl_SI": "Moral boš uporabiti vsaj eno direktno referenco (hash) za dokončanje te stopnje.", + "pl": "Aby ukończyć ten poziom, musisz użyć co najmniej jednego bezpośredniej referencji (hasza).", }, "name": { "en_US": "Relative Refs #2 (~)", @@ -34,7 +35,8 @@ exports.level = { "ko" : "상대 참조 #2 (~)", "uk": "Відносні посилання №2", "vi": "Tham chiếu tương đối #2 (~)", - "sl_SI": "Relativne Reference #2 (~)" + "sl_SI": "Relativne Reference #2 (~)", + "pl": "Referencje względne #2 (~)" }, "startDialog": { "en_US": { @@ -1054,6 +1056,75 @@ exports.level = { } } ] - } + }, + "pl": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Operator \"~\"", + "", + "Powiedzmy, że chcesz przejść o wiele poziomów wstecz na drzewie commitów. Wielokrotne wpisywanie `^` może być męczące. Na tą okazję Git ma również operator - tyldę (~).", + "", + "", + "Operator tyldy (opcjonalnie) przyjmuje numer porządkowy, który określa liczbę rodziców o ile chcesz się wspiąć. Zobaczmy to w akcji." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Podajmy liczbę commitów, które chcemy przeskoczyć za `~`." + ], + "afterMarkdowns": [ + "Boom! Tak szybko - referencje względne są czadowe." + ], + "command": "git checkout HEAD~4", + "beforeCommand": "git commit; git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Forsowanie branczy", + "", + "Jesteś teraz ekspertem ds. referencji. *Wykorzystajmy* je do czegoś.", + "", + "Jednym z najczęstszych sposobów, w jaki korzystam z referencji względnych, są działania na gałęziach. Możesz bezpośrednio przypisać gałąź do commita za pomocą opcji `-f`. Coś w tym stylu:", + "", + "`git branch -f main HEAD~3`", + "", + "przenosi (na siłę) gałąź `main` trzy commity wstecz za HEADa." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Sprawdźmy poprzednią komendę w akcji." + ], + "afterMarkdowns": [ + "Proszę bardzo! Referencje względne umożliwiły w zwięzły sposób, by odnieść się do `C1`, a forsowanie gałęzi (`-f`) pozwoliło na szybkie przeniesienie gałęzi w to konkretne miejsce." + ], + "command": "git branch -f main HEAD~3", + "beforeCommand": "git commit; git commit; git commit; git checkout -b bugFix" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Teraz, gdy poznałeś referencje względne i forsowanie gałęzi w połączeniu, użyj ich do rozwiązania następnego poziomu.", + "", + "Aby ukończyć ten poziom przenieś `HEAD`, `main` oraz `bugFix` do wyświetlonych celów." + ] + } + } + ] + }, } }; diff --git a/src/levels/rampup/reversingChanges.js b/src/levels/rampup/reversingChanges.js index 3b42ef22..d302741c 100644 --- a/src/levels/rampup/reversingChanges.js +++ b/src/levels/rampup/reversingChanges.js @@ -18,7 +18,8 @@ exports.level = { "ru_RU": "Отмена изменений в Git", "uk": "Відміна змін в Git", "vi": "Hoàn tác thay đổi trong Git", - "sl_SI": "Revertanje Sprememb v Gitu" + "sl_SI": "Revertanje Sprememb v Gitu", + "pl": "Odwracanie zmian w Gitcie", }, "hint": { "en_US": "Notice that revert and reset take different arguments.", @@ -35,7 +36,8 @@ exports.level = { "ru_RU": "Обрати внимание, что revert и reset принимают разные параметры.", "uk": "Зверни увагу на те що revert та reset приймають різні параметри", "vi": "Lưu ý rằng hoàn tác(revert) và đặt lại(reset) có những đối số khác nhau.", - "sl_SI": "Revert in reset sprejmeta različne argumente." + "sl_SI": "Revert in reset sprejmeta različne argumente.", + "pl": "Zauważ, że revert i reset przyjmują różne argumenty", }, "startDialog": { "en_US": { @@ -984,6 +986,59 @@ exports.level = { } } ] + }, + "pl": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Odwracanie zmian w Gitcie", + "", + "Istnieje wiele sposobów na odwrócenie zmian w Gicie. Podobnie jak w przypadku commitowania, odwracanie zmian w Gitcie ma zarówno komponent niskopoziomowy (zapisywanie stanów plików lub ich fragmentów), jak i wysokopoziomowy (sposób, w jaki zmiany są faktycznie odwracane). Nasza aplikacja skupi się na tym ostatnim.", + "", + "Istnieją dwa podstawowe sposoby na cofnięcie zmian w Gicie - jeden z nich to `git reset`, a drugi `git revert`. Przyjrzymy się każdemu z nich w następnym oknie", + "" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "## Git Reset", + "", + "`git reset` odwraca zmiany poprzez przesunięcie referencji gałęzi wstecz w czasie do starszego commita. Można myśleć o tym jako \"przepisywaniu historii\", \"resetowanie\" spowoduje cofnięcie gałęzi do tyłu, tak jakby commity powyżej nigdy nie zostały dodane.", + "", + "Sprawdźmy jak to działa:" + ], + "afterMarkdowns": [ + "Świetnie! Git przeniósł referencję gałęzi `main` do `C1`; teraz nasze lokalne repozytoriu jest w stanie, jakby commit `C2` nigdy nie powstał." + ], + "command": "git reset HEAD~1", + "beforeCommand": "git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "## Git Revert", + "", + "Podczas gdy resetowanie działa świetnie dla lokalnych gałęzi na własnej maszynie, jego metoda \"przepisywania historii\" nie działa dla gałęzi zdalnych, które są używane przez innych.", + "", + "W celu odwrócenia zmian i *podzielenia się* tymi odwróconymi zmianami z innymi, musimy użyć `git revert`. Zobaczmy to w akcji." + ], + "afterMarkdowns": [ + "Dziwne, nowy commit spadł poniżej zobowiązania, które chcieliśmy odwrócić. To dlatego, że to nowy commit `C2'` wprowadza *zmiany* -- tak się składa, że wprowadza zmiany, które idealnie odwracają commit `C2`.", + "", + "Dzięki `git revert`, możesz wypchnąć swoje zmiany, by podzielić się nimi z innymi." + ], + "command": "git revert HEAD", + "beforeCommand": "git commit" + } + }, + ] } } };