# Multilify: yapay zeka ajanları için kurulum rehberi

> Multilify, bir siteyi yazıları çoğaltmadan çok dilli yapan ücretsiz bir WordPress eklentisidir (GPL v2 ya da sonrası). Her çeviri, özgün yazının kendi yazı meta verisinde dil koduyla saklanır. Varsayılan dil dışındaki her dil /de/ gibi bir adres öneki alır. Eklenti dışarıya hiçbir istek göndermez.

## Temel kurallar

- Bir şeyi değiştirmeden önce kullanıcıya planını göster ve onayını bekle.
- Canlı bir sitede önce staging kopyasında çalış.
- Bir yazının kendi başlığını, içeriğini ya da adres son ekini asla düzenleme veya silme. Çeviriler onların yanında saklanır.
- Eklentiyi sıfırlamak için asla silme. Yönetim panelinden silmek bütün çevirileri kaldırır. Devre dışı bırakmak çevirileri korur.
- Var olan bir dil kodunu asla değiştirme. Çeviriler o kodun altında saklanır.

## 1. Siteyi kontrol et

```bash
wp core version                      # 5.8 ya da sonrası
wp eval 'echo PHP_VERSION;'          # 7.4 ya da sonrası
wp option get permalink_structure    # boş olmamalı, örneğin /%postname%/
```

## 2. Kur

```bash
wp plugin install multilify --activate
wp plugin list --name=multilify --fields=name,status,version
```

## 3. Diller

```bash
wp option get multilify_languages --format=json
wp option get multilify_default_language
```

Liste bir nesne dizisidir: `{"code":"de","name":"Deutsch","flag":"🇩🇪"}`. Bir kod iki ile beş arası küçük harften oluşur (`^[a-z]{2,5}$`). Kod adres öneki olur. Bu yüzden WordPress'in adreslerde kullandığı bir sözcük (feed, page, embed, wp, index, tag, date, type, order, paged, cpage, rest ya da yazar, arama, yorum ve sayfalama tabanları) ya da var olan bir yazının veya sayfanın adres son eki olamaz.

Ayar ekranı (yönetim menüsünde Multilify) bunların hepsini denetler. Komut satırında listenin tamamını yaz, ardından rewrite kurallarını yenile:

```bash
wp option update multilify_languages '[{"code":"en","name":"English","flag":"🇬🇧"},{"code":"de","name":"Deutsch","flag":"🇩🇪"}]' --format=json
wp rewrite flush
```

Kurallar yenilenmezse yeni dilin adresleri 404 verir.

## 4. Çeviriler

Her yazının dil başına üç meta anahtarı vardır:

```bash
wp post meta update <ID> _multilang_title_<code> "Çevrilmiş başlık"
wp post meta update <ID> _multilang_slug_<code> "cevrilmis-adres"
wp post meta update <ID> _multilang_content_<code> "<p>Çevrilmiş içerik</p>"
```

- Düzenleyicideki panel adres son ekine `sanitize_title()`, içeriğe `wp_kses_post()` uygular. Bir script de aynısını yapmalıdır.
- Bir adres son eki kendi dilinde tekil olmalıdır. Panel aynı son eki numaralandırır (-2, -3). Script bunu kendisi yapmalıdır.
- Adres son eki boşsa, yazının kendi son eki dilin önekiyle birlikte kullanılır.
- Çevirisi olmayan bir yazı, dilin adresinde varsayılan metni gösterir. Canonical adresi varsayılan adrestir.
- Yazılar ve sayfalar baştan çevrilebilir. Diğer yazı türleri PHP'de `multilify_post_types` filtresiyle eklenir.

## 5. Dil seçici

```text
[multilify_switcher]
[multilify_switcher show_name="false"]
<?php multilify_switcher(); ?>
```

## 6. Doğrula

```bash
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/<code>/<translated-slug>/   # 200
curl -s https://example.com/<code>/<translated-slug>/ | grep -o '<html lang="[^"]*"'      # dil kodu
curl -s https://example.com/<code>/<translated-slug>/ | grep -o 'hreflang="[a-z-]*"'      # varsayılan dil, dil kodu, x-default
```

## Filtreler

- `multilify_post_types`: hangi yazı türlerinin çeviri paneli alacağı.
- `multilify_translated_title`: temanın yazdırdığı haliyle çevrilmiş başlık.
- `multilify_translated_content`: çıktıdan önce çevrilmiş içerik.
- `multilify_flag_choices`: ayar ekranında sunulan bayraklar.
- `multilify_locale`: bir dilin geçtiği WordPress yerel ayarı.
- `multilify_enable_browser_detection`: sitenin köküne ilk kez gelen ziyaretçinin tarayıcısının diline yönlendirilip yönlendirilmeyeceği.
- `multilify_is_crawler`: bir isteğin arama motoru botu sayılıp sayılmayacağı.

## Desteklenmeyenler

Dil başına ayrı alan adı ya da alt alan adı, pt-br gibi tire içeren kodlar ve menülerin, bileşenlerin, özetlerin, kategorilerin, etiketlerin ve özel alanların çevirisi.

## Daha fazlası

- Belgeler: https://multilify.com/tr/docs
- Sorular: https://multilify.com/tr/faq
- Kaynak kod: https://github.com/kadirermantr/multilify
