Skip to content

Commit

Permalink
Merge pull request DjangoGirls#1303 from magul/crowdin-translation-pl
Browse files Browse the repository at this point in the history
Polish translation update (from Crowdin)
  • Loading branch information
magul authored Jul 17, 2018
2 parents 93d6314 + c730fc5 commit 7422fff
Show file tree
Hide file tree
Showing 16 changed files with 61 additions and 71 deletions.
2 changes: 1 addition & 1 deletion pl/chromebook_setup/instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Następnie uruchom:
cd djangogirls
python3.6 -mvenv myvenv
source myvenv/bin/activate
pip install django~=1.11.0
pip install django~={{ book.django_version }}


(zauważ, że w ostatniej linii użyliśmy tyldy, za którą następuje znak równości: ~=).
Expand Down
1 change: 0 additions & 1 deletion pl/css/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,6 @@ Twój plik powinien teraz wyglądać tak:
{% endfor %}
</body>
</html>

```

Ok, teraz zapisz plik i odśwież stronę!
Expand Down
2 changes: 1 addition & 1 deletion pl/deploy/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ Możesz także przejść do zakładki "Pliki" i poruszać się za pomocą wbudow

Twoja strona powinna teraz być dostępna w publicznym Internecie! Przejdź do zakładki "Sieć" PythonAnywhere, aby uzyskać link do niej. Możesz podzielić się nim z kimkolwiek chcesz :)

> **Uwaga:** Jest to poradnik dla początkujących, a podczas wdrażania tej witryny użyłyśmy kilka skrótów, które nie są idealnym rozwiązaniem z punktu widzenia bezpieczeństwa. Jeśli zdecydujesz się zbudować ten projekt lub rozpocząć nowy projekt, należy przejrzeć [Django deployment checklist](https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/), aby uzyskać jakieś wskazówki dotyczące zabezpieczania witryny.
> **Uwaga:** Jest to poradnik dla początkujących, a podczas wdrażania tej witryny użyłyśmy kilka skrótów, które nie są idealnym rozwiązaniem z punktu widzenia bezpieczeństwa. Jeśli zdecydujesz się zbudować ten projekt lub rozpocząć nowy, powinnaś przejrzeć [Django deployment checklist](https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/), aby uzyskać jakieś wskazówki dotyczące zabezpieczania witryny.
## Porady dotyczące debugowania

Expand Down
2 changes: 1 addition & 1 deletion pl/django_admin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,6 @@ Upewnij się, że co najmniej dwa lub trzy posty (ale nie wszystkie) mają ustaw

![Admin Django](images/edit_post3.png)

Jeśli chcesz dowiedzieć się więcej o administratorze Django, powinnaś sprawdzić dokumentację Django: https://docs.djangoproject.com/en/1.11/ref/contrib/admin/
Jeśli chcesz dowiedzieć się więcej o panelu admina Django, powinnaś sprawdzić dokumentację Django: https://docs.djangoproject.com/en/2.0/ref/contrib/admin/

Jest to prawdopodobnie dobry moment, aby wziąć kawę (lub herbatę) lub coś do jedzenia, aby ponownie naładować się energią. Stworzyłaś swój pierwszy model Django - zasługujesz na małą przerwę!
14 changes: 7 additions & 7 deletions pl/django_forms/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,21 +94,21 @@ Otwieramy plik `blog/urls.py` i dodajemy wiersz:
{% filename %}blog/urls.py{% endfilename %}

```python
url(r'^post/new/$', views.post_new, name='post_new'),
path('post/new', views.post_new, name='post_new'),
```

Ostatecznie kod będzie wyglądał tak:

{% filename %}blog/urls.py{% endfilename %}

```python
from django.conf.urls import url
from django.urls import path
from . import views

urlpatterns = [
url(r'^$', views.post_list, name='post_list'),
url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),
url(r'^post/new/$', views.post_new, name='post_new'),
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
path('post/new/', views.post_new, name='post_new'),
]
```

Expand Down Expand Up @@ -317,7 +317,7 @@ W pliku `blog/urls.py` dodajmy wiersz:
{% filename %}blog/urls.py{% endfilename %}

```python
url(r'^post/(?P<pk>\d+)/edit/$', views.post_edit, name='post_edit'),
path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
```

Wykorzystamy jeszcze raz szablon `blog/templates/blog/post_edit.html`, więc ostatnią rzeczą, której nam brakuje, jest *widok*.
Expand Down Expand Up @@ -370,7 +370,7 @@ Zmodyfikuj jego tytuł lub treść wedle uznania, a następnie zapisz zmiany!

Gratulacje! Twoja aplikacja staje się coraz bardziej kompletna!

Jeżeli potrzebujesz więcej informacji o formularzach Django, zajrzyj do dokumentacji: https://docs.djangoproject.com/en/1.11/topics/forms/
Jeżeli potrzebujesz więcej informacji o formularzach Django, zajrzyj do dokumentacji: https://docs.djangoproject.com/en/2.0/topics/forms/

## Bezpieczeństwo

Expand Down
31 changes: 24 additions & 7 deletions pl/django_installation/instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,15 +161,32 @@ Zanim jednak to zrobimy, powinniśmy się upewnić, że mamy najnowszą wersję
(myvenv) ~$ python3 -m pip install --upgrade pip


Następnie uruchom polecenie `pip install django~=1.11.0 `(zwróć uwagę, że używamy tyldy przed znakiem równości: `~=`) do instalacji Django.
### Instalacja pakietów z pliku wymagań

Plik wymagań zawiera listę zależności, które zainstalujemy za pomocą polecenia `pip install`:

Na początek stwórz plik `requirements.txt` wewnątrz katalogu `djangogirls/`:

djangogirls
└───requirements.txt


W swoim pliku `djangogirls/requirements.txt` powinnaś dodać następujący tekst:

{% filename %}djangogirls/requirements.txt{% endfilename %}

Django=={{ book.django_version }}


Teraz możesz uruchomić `pip install -r requirements.txt`, aby zainstalować Django.

{% filename %}command-line{% endfilename %}

(myvenv) ~$ pip install django~=1.11.0
Collecting django~=1.11.0
Downloading Django-1.11.3-py2.py3-none-any.whl (6.8MB)
Installing collected packages: django
Successfully installed django-1.11.3
(myvenv) ~$ pip install -r requirements.txt
Collecting Django=={{ book.django_version }} (from -r requirements.txt (line 1))
Downloading Django-{{ book.django_version }}-py3-none-any.whl (7.1MB)
Installing collected packages: Django
Successfully installed Django-{{ book.django_version }}


<!--sec data-title="Installing Django: Windows" data-id="django_err_windows"
Expand All @@ -186,7 +203,7 @@ data-collapse=true ces-->
>
> {% filename %}command-line{% endfilename %}
>
> C:\Users\Name\djangogirls> python -m pip install django~=1.11.0
> C:\Users\Name\djangogirls> python -m pip install -r requirements.txt
>
<!--endsec-->
Expand Down
2 changes: 1 addition & 1 deletion pl/django_models/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ Teraz dodamy właściwości, o których wspomniałyśmy już wcześniej: `title`
- `models.DateTimeField` - to jest data i godzina.
- `models.ForeignKey` - to jest odnośnik do innego modelu.

Nie będziemy tutaj wyjaśniać drobiazgowo każdego elementu kodu, gdyż zajęłoby to zbyt dużo czasu. Zajrzyj do dokumentacji Django, jeżeli chcesz dowiedzieć się więcej o polach modelu oraz jak definiować rzeczy inne niż opisane powyżej (https://docs.djangoproject.com/en/1.11/ref/models/fields/#field-types).
Nie będziemy tutaj wyjaśniać drobiazgowo każdego elementu kodu, gdyż zajęłoby to zbyt dużo czasu. Zajrzyj do dokumentacji Django, jeżeli chcesz dowiedzieć się więcej o polach modelu oraz jak definiować rzeczy inne niż opisane powyżej (https://docs.djangoproject.com/en/2.0/ref/models/fields/#field-types).

A co to takiego `def publish(self):`? To jest dokładnie metoda publikująca wpis (`publish`), o której wspominaliśmy wcześniej. Wyraz `def` oznacza, że mamy do czynienia z funkcją/metodą, a `publish` to nazwa metody. Możesz zmienić nazwę metody, jeśli chcesz. Zasadą jest, że używamy małych liter oraz znaków podkreślenia zamiast spacji. Na przykład metodę, która oblicza średnią cenę, można nazwać `calculate_average_price`.

Expand Down
4 changes: 2 additions & 2 deletions pl/django_start_project/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ W pliku `settings.py` znajdź linijkę, w której jest napisane `TIME_ZONE` i zm
TIME_ZONE = 'Europe/Warsaw'
```

Kod języka składa się z języka, np. ` en ` dla języka angielskiego lub ` de ` dla języka niemieckiego i kodu kraju, np. ` de ` dla Niemiec lub ` ch ` dla Szwajcarii. Jeżeli angielski nie jest Twoim językiem ojczystym, możesz dodać tę wartość, aby domyślne przyciski i powiadomienia od Django były w Twoim języku. Tak więc przycisk "Anuluj" zostałby przetłumaczony na język, który tu zdefiniowałeś. [Django jest wyposażony w mnóstwo przygotowanych tłumaczeń](https://docs.djangoproject.com/en/1.11/ref/settings/#language-code).
Kod języka składa się z języka, np. ` en ` dla języka angielskiego lub ` de ` dla języka niemieckiego i kodu kraju, np. ` de ` dla Niemiec lub ` ch ` dla Szwajcarii. Jeżeli angielski nie jest Twoim językiem ojczystym, możesz dodać tę wartość, aby domyślne przyciski i powiadomienia od Django były w Twoim języku. Tak więc przycisk "Anuluj" zostałby przetłumaczony na język, który tu zdefiniowałeś. [Django jest wyposażone w mnóstwo przygotowanych tłumaczeń](https://docs.djangoproject.com/en/2.0/ref/settings/#language-code).

Jeżeli chcesz używać innego języka, zmień jego kod, modyfikując następujący wiersz:

Expand Down Expand Up @@ -191,7 +191,7 @@ Jeśli używasz Chromebooka, zawsze odwiedzasz serwer testowy, uzyskując dostę

Gratulacje! Właśnie stworzyłaś swoją pierwszą stronę i uruchomiłaś ją za pomocą serwera! Prawda, że wspaniale?

![Działa!](images/it_worked2.png)
![Install worked!](images/install_worked.png)

Kiedy serwer internetowy jest uruchomiony, nie możesz zobaczyć nowego wiersza polecenia do wprowadzania dodatkowych poleceń. Terminal przyjmie nowy tekst, ale nie wykona nowego polecenia. Dzieje się tak dlatego, że serwer internetowy ciągle działa, aby nasłuchiwać przychodzących żądań.

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed pl/django_start_project/images/it_worked2.png
Binary file not shown.
50 changes: 12 additions & 38 deletions pl/django_urls/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ Otwórzmy plik `mysite/urls.py` i przyjrzyjmy się jego treści:
[...]
"""
from django.conf.urls import url
from django.urls import path, include
from django.contrib import admin

urlpatterns = [
url(r'^admin/', admin.site.urls),
path('admin/', admin.site.urls),
]
```

Expand All @@ -38,34 +38,11 @@ Adres URL panelu administracyjnego, który odwiedzałaś w poprzednim rozdziale,
{% filename %}mysite/urls.py{% endfilename %}

```python
url(r'^admin/', admin.site.urls),
path('admin/', admin.site.urls),
```

To znaczy, że dla każdego adresu zaczynającego się od `admin/` Django spróbuje dopasować odpowiedni *widok*. W tym przypadku używamy wielu adresów URL panelu administracyjnego, dlatego nie wypisujemy ich wszystkich w tym jednym małym pliku - tak jest czytelniej i bardziej estetycznie.

## Regex, czyli wyrażenia regularne

Zastanawiałaś się, w jaki sposób Django kojarzy adresy URL z widokami? Cóż, ta część jest nieco bardziej złożona. Django wykorzystuje `regex`, czyli tzw. wyrażenia regularne. Regex posiada mnóstwo (naprawdę mnóstwo!) reguł, które tworzą wzorzec do wyszukania. To dość skomplikowany temat i nie będziemy tutaj wchodzić w szczegóły.

Jeśli nadal chcesz zrozumieć, w jaki sposób stworzyliśmy wzorce, oto przykład tego procesu - będziemy potrzebować tylko ograniczonego podzbioru reguł, aby wyrazić wzorzec, którego szukamy, a mianowicie:

* `^` oznacza początek tekstu
* `$` oznacza koniec tekstu
* `\d` oznacza cyfrę
* `+` oznacza, że poprzedni element powinien się powtórzyć przynajmniej raz
* piszemy () aby uchwycić część wzorca

Inne znaki we wzorcu URL będą rozumiane dosłownie.

Teraz wyobraź sobie, że masz stronę z takim adresem `http://www.mysite.com/post/12345/`, gdzie `12345` to numer Twojego posta.

Pisanie osobnych widoków dla każdego numeru z osobna byłoby frustrujące. Z wyrażeniami regularnymi możemy stworzyć wzorzec, który dopasuje URL i znajdzie dla nas numer posta: `^post/(\d+)/$`. Rozbijmy go na mniejsze części, by zrozumieć, co tu się dzieje:

* **^post/** mówi Django, by skupiło się na każdym adresie URL, który zaczyna się od wyrazu `post` (zaraz po `^`)
* **(\d+)** oznacza, że szukamy numeru (jedna lub więcej cyfr) i że chcemy go wyodrębnić
* **/** mówi Django, że następny w kolejności powinien się pojawić znak `/`
* **$** informuje, że to jest koniec adresu URL, co oznacza, że Django będzie szukał adresów kończących się na `/`

## Twój pierwszy adres URL w Django!

Czas utworzyć nasz pierwszy adres URL! Chcemy, aby adres 'http://127.0.0.1:8000/' był stroną główną naszego bloga i wyświetlał listę wpisów.
Expand All @@ -79,28 +56,25 @@ Twój plik `mysite/urls.py` powinien teraz wyglądać tak:
{% filename %}mysite/urls.py{% endfilename %}

```python
from django.conf.urls import include
from django.conf.urls import url
from django.urls import path, include
from django.contrib import admin

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', include('blog.urls')),
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
```

Django przekieruje wszystkie reguły z adresu 'http://127.0.0.1:8000/' do `blog.urls` i tam będzie szukał dalszych wskazówek.

Pisząc wyrażenia regularne w Pythonie, zawsze dajemy `r` na początku ciągu znaków. To jest podpowiedź dla Pythona, że w tym ciągu znaków mogą się znajdować znaki specjalne, które nie są przeznaczone dla niego, ponieważ oznaczają wyrażenie regularne.

## blog.urls

Stwórz nowy pusty plik o nazwie `urls.py` w katalogu `blog`. Dokładnie tak! Dodaj te pierwsze dwie linie:

{% filename %}blog/urls.py{% endfilename %}

```python
from django.conf.urls import url
from django.urls import path
from . import views
```

Expand All @@ -112,18 +86,18 @@ Potem możemy dodać nasz pierwszy wzorzec adresu URL:

```python
urlpatterns = [
url(r'^$', views.post_list, name='post_list'),
path('', views.post_list, name='post_list'),
]
```

Jak widzisz, teraz przyporządkowujemy widok (`view`) o nazwie `post_list` do URL `^$`. To wyrażenie regularne będzie dopasowywać `^` (początek) po którym następuje `$` (koniec) - więc tylko pusty ciąg znaków będzie zgodny. I to się zgadza, ponieważ dla mechanizmów rozróżniających adresy w Django, 'http://127.0.0.1:8000/' nie jest częścią adresu URL. Ten wzorzec będzie wskazówką dla Django, że `views.post_list` jest właściwym miejscem dla każdego, kto wejdzie na stronę poprzez adres 'http://127.0.0.1:8000/'.
Jak widzisz, teraz przyporządkowujemy widok (`view`) o nazwie `post_list` do strony głównej. Ten wzorzec URL zostanie dopasowany do pustego ciągu znaków, a Django zignoruje nazwę domeny (np. http://127.0.0.1:8000/), która poprzedza pełną ścieżkę URL. Ten wzorzec będzie wskazówką dla Django, że `views.post_list` jest właściwym miejscem dla każdego, kto wejdzie na stronę poprzez adres 'http://127.0.0.1:8000/'.

Ostatnia część, `name='post_list` jest nazwą URL, która będzie używana do zidentyfikowania widoku. Nazwa może być taka sama jak nazwa widoku albo kompletnie inna. W projekcie będziemy później używać nazw URL, więc ważne jest nazwanie każdego URL-a w aplikacji. Powinnyśmy również starać się używać nazw URL unikalnych i prostych do zapamiętania.

Jeśli teraz spróbujesz odwiedzić stronę http://127.0.0.1:8000/, zobaczysz komunikat "niedostępna strona internetowa". Wynika to z faktu, że serwer (pamiętaj o wpisaniu ` runserver`?) nie jest już uruchomiony. Spójrz na okno konsoli serwera, aby dowiedzieć się, dlaczego.
Jeśli teraz spróbujesz odwiedzić stronę http://127.0.0.1:8000/, zobaczysz komunikat "niedostępna strona internetowa". Wynika to z faktu, że serwer (pamiętałaś o wpisaniu ` runserver`?) nie jest już uruchomiony. Spójrz na okno konsoli serwera, aby dowiedzieć się, dlaczego.

![Błąd](images/error1.png)

Twoja konsola pokazuje błąd, ale nie martw się - w rzeczywistości jest to całkiem użyteczne: mówi ci, że** brak atrybutu 'post_list'**. To jest nazwa widoku (*view*), którą Django próbuje znaleźć i użyć, ale jeszcze go nie utworzyłyśmy. Na tym etapie Twój `/admin/ ` również nie będzie działać. Nie martw się, zajmiemy się tym.
Twoja konsola pokazuje błąd, ale nie martw się - w rzeczywistości jest to całkiem użyteczne: mówi Ci, że** brak atrybutu 'post_list'**. To jest nazwa widoku (*view*), którą Django próbuje znaleźć i użyć, ale jeszcze go nie utworzyłyśmy. Na tym etapie Twój `/admin/ ` również nie będzie działać. Nie martw się, zajmiemy się tym.

> Jeśli chciałabyś dowiedzieć się więcej na temat konfiguracji URL w Django, zajrzyj do oficjalnej dokumentacji: https://docs.djangoproject.com/en/1.11/topics/http/urls/
> Jeśli chciałabyś dowiedzieć się więcej na temat konfiguracji URL w Django, zajrzyj do oficjalnej dokumentacji: https://docs.djangoproject.com/en/2.0/topics/http/urls/
2 changes: 1 addition & 1 deletion pl/django_views/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ Znowu błąd! Przeczytaj, o co chodzi tym razem:

Przynajmniej pokazuje, że serwer jest uruchomiony ponownie, ale nadal nie wygląda dobrze, prawda? Nie martw się, to po prostu błąd strony, nic strasznego! Podobnie jak komunikaty o błędach w konsoli, są one całkiem przydatne. Możesz przeczytać, że *TemplateDoesNotExist*. Naprawmy ten błąd i stwórzmy szablon - ale to już w następnym rozdziale!

> Więcej na temat widoków Django dowiesz się czytając oficjalną dokumentację: https://docs.djangoproject.com/en/1.11/topics/http/views/
> Więcej na temat widoków Django dowiesz się czytając oficjalną dokumentację: https://docs.djangoproject.com/en/2.0/topics/http/views/
2 changes: 1 addition & 1 deletion pl/dynamic_data_in_templates/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,4 @@ def post_list(request):

I to wszystko! Czas, żebyśmy wróciły do naszego szablonu i wyświetliły ten QuerySet!

Chcesz przeczytać trochę więcej o QuerySets w Django? Powinnaś zajrzeć tutaj: https://docs.djangoproject.com/en/1.11/ref/models/querysets/
Jeżeli chciałabyś poczytać trochę więcej na temat QuerySetów w Django, powinnaś rzucić okiem tutaj: https://docs.djangoproject.com/en/2.0/ref/models/querysets/
Loading

0 comments on commit 7422fff

Please sign in to comment.