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"
+ }
+ },
+ ]
}
}
};