Dil ve Çeviri Kancaları
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
Bir çeviri anahtarı metne çevrildikten sonra çalışır. Sistemdeki her metin buradan geçer: sıcak bir yoldur, hafif tutun.
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
Çeviriler diske yazılmadan önce çalışır. Elinizdeki dizi yazılacak olanın kendisidir.
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
Bir çeviri anahtarı kaydedildikten sonra çalışır.
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
Bir dil paketinde toplu kelime değiştirme yapıldıktan sonra çalışır.
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
Yeni bir dil paketi açıldıktan sonra çalışır. Paket sıfırdan doğmaz: var olan bir dilden kopyalanarak kurulur.
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
Bir dil paketi silindikten sonra çalışır.
Hook::add('action:language.deleted', 10, function ($key) {
Acme::dropTranslations($key);
});Dil ayarlarının değişmesini izleme
Bir dilin ayarları kaydedildikten sonra çalışır.
Hook::add('action:language.settings_updated', 10, function ($id, $package) {
Acme::syncLocale($id, $package);
});Tuzaklar
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.
Ç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.
İ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.