Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

馃寪 Add Polish translation for docs/pl/docs/features.md #5348

Merged
merged 6 commits into from Jun 22, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
200 changes: 200 additions & 0 deletions docs/pl/docs/features.md
@@ -0,0 +1,200 @@
# Cechy

## Cechy FastAPI

**FastAPI** zapewnia Ci nast臋puj膮ce korzy艣ci:

### Oparcie o standardy open

* <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank"><strong>OpenAPI</strong></a> do tworzenia API, w tym deklaracji <abbr title="znane r贸wnie偶 jako: paths, endpoints, routes">艣cie偶ek</abbr> <abbr title="znane r贸wnie偶 jako metody HTTP, takie jak POST, GET, PUT, DELETE">operacji</abbr>, parametr贸w, <abbr title="po angielsku: body requests">cia艂 zapyta艅</abbr>, bezpiecze艅stwa, itp.
* Automatyczna dokumentacja modelu danych za pomoc膮 <a href="https://json-schema.org/" class="external-link" target="_blank"><strong>JSON Schema</strong></a> (poniewa偶 OpenAPI bazuje na JSON Schema).
* Zaprojektowane wok贸艂 tych standard贸w, po drobiazgowej analizie, zamiast skupiania si臋 na g贸rnej warstwie.
mbroton marked this conversation as resolved.
Show resolved Hide resolved
* Mo偶liwo艣膰 automatycznego **generowania kodu klienta** w wielu j臋zykach.

### Automatyczna dokumentacja

Interaktywna dokumentacja API i podgl膮d interfejs贸w u偶ytkownika. Z racji tego, 偶e framework bazuje na OpenAPI, istnieje wiele opcji, z czego 2 s膮 domy艣lnie do艂膮czone.
mbroton marked this conversation as resolved.
Show resolved Hide resolved

* <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank"><strong>Swagger UI</strong></a>, z interaktywnym interfejsem - odpytuj i testuj swoje API bezpo艣rednio z przegl膮darki.

![Swagger UI interakcja](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png)

* Alternatywna dokumentacja API z <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank"><strong>ReDoc</strong></a>.

![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png)

### Nowoczesny Python

Wszystko opiera si臋 na standardowych deklaracjach typu **Python 3.6** (dzi臋ki Pydantic). Brak nowej sk艂adni do uczenia. Po prostu standardowy, wsp贸艂czesny Python.

Je艣li potrzebujesz szybkiego przypomnienia jak u偶ywa膰 deklaracji typ贸w w Pythonie (nawet je艣li nie u偶ywasz FastAPI), sprawd藕 kr贸tki samouczek: [Python Types](python-types.md){.internal-link target=_blank}.

Wystarczy, 偶e napiszesz standardowe deklaracje typ贸w Pythona:

```Python
from datetime import date

from pydantic import BaseModel

# Zadeklaruj parametr jako str
# i uzyskaj wsparcie edytora wewn膮trz funkcji
def main(user_id: str):
return user_id


# Model Pydantic
class User(BaseModel):
id: int
name: str
joined: date
```

A one b臋d膮 mog艂y zosta膰 p贸藕niej u偶yte w nast臋puj膮cy spos贸b:

```Python
my_user: User = User(id=3, name="John Doe", joined="2018-07-19")

second_user_data = {
"id": 4,
"name": "Mary",
"joined": "2018-11-30",
}

my_second_user: User = User(**second_user_data)
```

!!! info
`**second_user_data` oznacza:

Przeka偶 klucze i warto艣ci s艂ownika `second_user_data` bezpo艣rednio jako argumenty klucz-warto艣膰, co jest r贸wnoznaczne z: `User(id=4, name="Mary", joined="2018-11-30")`

### Wsparcie edytora

Ca艂y framework zosta艂 zaprojektowany tak, aby by艂 艂atwy i intuicyjny w u偶yciu. Wszystkie pomys艂y zosta艂y przetestowane na wielu edytorach jeszcze przed rozpocz臋ciem procesu tworzenia, aby zapewni膰 najlepsze wra偶enia programistyczne.

Ostatnia ankieta <abbr title="coroczna ankieta przeprowadza w 艣rodowisku programist贸w j臋zyka Python">Python developer survey</abbr> jasno wskazuje, 偶e <a href="https://www.jetbrains.com/research/python-developers-survey-2017/#tools-and-features" class="external-link" target="_blank">najcz臋艣ciej u偶ywan膮 funkcjonalno艣ci膮 jest autouzupe艂nianie w edytorze</a>.

Ca艂a struktura frameworku **FastAPI** jest na tym oparta. Autouzupe艂nianie dzia艂a wsz臋dzie.

Rzadko b臋dziesz musia艂 wraca膰 do dokumentacji.

Oto, jak tw贸j edytor mo偶e Ci pom贸c:

* <a href="https://code.visualstudio.com/" class="external-link" target="_blank">Visual Studio Code</a>:

![wsparcie edytora](https://fastapi.tiangolo.com/img/vscode-completion.png)

* <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a>:

![wsparcie edytora](https://fastapi.tiangolo.com/img/pycharm-completion.png)

Otrzymasz uzupe艂nienie nawet w miejscach, w kt贸rych normalnie uzupe艂nienia nie ma. Na przyk艂ad klucz "price" w tre艣ci JSON (kt贸ry m贸g艂 by膰 zagnie偶d偶ony), kt贸ry pochodzi z zapytania.

Koniec z wpisywaniem b艂臋dnych nazw kluczy, przechodzeniem tam i z powrotem w dokumentacji lub przewijaniem w g贸r臋 i w d贸艂, aby sprawdzi膰, czy w ko艅cu u偶y艂e艣 nazwy `username` czy `user_name`.

### Zwi臋z艂o艣膰

Wszystko posiada sensowne **domy艣lne warto艣ci**. Wsz臋dzie znajdziesz opcjonalne konfiguracje. Wszystkie parametry mo偶esz dostroi膰, aby zrobi膰 to co potrzebujesz do zdefiniowania API.

Ale domy艣lnie wszystko **"po prostu dzia艂a"**.

### Walidacja

* Walidacja wi臋kszo艣ci (lub wszystkich?) **typ贸w danych** Pythona, w tym:
* Obiekt贸w JSON (`dict`).
* Tablic JSON (`list`) ze zdefiniowanym typem element贸w.
* P贸l tekstowych (`str`) z okre艣leniem minimalnej i maksymalnej d艂ugo艣ci.
* Liczb (`int`, `float`) z warto艣ciami minimalnymi, maksymalnymi, itp.

* Walidacja bardziej egzotycznych typ贸w danych, takich jak:
* URL.
* Email.
* UUID.
* ...i inne.

Ca艂a walidacja jest obs艂ugiwana przez ugruntowan膮 i solidn膮 bibliotek臋 **Pydantic**.

### Bezpiecze艅stwo i uwierzytelnianie

Bezpiecze艅stwo i uwierzytelnianie jest zintegrowane. Bez 偶adnych kompromis贸w z bazami czy modelami danych.

Wszystkie schematy bezpiecze艅stwa zdefiniowane w OpenAPI, w tym:

* Podstawowy protok贸艂 HTTP.
* **OAuth2** (r贸wnie偶 z **tokenami JWT**). Sprawd藕 samouczek [OAuth2 with JWT](tutorial/security/oauth2-jwt.md){.internal-link target=_blank}.
* Klucze API w:
* Nag艂贸wkach.
* Parametrach zapyta艅.
* Ciasteczkach, itp.

Plus wszystkie funkcje bezpiecze艅stwa Starlette (w艂膮czaj膮c w to **<abbr title="po angielsku: session cookies">ciasteczka sesyjne</abbr>**).

Wszystko zbudowane jako narz臋dzia i komponenty wielokrotnego u偶ytku, kt贸re mo偶na 艂atwo zintegrowa膰 z systemami, magazynami oraz bazami danych - relacyjnymi, NoSQL, itp.

### Dependency Injection
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I agree that the name Dependency Injection is so well known that most likely even non-english speaking programmers are likely to be familiar with it and the feature itself is a key feature of FastAPI, I still think that the term Wstrzykiwanie Zale偶no艣ci should be used here. It's well established in polish literature.

I would suggest going with:

Wstrzykiwanie Zale偶no艣ci (Dependency Injection)

or the other way around:

Dependency Injection (Wstrzykiwanie Zale偶no艣ci)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking about it for a while, but then I noticed that in some other language versions of documentation it's translated, and in others it's not.
So I've decided to go with the same pattern as in spanish translation, which is using "Dependency Injection" as a header but in the next line is adding title for another occurrence, but with explaination in spanish:
image

My reasoning for it was that "Dependency Injection" is definitely used more often in web development industry than "Wstrzykiwanie Zale偶no艣ci", but anyway, to not leaving it untranslated, I've provided translation for it in the next line.

But I agree with you, I'll go with just "Wstrzykiwanie Zale偶no艣ci" as a header, and english version of it in a tooltip (like on the screenshot, but "reversed").

Let me know if that will be fine.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I guess that makes sense.


FastAPI zawiera niezwykle 艂atwy w u偶yciu, ale niezwykle pot臋偶ny system <abbr title='Po polsku: wstrzykiwanie zale偶no艣ci. Znane r贸wnie偶 jako "components", "resources", "services", "providers"'><strong>Dependency Injection</strong></abbr>.

* Nawet zale偶no艣ci mog膮 mie膰 zale偶no艣ci, tworz膮c hierarchi臋 lub **"graf" zale偶no艣ci**.
* Wszystko jest **obs艂ugiwane automatycznie** przez framework.
* Wszystkie zale偶no艣ci mog膮 wymaga膰 danych w 偶膮daniach oraz rozszerza膰 ograniczenia i automatyczn膮 dokumentacj臋 **<abbr title="po angielsku: path operations">operacji na 艣cie偶ce</abbr>**.
* **Automatyczna walidacja** parametr贸w *operacji na 艣cie偶ce* zdefiniowanych w zale偶no艣ciach.
* Obs艂uga z艂o偶onych system贸w uwierzytelniania u偶ytkownik贸w, **po艂膮cze艅 z bazami danych**, itp.
* Bazy danych, front end, itp. **bez kompromis贸w**, ale wci膮偶 艂atwe do integracji.

### Nieograniczone "wtyczki"

Lub ujmuj膮c to inaczej - brak potrzeby wtyczek. Importuj i u偶ywaj kod, kt贸ry potrzebujesz.

Ka偶da integracja zosta艂a zaprojektowana tak, aby by艂a tak prosta w u偶yciu (z zale偶no艣ciami), 偶e mo偶esz utworzy膰 "wtyczk臋" dla swojej aplikacji w 2 liniach kodu, u偶ywaj膮c tej samej struktury i sk艂adni, kt贸re s膮 u偶ywane w *operacjach na 艣cie偶ce*.

### Testy

* 100% <abbr title="Ilo艣膰 kodu, kt贸ry jest automatycznie testowany">pokrycia kodu testami</abbr>.
* 100% <abbr title="Deklaracje typ贸w Python - dzi臋ki nim tw贸j edytor i zewn臋trzne narz臋dzia mog膮 zapewni膰 Ci lepsze wsparcie ">adnotacji typ贸w</abbr>.
* U偶ywany w aplikacjach produkcyjnych.

## Cechy Starlette

**FastAPI** jest w pe艂ni kompatybilny z (oraz bazuje na) <a href="https://www.starlette.io/" class="external-link" target="_blank"><strong>Starlette</strong></a>. Tak wi臋c ka偶dy dodatkowy kod Starlette, kt贸ry posiadasz, r贸wnie偶 b臋dzie dzia艂a艂.

`FastAPI` jest w rzeczywisto艣ci podklas膮 `Starlette`, wi臋c je艣li ju偶 znasz lub u偶ywasz Starlette, wi臋kszo艣膰 funkcji b臋dzie dzia艂a膰 w ten sam spos贸b.

Dzi臋ki **FastAPI** otrzymujesz wszystkie funkcje **Starlette** (poniewa偶 FastAPI to po prostu Starlette na sterydach):

* Bardzo imponuj膮ca wydajno艣膰. Jest to <a href="https://github.com/encode/starlette#performance" class="external-link" target="_blank">jeden z najszybszych dost臋pnych framework贸w Pythona, na r贸wni z **NodeJS** i **Go**</a>.
* Wsparcie dla **WebSocket**.
* <abbr title='Zadania wykonywane w tle, bez zatrzymywania 偶膮da艅, w tym samym procesie. Po angielsku: In-process background tasks'>Zadania w tle</abbr>.
* Eventy startup i shutdown.
* Klient testowy zbudowany na bazie biblioteki `requests`.
* **CORS**, GZip, pliki statyczne, streamy.
* Obs艂uga **sesji i ciasteczek**.
* 100% pokrycie testami.
* 100% adnotacji typ贸w.

## Cechy Pydantic

**FastAPI** jest w pe艂ni kompatybilny z (oraz bazuje na) <a href="https://pydantic-docs.helpmanual.io" class="external-link" target="_blank"><strong>Pydantic</strong></a>. Tak wi臋c ka偶dy dodatkowy kod Pydantic, kt贸ry posiadasz, r贸wnie偶 b臋dzie dzia艂a艂.

Wliczaj膮c w to zewn臋trzne biblioteki, r贸wnie偶 oparte o Pydantic, takie jak <abbr title="Mapowanie obiektowo-relacyjne. Po angielsku: Object-Relational Mapper">ORM</abbr>, <abbr title="Object-Document Mapper">ODM</abbr> dla baz danych.

Oznacza to, 偶e w wielu przypadkach mo偶esz przekaza膰 ten sam obiekt, kt贸ry otrzymasz z 偶膮dania **bezpo艣rednio do bazy danych**, poniewa偶 wszystko jest walidowane automatycznie.

Dzia艂a to r贸wnie偶 w drug膮 stron臋, w wielu przypadkach mo偶esz po prostu przekaza膰 obiekt otrzymany z bazy danych **bezpo艣rednio do klienta**.

Dzi臋ki **FastAPI** otrzymujesz wszystkie funkcje **Pydantic** (poniewa偶 FastAPI bazuje na Pydantic do obs艂ugi wszystkich danych):

* **Bez prania m贸zgu**:
* Brak nowego mikroj臋zyka do definiowania schematu, kt贸rego trzeba si臋 nauczy膰.
* Je艣li znasz adnotacje typ贸w Pythona to wiesz jak u偶ywa膰 Pydantic.
* Dobrze wsp贸艂pracuje z Twoim **<abbr title='Skr贸t od "Integrated Development Environment", podobne do edytora kodu'>IDE</abbr>/<abbr title="Program, kt贸ry sprawdza Tw贸j kod pod k膮tem b艂臋d贸w">linterem</abbr>/m贸zgiem**:
* Poniewa偶 struktury danych Pydantic to po prostu instancje klas, kt贸re definiujesz; autouzupe艂nianie, linting, mypy i twoja intuicja powinny dzia艂a膰 poprawnie z Twoimi zweryfikowanymi danymi.
mbroton marked this conversation as resolved.
Show resolved Hide resolved
* **Szybko艣膰**:
* w <a href="https://pydantic-docs.helpmanual.io/benchmarks/" class="external-link" target="_blank">benchmarkach</a> Pydantic jest szybszy ni偶 wszystkie inne testowane biblioteki.
* Walidacja **z艂o偶onych struktur**:
* Wykorzystanie hierarchicznych modeli Pydantic, Pythonowego modu艂u `typing` zawieraj膮cego `List`, `Dict`, itp.
* Walidatory umo偶liwiaj膮 jasne i 艂atwe definiowanie, sprawdzanie z艂o偶onych struktur danych oraz dokumentowanie ich jako JSON Schema.
* Mo偶esz mie膰 g艂臋boko **zagnie偶d偶one obiekty JSON** i wszystkie je weryfikowa膰 i adnotowa膰.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

weryfikowa膰 i adnotowa膰

once more you used 'weryfikowa膰' instead of 'walidowa膰' which would be more consistent with the rest of your translation.
'Walidacja' is an actual word in polish, though I agree that using it as a verb (walidowa膰) is not something you see often.

Maybe this should be: 'podda膰 walidacji'
This way it could be both correct and more pleasant to look at. 馃

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I agree that "podda膰 walidacji" sounds much better, thanks!

* **Rozszerzalno艣膰**:
* Pydantic umo偶liwia zdefiniowanie niestandardowych typ贸w danych lub rozszerzenie walidacji o metody na modelu, na kt贸rych u偶yty jest dekorator walidatora.
* 100% pokrycie testami.
1 change: 1 addition & 0 deletions docs/pl/mkdocs.yml
Expand Up @@ -58,6 +58,7 @@ nav:
- tr: /tr/
- uk: /uk/
- zh: /zh/
- features.md
- Samouczek:
- tutorial/index.md
- tutorial/first-steps.md
Expand Down