# Bir PlayDrop oyununu ve oyun sayfasını yerelleştir

Oyuncunun dilini sdk.host.language ile oku, 20 dilden hangilerini destekleyeceğini seç, oyun sayfasını ve görsellerini listingLocalizations ile çevir.

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

PlayDrop’un web sitesi ve uygulamaları 20 dil konuşur. Bir oyun, oyuncunun dilini iki ayrı yerde izleyebilir: kodda çevirdiğin oyunun kendisinde ve catalogue.json içinde çevirdiğin oyun sayfasında.

## İngilizce artı bir dille başla

İngilizceyi ve farklıysa kullanıcının dilini sun. O oyunculara ulaşmayı planladığında daha fazla dil ekle. Yarım bir çeviri iyi bir İngilizce oyundan daha kötü hissettirir; bu yüzden ekranları bütün olarak çevir.

## Oyunu çevir

`sdk.host.language`, oyuncunun PlayDrop’un 20 dili arasındaki dilidir: `en`, `fr`, `de`, `es`, `pt-BR`, `it`, `nl`, `sv`, `nb`, `fi`, `pl`, `tr`, `ar`, `th`, `vi`, `id`, `ja`, `ko`, `zh-Hans` ve `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` eski değerdir; ilk on dille sınırlıdır ve diğerleri için `en` döndürür; `language` değerini tercih et. İkisi de çok eski ana uygulamalarda `host_locale_unavailable` fırlatabilir. Arapça sağdan sola yazılır: oynanışı değil düzeni aynala ve Almanca ile Fincedeki uzun kelimeleri test et.

## Oyun sayfasını çevir

`sourceLocale` değerini oyun sayfasının yazıldığı dile ayarla, sonra `listingLocalizations` içine dile göre anahtarlanmış, her dil için eksiksiz bir çeviri ekle:

```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" }
    }
  }
}
```

- Her çevirinin kendi `displayName` değeri olmalıdır. `subtitle`, `description`, `inspirationPrompt`, `controls`, `makingOf` ve `releaseNotes` alanlarını da çevirebilir.
- Başlığı çevrilmiş bir ana görsel gibi çevrilmiş görseller, ana [oyun sayfası](https://www.playdrop.ai/tr/create/learn/listing-assets) ile aynı alanları kullanarak çevirinin `listing` nesnesine girer.
- PlayDrop her çevirinin kaynak metnin hangi sürümüyle eşleştiğini kaydeder. Kaynak oyun sayfası değiştiğinde çevirileri aynı yüklemede güncelle.

Çevrilmiş bir oyun sayfası oyunu çevirmez, çevrilmiş bir oyun da oyun sayfasını çevirmez. Yalnızca oyunun gerçekten desteklediği dilleri listele.

## Oyuncular ve arama

Web sitesi her dili, sürümler arasında bağlantılarla kendi adresinde sunar; böylece arama motorları okuyucunun dilini önerebilir. Oyuncular PlayDrop dilleriyle eşleşen çeviriyi, yoksa kaynak dili görür.

## İlgili kılavuzlar

- [Oyun sayfası görselleri ve video](https://www.playdrop.ai/tr/create/learn/listing-assets): Oyun sayfası görselleri ve videoları: yollar, biçimler ve yönler; akışlarda, aramada ve bağlantı önizlemelerinde işe yarayan görseller nasıl yapılır.
- [catalogue.json](https://www.playdrop.ai/tr/create/learn/catalogue-json): PlayDrop oyunlarının kullandığı catalogue.json alanları: kimlik, oyun sayfası, oynanış modları, yüzeyler, giriş, Instant, ön yükleme, medya, çeviriler, skorlar ve sunucular.
- [Yükleme, duraklatma ve ses](https://www.playdrop.ai/tr/create/learn/lifecycle): SDK’yı başlat, ilk oynanabilir karede hazır sinyali ver, duraklat ve sürdür, ses politikasına uy ve çevrimdışı oyun için dosyaları önceden yükle.
