Dil ve Çeviri Kancaları

1.6k görüntülenme Markdown

Metnin yedi kancası: çeviriyi çözme, kaydetme, paketi süpürme ve dil ekleme, silme, ayarlama.

Genel Bakış

Metnin yolu iki yönlüdür: bir anahtar çözülür ve ekrana gider, ya da bir çeviri kaydedilir ve diske yazılır. Her iki uçta birer filtre bulunur.

Yanlarında dil paketinin kendi olayları durur: paket açma, silme ve ayar değişikliği. Yeni bir paket boş doğmaz; var olan bir dilden kopyalanır.

Referans

Çözülen metni değiştirme

filteri18n.translation
Language::g bağla geçer

Bir çeviri anahtarı metne çevrildikten sonra çalışır. Sistemdeki her metin buradan geçer: sıcak bir yoldur, hafif tutun.

Parametreler 3
$valuestringbağlaÇözülmüş metin. Üzerine yazdığınız hâli sonuçtur.
$keystringİstenen anahtar.
$langstringÇözümde kullanılan dil.
Dönüş 1
voidDönüş yoksayılır; metnin üzerine yazarsınız. Dokunmazsanız özgün metin döner.
Dinleyici
Hook::add('filter:i18n.translation', 10, function (&$value, $key, $lang) {
    // Her metin buradan gecer: once anahtari eleyin.
    if ($key !== 'website/home/title') return;

    $value = Acme::brandedTitle($lang);
});

Kaydedilecek çevirileri düzenleme

filteri18n.translation_save
AdminLanguages bağla geçer

Çeviriler diske yazılmadan önce çalışır. Elinizdeki dizi yazılacak olanın kendisidir.

Parametreler 2
$valuesarraybağlaAnahtar karşılık değer çiftleri. Değer düz metin olabileceği gibi içerik ve değişkenleri taşıyan bir dizi de olabilir: ikisine de hazır olun.
$idstringHedef dil.
Dönüş 1
voidDönüş yoksayılır; dizinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:i18n.translation_save', 10, function (&$values, $id) {
    // Deger duz metin de olabilir, dizi de.
    foreach ($values as $k => $v)
        if (is_string($v)) $values[$k] = trim($v);
});

Çeviri kaydını izleme

actioni18n.translation_saved
AdminLanguages yalnız gerçekten yazılanlar

Bir çeviri anahtarı kaydedildikten sonra çalışır.

Parametreler 2
$keystringKaydedilen tam anahtar.
$savedarrayYalnız gerçekten diske yazılan dillerin listesi. Gönderilmiş ama değeri değişmemiş diller bu listede yoktur: “hangi diller gönderildi” sorusunun cevabı burada değildir.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:i18n.translation_saved', 10, function ($key, $saved) {
    // Liste yalniz DEGISENLERI tasir, gonderilenleri degil.
    foreach ($saved as $lang) Acme::invalidateCache($lang, $key);
});

Toplu değiştirmeyi izleme

actioni18n.bulk_replaced
AdminLanguages tek dil paketi

Bir dil paketinde toplu kelime değiştirme yapıldıktan sonra çalışır.

Parametreler 4
$langstringSüpürmenin uygulandığı tek dil.
$wordstringAranan ham kelime; desen değildir.
$replacementstringYerine yazılan metin. Geri başvuru olarak yorumlanmaz: içindeki değerler düz metin olarak yazılır.
$changedintDeğeri gerçekten değişen anahtar sayısı; seçilen anahtar sayısı değil.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:i18n.bulk_replaced', 10, function ($lang, $word, $replacement, $changed) {
    // Sayac degisenleri tasir: secilenleri degil.
    Acme::auditSweep($lang, $word, $changed);
});

Dil eklenmesini izleme

actionlanguage.added
AdminLanguages kopyalanarak açılır

Yeni bir dil paketi açıldıktan sonra çalışır. Paket sıfırdan doğmaz: var olan bir dilden kopyalanarak kurulur.

Parametreler 2
$keystringYeni dilin anahtarı.
$copied_fromstringİçeriğin kopyalandığı kaynak dil. Yeni paket ilk anda kaynağın metinleriyle doludur: “çevrilmemiş” değil, yanlış dilde görünür.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:language.added', 10, function ($key, $copied_from) {
    // Paket kaynagin metinleriyle dolu baslar: ceviri kuyruguna alin.
    Acme::queueTranslation($key, $copied_from);
});

Dil silinmesini izleme

actionlanguage.deleted
AdminLanguages silme sonrası

Bir dil paketi silindikten sonra çalışır.

Parametreler 1
$keystringSilinen dilin anahtarı.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:language.deleted', 10, function ($key) {
    Acme::dropTranslations($key);
});

Dil ayarlarının değişmesini izleme

actionlanguage.settings_updated
AdminLanguages yazımdan sonra

Bir dilin ayarları kaydedildikten sonra çalışır.

Parametreler 2
$idstringGüncellenen dilin anahtarı.
$packagearrayDiske yazılan ayarlar: görünen adı, sırası, sağdan sola yazılıp yazılmadığı ve durumu.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:language.settings_updated', 10, function ($id, $package) {
    Acme::syncLocale($id, $package);
});

Tuzaklar

Çeviri filtresi sıcak yoldur

Sistemdeki her metin bu filtreden geçer: tek bir sayfada yüzlerce kez. Ağır bir iş koymadan önce anahtarı eleyin, ilgilenmediğiniz çağrılardan hemen çıkın.

Kaydedilen diller listesi gönderilenleri göstermez

Çeviri kaydı olayının taşıdığı liste yalnız değeri gerçekten değişen dilleri içerir. Gönderilmiş ama aynı kalan diller listede yoktur; “hangi diller gönderildi” sorusunu buradan cevaplamayın.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.