Dil Paketleri
Kurulu dilleri gören, ayarlayan ve kaldıran yedi uç.
Genel Bakış
Bir dil WISECP'de üç yerde birden yaşar: paket dosyası (ad, ülke, sıra, durum), çeviri dosyaları ve dil tabloları (ürün adları, kategori başlıkları, bildirim şablonları). Bu makale ilkini ve bütününü yönetir.
Diller WISECP ile birlikte gelir; ne panelden ne API'den yeni dil oluşturulur. Kapalı duran bir dil açıldığında dil tabloları varsayılandan doldurulur, yani boş başlamaz.
Bir dil varsayılandır ve o dil ayrıcalıklıdır: kapatılamaz, silinemez ve adreslerinde dil ön eki taşımaz. Varsayılanı taşımak bu üç davranışı iki dil arasında yer değiştirir.
Referans
Kurulu Dilleri Listeleme
Kurulumdaki bütün dilleri, kapalı olanlar dahil döndürür.
curl 'https://panel.ornek.com/api/v1/admin/languages' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/languages', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data, meta } = await res.json();
const live = data.filter((l) => l.status);$ch = curl_init('https://panel.ornek.com/api/v1/admin/languages');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kapalilar da gelir; musteriye acik dilleri status ile suzun.
$r = Api::Languages()->GetLanguages();
$live = array_values(array_filter($r['data'], fn ($l) => $l['status']));
$def = $r['meta']['default'];İndirilebilir Dilleri Listeleme
WISECP çeviri servisinden kurulabilecek dilleri döndürür.
curl 'https://panel.ornek.com/api/v1/admin/languages/available' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/languages/available', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data, meta } = await res.json();
if (meta.count === 0) showRetry();$ch = curl_init('https://panel.ornek.com/api/v1/admin/languages/available');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// BOS LISTE iki anlama gelir: hicbiri yok ya da uzak servise ulasilamadi. Ayirt edilemez.
$out = Api::Languages()->GetAvailableLanguages();
if (! $out['data']) $logger->warning('dil listesi bos — servis erisimini dogrulayin');Tek Dili Okuma
Tek bir dil paketini döndürür.
curl 'https://panel.ornek.com/api/v1/admin/languages/de' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/languages/${key}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/languages/' . $key);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Anahtar dil KODU degildir: ikinci bir ulke icin ayni kod 'en-gb' bicimini alir.
$pkg = Api::Languages()->GetLanguage(['key' => $key])['data'];Dil Oluşturma (Kapalı)
Diller WISECP ile birlikte gelir; ne panelden ne buradan yeni dil oluşturulur.
Adres, mevcut entegrasyonlar 404 yerine açık bir yanıt alsın diye yerinde durur. Her çağrı, gövdesi ne olursa olsun 422 ile reddedilir ve hiçbir şey yazılmaz. Bir dil üzerinde çalışmak için kurulu bir dili Dil Ayarlarını Değiştirme ve çeviri uçlarıyla düzenleyin.
Dil Ayarlarını Değiştirme
Gönderdiğiniz alanları değiştirir ve dili varsayılan yapabilir.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/languages/de' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"show_name":"Deutsch","rank":2}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/languages/${key}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ show_name: 'Deutsch', rank: 2 }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/languages/' . $key);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['show_name' => 'Deutsch', 'rank' => 2]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// VARSAYILAN dilde status GORMEZDEN GELINIR: yanit 200 doner ama dil acik kalir.
$pkg = Api::Languages()->UpdateLanguage(['key' => $key, 'status' => 0])['data'];
if ($pkg['status']) $logger->info('varsayilan dil kapatilamaz — degisiklik uygulanmadi');Dili Açma ve Kapatma
Dili müşteriye açar ya da kapatır.
curl -X PUT 'https://panel.ornek.com/api/v1/admin/languages/de/status' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"status":1}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/languages/${key}/status`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ status: 1 }),
});
if (res.status === 422) { /* zaten aciksa buraya duser */ }$ch = curl_init('https://panel.ornek.com/api/v1/admin/languages/' . $key . '/status');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['status' => 1]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Ayni durumu tekrar yazmak HATA verir; toplu esitlemede once mevcut durumu okuyun.
$pkg = Api::Languages()->GetLanguage(['key' => $key])['data'];
if ($pkg['status'] !== $wanted) Api::Languages()->SetLanguageStatus(['key' => $key, 'status' => (int) $wanted]);Dili Kaldırma
Dili, çevirilerini ve dile ait bütün satırları kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/languages/de' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/languages/${key}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/languages/' . $key);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Urun/kategori adlarinin O DILDEKI satirlari da gider; once disa aktarip saklayin.
$dump = Api::Languages()->ExportLanguageTranslations(['key' => $key])['data'];
file_put_contents("backup-$key.json", json_encode($dump));
Api::Languages()->DeleteLanguage(['key' => $key]);Tuzaklar
Gönderdiğiniz dil kodu kurulumda zaten varsa yeni dilin anahtarı kod-ülke biçimini alır. İkinci bir İngilizce kurmak en değil en-gb üretir. Anahtarı yanıttan okuyun; sonraki her çağrı onu ister.
Bir dili varsayılan yapmak eski varsayılanın ön ekini açar ve yenisininkini kapatır. Yani iki dilin de genel adresleri değişir ve eski bağlantılar kayar. Bu iş ayrıca ayar dosyasını yeniden yazar, yeni dili zorla açar. Yayında olan bir kurulumda bunu plansız yapmayın.
Durum ucu varsayılan dili kapatmayı 422 ile reddeder. Ayar ucu ise aynı isteği sessizce yok sayar ve 200 döndürür; dil açık kalır. İkisini karıştıran bir betik kapattığını sanır. Yanıttaki duruma bakın.
Durum ucu istenen durum mevcut durumla aynıysa no_change ile 422 döner. Yani bu uç tekrar edilebilir değildir: bütün dilleri "açık" hâle getiren bir eşitleme döngüsü zaten açık olanlarda hata alır. Yazmadan önce mevcut durumu okuyun.
Dili silmek çeviri dosyalarını, bildirim şablonlarını ve dil tablosu satırlarını kaldırır: o dildeki ürün adları, kategori başlıkları ve sayfa içerikleri de gider. Geri dönüş yolu yalnız yedektir. Silmeden önce çevirileri dışa aktarın.
İndirilebilir diller uzak bir servisten gelir. Servise ulaşılamazsa uç hata döndürmez, boş liste döner. Bu yüzden "hiç dil yok" ile "servise ulaşılamadı" aynı görünür. Boş sonucu bir arayüzde "seçenek yok" diye göstermeden önce yeniden deneme yolu bırakın.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.