Giriş yapmadınız.

#26 20.04.2018 17:32:00

baylinux
Üye
Kayıtlı: 18.04.2018
Mesajlar: 19

Yanıt: Laravel Çoklu dil için içerik

Merhaba @mgsmus, Konu için ve ekstra verdiğin çok değerli bilgiler için teşekkür ederim.
Benim şöyle bir sorum daha olacak. Her dil çevirisi için bir slug değeri tutuyoruz. Bu değer dolayısı ile unique olmalı.
Kayıt ve Güncelleme işleminde, bir validation yaparak, bunu kontrol etmek gerekiyor.  Senin izlediğin yolu kullarak; döngü içerisinde her dil inputları  için validation oluşturdum.

Migration : 

$table->unique(['page_id','locale']);

Create

foreach(config('translatable.locales') as $locale) {
$rules = $rules + [
"slug.$locale"             => 'required|unique:page_translations,slug',
]
}

Update

foreach(config('translatable.locales') as $locale) {
$rules = $rules + [
"slug.$locale"             =>  'required|unique:page_translations,slug,'.$id.',id',
]
}

Böyle bir mantık yürüttüm. Bu konuda kullandığın yöntemin var ise, öğrenmek isterim.

Laravel Sluggable kullanmak gereklimidir ?
Bu konuda eski bir başlık mevcut. Fakat translatable kullanımı için, danışmam gerektiğini düşündüm.
http://forum.laravel.gen.tr/viewtopic.php?id=807

Son düzenleyen sineld (21.04.2018 09:02:58)

Çevrimdışı

#27 21.04.2018 09:22:15

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,537
Website

Yanıt: Laravel Çoklu dil için içerik

Eğer otomatik slug oluşturmak istiyorsanız sluggable kullanabilirsiniz. cviebrock/eloquent-sluggable ya da spatie/laravel-sluggable. Bu paketler aynı slugdan varsa yenisinin sonuna -1 -2 gibi ek eklenmesini de sağlıyor. hello-world varsa hello-world-1 olarak ekliyor yani.

Otomatik oluşturma ihtiyacınız yoksa paket kullanmanıza gerek yok. Ben de yukarıda kullandığınız yönteme benzer bir yöntem kullanıyorum. FormRequest içerisinde dile göre kural grupları oluşturma yani.

Ben içerik yönetim sistemlerinde en son şöyle bir yolda karar kıldım. Şöyle bir javascript paketi kullanıyorum:
https://github.com/pid/speakingurl

Bu paket javascript ile dile göre slug oluşturmanızı sağlıyor:

getSlug("Pijamalı hasta yağız şoföre çabucak güvendi"); // pijamali-hasta-yagiz-sofore-cabucak-guvendi
getSlug("D’fhuascail Íosa Úrmhac na hÓighe Beannaithe pór Éava agus Ádhaimh"); // dfhuascail-iosa-urmhac-na-hoighe-beannaithe-por-eava-agus-adhaimh

Bende slug arka planda oluşturulmuyor. Başlık alanı yanına slug alanı da var. Kullanıcı başlığı girince javascript ile slug alanı speakingurl ile otomatik dolduruluyor. Kullanıcı isterse ekleme çıkarma yapabiliyor, kendisi yazabiliyor. Arama motorları hala url'yi de aramalara dahil ettiği için bir çok kişi oraya elle ekleme yapmak istiyor. Örneğin sayfa adı Dolgu Çeşitleri ama slug istanbul-dolgu-fiyatlari gibi. Daha sonra arka planda ajax ile var mı yok mu kontrol ediyorum, varsa kullanıcıya slug üzerinde değişiklik yapması için uyarı veriyorum.

Çevrimdışı

#28 24.12.2018 13:16:23

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,443
Website

Yanıt: Laravel Çoklu dil için içerik

Mustafa flag_img() fonksiyonunu paylaşır mısın?

Çevrimdışı

#29 24.12.2018 13:47:56

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,537
Website

Yanıt: Laravel Çoklu dil için içerik

Şöyle bir şey yapmışım:

function flag_img($locale)
{
    switch ($locale) {
        case 'tr':
            $name = 'Türkçe';
            break;

        case 'en':
            $name = 'English';
            break;

        case 'de':
            $name = 'Deustch';
            break;

        case 'fr':
            $name = 'Français';
            break;

        case 'ru':
            $name = 'Pусский';
            break;

        case 'it':
            $name = 'Italiano';
            break;

        case 'ar':
            $name = 'العربية';
            break;

        case 'fa':
            $name = 'اللغة الفارسية';
            break;

        default:
            $name = null;
    }

    return '<img src="' . asset('backend/assets/images/' . $locale . '.png') . '" alt="' . $name . '">';
}

Şimdi olsa config/ içerisinde tutardım. Yardımcı fonksiyon config içerisinden alırdı.

Çevrimdışı

#30 24.12.2018 13:51:46

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,443
Website

Yanıt: Laravel Çoklu dil için içerik

Ben de buna benzer birşey yazdım:

function flag_img($locale)
{
    return sprintf(
        '<img src="%s" width="25" title="%s" />',

        url('images/flags/' . $locale . '.svg'),
        ucfirst($locale)
    );
}

Burada kullandığın flag görsellerini nereden temin ettin?
Ben https://github.com/hjnilsson/country-flags kullandım.

Çevrimdışı

#31 24.12.2018 14:22:33

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,537
Website

Yanıt: Laravel Çoklu dil için içerik

Set kullanmamışımdır, birkaç tane seçip images klasörüne atmışımdır. Tam olarak nereden aldığımı hatırlamıyorum. Svg olması iyi ama.

Çevrimdışı

#32 24.12.2018 14:26:29

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,443
Website

Çevrimdışı

Forum alt kısmı