Spatie, hem veritabanı hem de dil dosyaları ile çevirileri öncelikle Laravel'in yerel çeviri sistemiyle sorunsuz bir şekilde entegre eden Laravel-Translation-Loader paketi aracılığıyla işler.
Hem veritabanı hem de dil dosyalarını kullanırken nasıl çalışır?
- Paket, özel bir tablo kullanarak veritabanında çevirileri depolamanıza olanak tanır (`dili_lines '). Her çeviri girişi, şunları içeren bir `` Drilagelateline '' model örneği ile temsil edilir:
- `Grup`: Çeviri Grubu (örn." Doğrulama "veya" Auth ").
- `Key`: Grup içindeki çeviri anahtarı.
- `text`: farklı yerler için çevirileri tutan bir dizi (örneğin,` ['en' => 'Bu gerekli bir alandır', 'nl' => 'dit een verplicht veld'] `).
- Laravel'in `trans ()` veya `__ ()` gibi olağan çeviri işlevlerini kullanarak bir çeviri istediğinizde, paket önce çeviri için veritabanını kontrol eder. Eşleşen bir giriş bulursa, veritabanı sürümünü döndürür.
- Çeviri veritabanında bulunmazsa, Laravel'in `Resources/Lang` dizininde depolanan geleneksel dil dosyalarına geri döner.
- Bu, veritabanı çevirilerinin hem aynı anahtar hem de yerel ayar için varsa dil dosyası çevirilerini geçersiz kıldığı anlamına gelir.
- Paket, JSON çeviri hatları için özel bir grup adı `` '' 'kullanarak hem grup tabanlı çevirileri (örn. `` Validation.required`) hem de JSON çevirilerini destekler.
Ek Özellikler ve Davranış
- Paket, performansı optimize etmek için çeviri gruplarını önbelleğe alır ve tekrarlanan çeviri isteklerinde veritabanı sorgularını azaltır. Çeviriler oluşturulduğunda, güncellendiğinde veya silindiğinde önbellek geçersiz kılınır.
- Genişletilebilir: Paketin `Tercümanloader` arayüzünü uygulayarak, veritabanı ve dil dosyalarının ötesindeki diğer kaynaklardan yüklenmesine izin vererek Paketin` Tercüman Yükleyici `arayüzünü uygulayarak özel çeviri sağlayıcıları (örn. YAML, CSV) ekleyebilirsiniz.
- Modifikasyon olmadan Laravel'in varsayılan çeviri yardımcılarını ve bıçak direktiflerini (`@Lang`,` Trans () `` __ () `)) kullanmaya devam edebilirsiniz.
Özet
Spatie'nin çeviri yükleyici paketi, veritabanı veritabanı girişlerine öncelik vererek veritabanı saklı çevirileri Laravel'in yerel dosya tabanlı çevirileriyle etkin bir şekilde birleştirir. Bu, statik dil dosyalarına geri dönüşü korurken veritabanı destekli bir kullanıcı arayüzü aracılığıyla çevirilerin dinamik düzenlenmesine izin verir. Entegrasyon pürüzsüzdür, mevcut çeviri çağrılarında minimum değişiklikler gerektirir ve ileri kullanım durumları için önbellekleme ve genişletilebilirlik sunar [1] [3] [5] [6] [7].
Alıntılar:
[1] https://github.com/spatie/laravel-cranslation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-translatable
[5] https://www.laravelbloglar
[6] https://packagist.org/packages/spatie/laravel-cranslation-loader
[7] https://freek.dev/593-a-laravel-package-to-tor-language-lines-in-the-the-to-tabase
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translatible