# Lokalizacja gry PlayDrop i jej strony

Odczytaj język gracza przez sdk.host.language, wybierz obsługiwane języki spośród 20 w PlayDrop i przetłumacz stronę gry oraz jej grafikę.

Source: https://www.playdrop.ai/pl/create/learn/localization

Strona internetowa i aplikacje PlayDrop są dostępne w 20 językach. Gra może podążać za językiem gracza w dwóch osobnych miejscach: w samej grze, którą tłumaczysz w kodzie, oraz na swojej stronie gry, którą tłumaczysz w catalogue.json.

## Zacznij od angielskiego i jednego języka więcej

Udostępnij angielski oraz język swojego użytkownika, jeśli jest inny. Dodawaj kolejne języki, gdy planujesz dotrzeć do tych graczy. Częściowe tłumaczenie wypada gorzej niż dobra gra po angielsku, więc tłumacz całe ekrany.

## Przetłumacz grę

`sdk.host.language` to język gracza spośród 20 języków PlayDrop: `en`, `fr`, `de`, `es`, `pt-BR`, `it`, `nl`, `sv`, `nb`, `fi`, `pl`, `tr`, `ar`, `th`, `vi`, `id`, `ja`, `ko`, `zh-Hans` i `zh-Hant`.

```js
const STRINGS = { en: { play: "Play" }, fr: { play: "Jouer" } };
let language = "en";
try { language = sdk.host.language; } catch { /* older host */ }
const t = STRINGS[language] ?? STRINGS[language.split("-")[0]] ?? STRINGS.en;
```

`sdk.host.locale` to starsza wartość, ograniczona do pierwotnych dziesięciu języków i zwracająca `en` dla pozostałych; lepiej używać `language`. Na bardzo starych hostach obie mogą rzucić `host_locale_unavailable`. Arabski zapisuje się od prawej do lewej: odwróć układ interfejsu, a nie rozgrywkę, i testuj długie słowa po niemiecku i fińsku.

## Przetłumacz stronę gry

Ustaw `sourceLocale` na język, w którym napisano stronę gry, a potem dodaj po jednym kompletnym tłumaczeniu na język w `listingLocalizations`, z kluczami według języka:

```json
{
  "sourceLocale": "en",
  "displayName": "Moon Jump",
  "description": "Jump between lunar platforms and reach the flag.",
  "listingLocalizations": {
    "fr": {
      "displayName": "Saut lunaire",
      "subtitle": "Des plateformes lunaires contre la montre",
      "description": "Sautez de plateforme en plateforme et atteignez le drapeau.",
      "controls": "Touchez ou appuyez sur Espace pour sauter.",
      "listing": { "heroLandscape": "listing/locales/fr/hero-landscape.png" }
    }
  }
}
```

- Każde tłumaczenie wymaga własnego `displayName`. Może też tłumaczyć `subtitle`, `description`, `inspirationPrompt`, `controls`, `makingOf` i `releaseNotes`.
- Przetłumaczona grafika, taka jak grafika główna z przetłumaczonym tytułem, trafia do obiektu `listing` tłumaczenia, z tymi samymi polami co główna [strona gry](https://www.playdrop.ai/pl/create/learn/listing-assets).
- PlayDrop zapisuje, której wersji tekstu źródłowego odpowiada każde tłumaczenie. Gdy źródłowa strona gry się zmienia, zaktualizuj tłumaczenia w tym samym przesłaniu.

Przetłumaczona strona gry nie tłumaczy gry, a przetłumaczona gra nie tłumaczy strony gry. Wymieniaj tylko języki, które gra naprawdę obsługuje.

## Gracze i wyszukiwarki

Strona internetowa udostępnia każdy język pod osobnym adresem, z linkami między wersjami, więc wyszukiwarki mogą zaproponować język czytelnika. Gracze widzą tłumaczenie zgodne z ich językiem w PlayDrop, a w przeciwnym razie język źródłowy.

## Powiązane poradniki

- [Grafika i wideo strony gry](https://www.playdrop.ai/pl/create/learn/listing-assets): Obrazy i filmy strony gry PlayDrop: ścieżki, formaty i orientacje oraz jak tworzyć grafikę, która działa w kanałach, wyszukiwarce i podglądach linków.
- [catalogue.json](https://www.playdrop.ai/pl/create/learn/catalogue-json): Pola catalogue.json gier PlayDrop: tożsamość, strona gry, tryby gry, powierzchnie, logowanie, Instant, wstępne ładowanie, media, tłumaczenia, wyniki i serwery.
- [Ładowanie, pauza i dźwięk](https://www.playdrop.ai/pl/create/learn/lifecycle): Zainicjuj SDK, zgłoś gotowość przy pierwszej grywalnej klatce, wstrzymuj i wznawiaj grę, przestrzegaj zasad dźwięku i wstępnie ładuj pliki do gry offline.
