Selamlar, kolay gelsin
Mesaji gec gordum ama aciklayabildigim kadar yanitlamaya calisayim.
—
Bu arada Volkan kardesim, bu linklere ortalama bir insan Google aramasi ile ulasabiliyor. Daha detayli aciklama yapmak daha iyi olur dusuncesindeyim. Katkin icin tesekkur ederim.
—
Sevgili Turgay
Bu konuda onemli noktalara deginelim.
On not: Symfony translation ve locale’i destekleyen bir framework. Kullanicinin locale’ini session’da tutar, locale’i set ettiginde Symfony’nin translation ve locale ilgilendiren her yerinin buna gore davranmasini saglarsin.
Translationlari dosya uzerinden yaparsan bunlar symfony’de onbellekleneceginden production’da performans farki hissetmezsin. Veritabanindan olmasi performans acisindan verimsiz olacaktir. Bunu optimize etmek senin elinde.
Ikincisi, icerigin nasil translate edilecegi konusu da senin entity’lerinin yapisina ve esneklik / tutarlilik bakis acina bagli bir durum. Volkanin bahsettigi translation calismalari esneklik acisindan maksimize edildiginden tutarlilik ve performans problemleri yaratabilir.
Eger tutarliligi tercih edersen entity’e ozel senaryolar olusturman mumkun. Yani entity’nin her alani multilanguage olmayacagindan (mesela Post::isActive gibi bir deger, Yada Product::price gibi bir alan string olmadigindan) duplication olusturur
Burada —> Entity (ornegin post) uzerinde content_EN_us, content_TR_tr, content_ES_es gibi alanlar olusturmak hos olmayan bir yaklasim oldugundan bu kisimlari one_to_many sekilde dusunmek daha iyi olur.
Hazir cozum olarak dusunursek:
Manuel cozum olarak dusunursek:
Iyi bir veritabani yapisi ile tutarliligin ve esnekligin en maksimize edildigi bir yaklasimi benimsemek ve bunu bir bundle’dan bagimsiz sekilde gelistirmek iyi bir deneyim olabilir. Ben bunu da oneririm. Ben genel olarak bir bundle’a bagimli kalmayi sevmiyorum. Hem ozellestirme kolay olmuyor hemde surum yukseltirken vendor lock’ta kalma ihtimali var.
Nasil bir db tablosu olmali?
Language (yeni eklenen diller buraya - id, locale)
Post (id, title, content, translations)
PostTranslation (id, locale_id, post_id, translated_value) —> (duplication’i engellemek icin kullandigin veritabaninda locale_id ile post_id yi beraber primary key olarak yap man lazim.)
Yine takilirsan yazabilirsin. Kolay gelsin.