Giriş yapmadınız.

#1 31.05.2017 12:41:22

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 185

Laravel Çoklu dil için içerik

Çok dilli bir proje yapmaktayım.
3 dil mevcut. İstediğim şekilde artırabilecek bir yöntem kafama yatmadı. Veritabanı yapım da bir id,code olan tablo ve çevirilerin yer aldığı ikinci bir tablom var.

Başka bir yapıyı taklit etmek istemiştim ama sonra vazgeçtim.
Bu id'ye sahip üç adet urun_id'si aynı olan tablo var. Böylece o id içinde ki tr,ru,en yerelleştirmelerini çağırabiliyorum içeriklerini.
Bunu diğerleri için yapacacağım. 3 adet form var, işte baslik ,rubaslik, enbaslik. Bunları foreach'e çekmeyi düşündüm dillere göre başlarına ekleyebilmesi için
İlk dil, gibi olaylar var büyük oranda trans ve session'a göre ön planda o dilin içerikleri olmalı.
Lisan adında bir tablo oluşturup local'i oradan almalıyımd iye düşünmüştüm sonrasında işin içinden çıkamadım. ManytoMany kullanmak istedim bu seferde pivot erişimi oluyordu ancak benim yapıma uygun gelmedi.
Bunu nasıl yapabilirim, yöntemler nelerdir veya kullandığınız şekliyle ? Dediğim işlemler için translatable şeklinde bir paket var ancak kurcalasamda kayıt çıkış işlemleri konusunda takılınca kendi yöntemlerime geçtim.
Yani böyle üç dilin dışına çıkamıyorum gibi istesem aynı işlemleri tekrar etmek durumundayım. Hardcode oldu biraz.

Çevrimdışı

#2 31.05.2017 13:47:20

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

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

Ben translatable kullanıyorum, şimdiye kadar bir problem yaşamadım, her türlü dil ihtiyacımı da giderdi.

Çevrimdışı

#3 01.06.2017 08:43:01

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 185

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

Peki, formları nasıl gönderiyorsun? Tek seferde hepsini mi  yoksa tek tek mi? Formlarda rubaslik , enbaslik yapmak zorunda da kaldım. Hepsini "baslik" olarak döndürdüğümde tek bir form verisi olduğu için üç kere döndürüyor, . Kod kalabalığı olması yanında controller da her dil için ayrı kaydettiriyorum fonksiyon içinde.

->translateOrNew($locale)->baslik

gibi kullanımlar var tam kafama oturmuş değil,
Bunu yapıyorum üç adet güzelce kaydediyor ancak, diğer diller de işin içine girince formdan gelen veriler girince kafam karışıyor.

  foreach (['en', 'ru', 'fr''] as $locale) {
        $article->translateOrNew($locale)->baslik= "Title {$locale}";
        $article->translateOrNew($locale)->icerik = "Text {$locale}";
    }

Temel olarak "form çıkışını" - "controller da ki yapıyı" sorduktan sonra dili artırmak istersem panelden her birini tek tek tanımlayacağım için mümkün olamayacak yani şöyle kullanıyorum ben.

       foreach (['tr', 'ru', 'en'] as $dil) {
            $urun = new Urun;
            $urun->translateOrNew($dil)->baslik = $request->baslik;
            $urun->translateOrNew($dil)->aciklama =  $request->aciklama;

            if ($request->resim) {
                $dosya = $request->file('resim');
                $dosyaadi = uniqid() . $dosya->getClientOriginalName();
                $dosya->move('galeri/urun_resim', $dosyaadi);
                $urun->translateOrNew($dil)->resim = $dosyaadi;
            }
            $resimler = $request->resim;
            if($resimler){
                foreach($resimler as  $resim){
                    $urunresim = new UrunResim;

                    $dosyaadi = $resim->getClientOriginalName() . uniqid();
                    $resim->move('galeri/urun_resim', $dosyaadi);
                    $urunresim->resim = $dosyaadi;
                    $urunresim->urun_id = $urun->translateOrNew($dil)->id;
                    $urunresim->save();
                }
            }

            $urun->translateOrNew($dil)->kategori_id =  $request->kategori;
            $urun->translateOrNew($dil)->title =  $request->title;
            $urun->translateOrNew($dil)->desc =  $request->desc;
            $urun->translateOrNew($dil)->meta =  $request->meta;
            $urun->translateOrNew($dil)->sira =  $request->sira;
            $urun->save();

        }

Bu tek birisi için üç adet aynı veriyi döndürüyor. Bunu üç dil için üç kat artırmam gerekiyor anlattığım şekilde olursa.  5 dil seçenekli üç dil olması gerekiyor. Artırma daha iyi olur tabi.

Son düzenleyen elementaryos (01.06.2017 10:49:10)

Çevrimdışı

#4 01.06.2017 16:46:14

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 185

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

Ek olarak bu lang içerisinde ki dosyayı arayüze nasıl çekebilirim daha sonra panelden değiştirebilmek için artık kaygılanıyorum yapıyı aşar mıyım gibi. Yapan bir kişi var .
https://www.youtube.com/watch?v=gFPP2voJZ2Y  O özelliği buradayapan birini  gördüm.

Son düzenleyen elementaryos (01.06.2017 16:46:53)

Çevrimdışı

#5 01.06.2017 20:50:57

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

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

/**
 * Menü linkini kaydeder
 *
 * @param MenuRequest|Request $request
 * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
 */
public function store(MenuRequest $request) {
    
    // Öncelikle çok dilli olmayan seçenekleri oluşturuyorum
    $data = [
        'code' => current(array_filter($request->input('title'))), // Burada en az bir dil girileceği için ilk girilen dilin, genellikle Türkçe oluyor, başlığını alıyorum
        'mega' => $request->input('mega')
    ];

    // _locales() burada config('translatable.locales'); döndüren basit bir yardımcı fonksiyon, dizi dönderiyor.
    // Bu kısımda foreach içerisinde çoklu dil olan alanları içeren veri bölümünü oluşturuyorum
    foreach(_locales() as $locale) {
        $data[$locale] = [
            'title' => $request->input("title.$locale"),
            'url' => $request->input("url.$locale"),
            'rel' => $request->input("rel.$locale"),
        ];
    }

    Menu::create($data);

    return redirect()->route('admin.menu.index')->with('success', 'Menü linki eklendi');
}

Şablonlarda da aynı mantıkla alanları oluşturuyorum.

@extends('backend._layout.master')

@section('page-header')
    <div class="page-header">
        <h1 class="page-title">Menü Ekle</h1>
        <p class="description">Ana menüye yeni bir link ekleyin</p>
    </div>
@stop

@section('page-content')
    {!! Form::open(['route'=>'admin.menu.store']) !!}
    
    <div class="panel panel-bordered">
        <div class="panel-body">

            <div class="nav-tabs-horizontal nav-tabs-inverse" data-plugin="tabs">
                <ul class="nav nav-tabs nav-tabs-line" role="tablist">
                    @foreach(_locales() as $locale)
                        <li class="nav-item" role="presentation">
                            <a class="nav-link {{ $loop->first ? 'active':null }}" data-toggle="tab" href="#lang-tab-{{ $locale }}" aria-controls="lang-tab-{{ $locale }}" role="tab" aria-expanded="{{ $loop->first ? 'true':'false' }}">
                                {!! flag_img($locale) !!}
                            </a>
                        </li>
                    @endforeach
                </ul>
                <div class="tab-content">
                    @foreach(_locales() as $locale)
                        <div class="tab-pane p-t-20 {{ $loop->first ? 'active':null }}" id="lang-tab-{{ $locale }}" role="tabpanel" aria-expanded="{{ $loop->first ? 'true':'false' }}">

                            <div class="form-group">
                                {!! Form::label("title[$locale]",'Başlık *') !!}
                                {!! Form::text("title[$locale]",null,['class'=>'form-control']) !!}
                            </div>

                            <div class="form-group">
                                {!! Form::label("url[$locale]",'Link *') !!}
                                {!! Form::text("url[$locale]",'#',['class'=>'form-control','required']) !!}
                                <span class="text-help">Dış bağlantılar <code>http://</code> ile başlamalı</span>
                            </div>

                            <div class="form-group">
                                {!! Form::label("rel[$locale]",'Özellikler (rel)') !!}
                                {!! Form::text("rel[$locale]",null,['class'=>'form-control']) !!}
                                <span class="text-help">Yeni sayfada açılması için <code>external</code>, sayfa değerini korumak için <code>nofollow</code> yazabilirsiniz.</span>
                            </div>

                        </div>
                    @endforeach
                </div>
            </div>


        </div>
    </div>

    @include('backend._components.default-form-buttons',['cancel_url' => route('admin.menu.index')])

    {!! Form::close() !!}
@stop

Pr4ZM5.jpg

Son düzenleyen mgsmus (01.06.2017 20:56:06)

Çevrimdışı

#6 02.06.2017 15:43:02

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 185

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

Hmm, Olması gerektiği kadar pratik. Deniyorum şuan. Viewler de fonksiyonu tanımadı. View'e hiç fonksiyon tanıtma ihtiyacı hissetmemiştim, haliyle nasıl olabilir bilmiyorum ? Call to undefined function _locales()  Bunları düzenlemek için de aynı yöntemi mi kullanmak gerekiyor malum name="baslik[$tlocale]" olduğu için ikinci bir foreach ile diğer dilleri döndürmek sorun olmaz sanırım.
Bu arada bu fonksiyonu ve kullanımı hiç bir yerde görmedim, dökümantasyona bile koymamışlar.

Çevrimdışı

#7 02.06.2017 15:53:12

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

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

_locales() benim kendi yazdığım bir yardımcı fonksiyon. Nasıl yapıldığını şurada anlattım:
http://forum.laravel.gen.tr/viewtopic.p … 7993#p7993

Bahsi geçen konuda app/Support/helpers.php dosyası içerisinde yardımcı fonksiyonları tanımlıyorum.

/**
 * Translatable içindeki tüm dilleri ya da aktif uygulama dilini getirir
 *
 * @param bool $current True belirtildiğinde mevcut uygulama dilinin getirilmesini sağlar
 * @return array|string
 */
function _locales($current = false)
{
    if($current) {
        return app()->getLocale();
    }

    return config('translatable.locales');
}

Çoklu dil gereken tüm alanlarda benim _locales() ile yaptığım gibi foreach ile yapmanız gerekiyor. Buradaki amaç, yeni dil eklemek istediğimde sadece config/translatable.php içerisindeki locales dizisine dili eklemem yeterli olmalı.

Yeni dil ekleneceği zaman:
- config/translatable.php içerisine dili ekliyorum
- Mevcut temanın bir kopyasını alıp ilgili dile çeviriyorum. Bende genellikle views içerisinde tr, en, de gibi klasörler olur, her dilin kendine ait şablonu var.
- resources/lang içerisindeki dil klasörlerinden birini kopyalayıp yeni dil için oluşturuyorum.

2-3 saat içerisinde bitmiş oluyor.

Son düzenleyen mgsmus (02.06.2017 15:58:03)

Çevrimdışı

#8 02.06.2017 23:27:30

burakayaz
Üye
Kayıtlı: 27.04.2017
Mesajlar: 4

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

Translatable paketinin dokümantasyonunda geçen bir paket var, TranslatableBootForms diye. Adamwathan (Larvel'in contributor'ü) 'ın yaptığı BootForms paketiyle bilrikte çalışıyor. BootForms paketini kullandıktan sonra açıkçası pek kullanma gereği duymadım ancak fikir almak için kullanabilirsin. smile

Çevrimdışı

#9 03.06.2017 11:05:22

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 185

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

mgsmus çok yardımcı oldu desteğin için eyvallah, sanırım bu şey collective paketi olmadan olmuyor. Array to String to Array conversion hatası vermişti. name[{{$locale}}] gibi şeyleri kesinlikle kabul etmiyor zaten.
Proje de ki modelleri ilkel yöntemle yaptım ama bir dahakine bunu kullanırım artık. Dökümanda ki bootform'u farketmemiştim bu arada bilgi için teşekkürler. Bunu yapmadan önce bu yöntemi biliyor olsaydım iyi olurdu smile

Çevrimdışı

#10 05.06.2017 16:32:11

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 185

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

Tekrar konuyu açacağım ama ertelemiştim bunu denediğimde array string conversionbenzeri bir hataveriyor, view sebebiyle local işini view algılamıyor  bile. Döngü dönüyor içerisinde $locale tanımlandığındabu şekilde patlıyor.
Bunun nedeni collective diye tahmin ediyordum ama değilmiş. Proje günlere sarktı ilkel yönteme devam ettiğim için yakınıyorum şuan. Diğer özellikler vs. Proje angarya işlerle uğraşmaktan bitmiyor. Düzenleme düzenleme..
Bir daha tevbe.

Çevrimdışı

#11 05.06.2017 17:11:34

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 185

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

Beceriksiz miyim neyim ? O eşiği aştım ,null, koymak gerekiyormuş. Yoksa patlıyor collective olmadan nasıl yapılabilir ki bu? Nul'un karşılığı nedir ? Düzenleme için ikinci bir for gerkir mi? Bu da gelen veriyi çoklamak demek. Sonuç olarak verileri yazdırmak için başka foreach gerekiyor _locale de gerekli bir fonksiyon.

Çevrimdışı

#12 05.06.2017 23:23:07

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

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

Konunun Collective paketi ile ilgisi nedir anlayamadım. Ben sadece formda foreach ile otomatik olarak alanları nasıl oluşturduğumu göstermek istedim. Kodlarınızı görürsem daha çok yardımcı olabilirim.

Çevrimdışı

#13 06.06.2017 04:09:09

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 185

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

Sorunları hallettim, collective ile alakası yokmuş.  İlk seferinde   $locale gelince patlıyordu  bana collective kaynaklı olduğunu düşündürttü her niyeyse, kullanım amacını biliyorum ama patladığı için onu denedim. Sorduğum da şuydu, ben collective'a aykırı şeklde value eklemeye çalıştığım için value görmüyordu syntax'ı farklı olduğu için kullanımı öğrendiğimden sorun kalmadı zira dene-yanıl. Ana projenin deadline 'ı geçtiği için ben de hardcode hızlı olur düşüncesiyle girişince gümledi. O yüzden biraz panik havasıyla yazdım.  O patlama da collective kaynaklı düşünüyordum dediğim gibi translatable ayarlarına gireyim dedim o da oradan düzeldi, arada kalan hataları da halletmiştim. Sorun yok şuan smile
Proje bitmeliydi şimdiye hardcode yazıp geçeyim desemde view'lerle başedemedim şimdi bu yönteme geçiyorum ki istersem yüz tane dil ekleyebileyim smile

Son düzenleyen elementaryos (06.06.2017 08:28:29)

Çevrimdışı

#14 18.04.2018 15:12:54

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

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

Merhaba, Öncelikle paylaştığınız bilgiler için teşekkür ederim.

Bende bu paketi kullandım fakat, Edit ve Update işlemini nasıl yapacağımı anlayamadım. Dökümantasyon bilgiler mevcut ama bir türlü çıkamadım işin içinden.
Bootform var fakat paket kullanmak istemedim ?  Bunun için nasıl bir yol izlediniz

Çevrimdışı

#15 18.04.2018 17:03:53

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

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

translatable adında iki paket var, bunlardan hangisi?

github url verir misin @mgsmus

Çevrimdışı

#16 18.04.2018 17:34:42

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

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

https://github.com/dimsav/laravel-translatable paketi.

$pages = Page::where('id', $id)->first();
{{ Form::text("name[$locale]", $pages->{'name:'.$locale.''}, array('class' => $errors->has("name[$locale]") ? 'form-control error' : 'form-control')) }}
$pages->translate($locale)->name

veya bu şekilde veriyi input içerisine alabiliyorum. Emin olamadım yaptıklarımdan.  Tüm verileri nasıl bind edeceğim ve update edeceğim. Ben @mgsmus'un yaptığı gibi yaptım fakat bu noktada kaldım.

https://github.com/Propaganistas/Larave … -Bootforms bu paketi kullanmama gerek var mı sizce ?

Son düzenleyen sineld (19.04.2018 09:12:00)

Çevrimdışı

#17 19.04.2018 02:38:01

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

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

@sineld
Benim kullandığım
https://github.com/dimsav/laravel-translatable

@baylinux

// Güncelleme formunda mevcut veriyi şu şekilde yazdırabilirsiniz
@foreach(config('translatable.locales') as $locale)
    {!! Form::text("name[{$locale}]", $page->translateOrNew($locale)->name) !!}
@endforeach

// Controller içerisinde ise mevcut bir kaydı güncellemek için benim izlediğim yol aşağıda.
// Üstteki cevaplarda verdiğim kayıt ekleme ile aynı mantık
public function update(Request $request, $id)
{
    // Önce güncellenecek kaydı alıyorum
    $page = Page::findOrFail($id);

    // Daha sonra yeni veriyi tutacak bir dizi oluşturuyorum.
    // İlk girdiğim değerler çeviri olmayan, direk ana tabloya girilen değerler. Örneğin code alanı.
    // Buradaki mantık size kalmış.
    $data = [
        'code' => current(array_filter($request->input('title'))), // Burada ilk girilen, boş olmayan title değerini aldım. Bende genellikle ilk dil Türkçe olduğu için Türkçe title oluyor.
    ];

    // Daha sonra çeviri alanlarını $data dizisine ekliyorum
    // Dizinin bu bölümündeki veri çeviri tablosuna ekleniyor.
    // Bu kısımda veriyi temizleme, boş dillerin eklenmesini engelleme vs size kalmış
    foreach(config('translatable.locales') as $locale) {
        $data[$locale] = [
            'title' => $request->input("title.{$locale}"),
            'content' => $request->input("content.{$locale}"),
            'slug' => $request->input("slug.{$locale}"),
            'meta_title' => $request->input("meta_title.{$locale}"),
            'meta_description' => $request->input("meta_description.{$locale}"),
        ];

        // Burada diğer çok dilli işlemleri yaptırabilirsiniz...
    }

    // Şimdi elimde translatable için uygun yapıya sahip bir $data dizisi var
    // Bununla kaydı güncelliyorum
    $page->update($data);

    // Yönlendirme vs...
    return redirect()->route('admin.pages.index')->with('success', 'Kayıt güncellendi');
}

Yani elinizde yeni kayıt oluşturmak ya da mevcut kaydı güncellemek için örneğin şöyle bir veri yapısının oluşması gerekiyor:

$data = [
    'code' => 'Merhaba Dünya',
    'published_at' => '2018-04-19 03:39:12', 
    'tr' => [
        'title' => 'Merhaba Dünya',
        'slug' => 'merhaba-dunya'
    ],
    'en' => [
        'title' => 'Hello World',
        'slug' => 'hello-world'
    ]
];


pages tablosu
+----+---------------+---------------------+
| id |     code      |    published_at     |
+----+---------------+---------------------+
|  1 | Merhaba Dünya | 2018-04-19 03:39:12 |
+----+---------------+---------------------+

page_translations tablosu
+----+---------+--------+---------------+---------------+
| id | page_id | locale |     title     |     slug      |
+----+---------+--------+---------------+---------------+
|  1 |       1 | tr     | Merhaba Dünya | merhaba-dunya |
|  2 |       1 | en     | Hello World   | hello-world   |
+----+---------+--------+---------------+---------------+

Son düzenleyen mgsmus (19.04.2018 02:47:50)

Çevrimdışı

#18 19.04.2018 13:36:04

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 463

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

@mgsmus bu pakette Pluralization göremedim ben.Onu nasıl yapıyorsun.
Localize meselesinde asıl ehemmiyetli konu bu aslında.Çok karışık olabiliyor bazen.Laravelin localizationunda bu var mesela.

Birde şunu istiyorum.Mesela ben bir dil dosyasını talep ettiğimde default olarak yazdığım dosyada otomatik olarak gelsin istiyorum.
mesela static değişmeyen datalar mesela.bunlara nasıl çözüm getiriyorsunuz.

Son düzenleyen deathisonitsway (19.04.2018 13:39:21)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#19 19.04.2018 15:25:06

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

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

Pakette pluralization yok, Laravel'in str_plural() şeklinde helper yöntemi mevcut ama yazdıklarımda ya da paketle ilgili olarak pluralization ile alakalı bir kısım göremedim. Nereden bahsediyorsunuz?

İkinci parağrafta sorduğunuzu biraz daha açıklayabilir misiniz?

Çevrimdışı

#20 19.04.2018 16:02:41

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 463

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

mgsmus yazdı:

Pakette pluralization yok, Laravel'in str_plural() şeklinde helper yöntemi mevcut ama yazdıklarımda ya da paketle ilgili olarak pluralization ile alakalı bir kısım göremedim. Nereden bahsediyorsunuz?

İkinci parağrafta sorduğunuzu biraz daha açıklayabilir misiniz?

İşte tam üzerine bastın onu soruyorum.Diyorum ki laravelin localizationundan bu paketin artısı nedir? mesela pluralization yok dedin.
Ama laravelin kendisinde bu var.Sorum basit; sen paket kullanıyorsan demek ki var bir bildiğin.

İkinci kısımdaki sorum su ; mesela static tanımlı değerler var ama tek bir dosyaya bağlı değil.
Mesela button => kaydet gibi...

Kalkıpta bunu her dosyada tanımlamıyorsunuz değil mi? yoksa tanımlıyormusunuz? ben diyorum ki bu tur aynı değere sahip (dil olarakta farketmiyor) kelimeler default dosyada tanımlansın mesela..neyi çağırırsam çağırayım gelsin mesela bunlar...

Yada sen nasıl yapıyorsun bunu ?


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#21 19.04.2018 16:30:09

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

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

Öncelikle pluralization İngilizcede çoğullaştırmadır, tekil isim çoğul isim olayı. İngilizce'de Türkçe'deki gibi değil ama, sayılabilir ve sayılamaz isimler var. Onun için ek işlem yapılması gerekiyor.

Örneğin

str_plural('car'); // cars
str_plural('dog'); // dogs
str_plural('child'); // children , bu böyle dönüşür
str_plural('wolf'); // wolves, bu böyle dönüşür
str_plural('equipment'); // equipment, sayılamaz olduğu için s takısı almaz.
str_plural('water'); // water, sayılamaz olduğu için s takısı almaz.

Bence siz başka bir şeyden bahsediyorsunuz, istediğiniz pluralization değil.

button => kaydet olayına gelince;
resources/lang içerisinde dil dosyaları var. Bu tür dil ile ilgili statik değerleri burada ekliyoruz.
config klasöründe olduğu gibi burada da kendiniz bir dosya oluşturabilirsiniz. örneğin:

// resources/lang/tr/site.php
return [
    'button.save' => 'Kaydet',
    'button.update' => 'Güncelle',
    'button.delete' => 'Sil'
];

// resources/lang/en/site.php
return [
    'button.save' => 'Save',
    'button.update' => 'Update',
    'button.delete' => 'Delete'
];

Buradaki değerlere ulaşmanın birden fazla yolu var. Genellikle yardımcı yöntemler kullanılarak:

trans('site.button.save');
__('site.button.save'); // İki tane alt çizgi
@lang('site.button.save') // Blade şablonları içinde
{{ trans('site.button.save') }}
{{ __('site.button.save') }}

Daha teknik bilgi için API dökümanlarına bakılabilir:
https://laravel.com/api/5.6/Illuminate/Translation.html

Burada çağrılan dil ise uygulamanın şu an ki dili. Yani App::getLocale() ile gelen dil:

// Şu anki dil tr olsun mesela
trans('site.button.save'); // Kaydet basar
App::setLocale('en');
trans('site.button.save'); // Save basar

gibi.

Çevrimdışı

#22 19.04.2018 17:10:30

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

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

Bu konu başlığı tam arşivlik oldu valla. Katılan herkese teşekkür ederim.
@mgsmus seni ayrıca alkışlamak da istiyorum cool

Çevrimdışı

#23 20.04.2018 08:12:56

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 463

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

@mgsmus cok yorulmuşsun anlasılan hiç anlamıyorsun beni yahu smile
derdim plurization yada o şu bu değil.Diyorum ki laravelin haricinde olan bir paketi niye kullanıyorsun diyorum.
Laravelin localizationunda olmayan neydi de seni paket kullanımına itti..

hay allahım ya smile

Son düzenleyen deathisonitsway (20.04.2018 08:17:19)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#24 20.04.2018 10:03:25

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

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

@deathisonitsway söz konusu paketi incelersen, işi nasıl yapacağını anlatmış yazılımcı, senin uygulama katmanında ise işi yapan bir trait zaten.
Ben hakimim olaya dersen paket kullanmazsın, alırsın bu traiti gömersin projene, biter.

Çevrimdışı

#25 20.04.2018 12:19:58

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

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

Öncelikle Laravel'in içindeki localization ile paketin yaptığı çok farklı.
Ben bu paketi çok kullanıyorum, ihtiyaçlarımı ve fazlasını karşılıyor, kullanan sayısı da çok fazla, sürekli güncel ve hataları gideriliyor, bir hata bulmuştum geliştiriciye anlattım düzeltti sağolsun. Şimdi ben kendim yazacak olsam paket haline getirip sürekli güncel tutmam gerekecek ve yazdığım şey de bu paketten farklı bir iş yapmayacak. Bazı paketler olur, yaptıkları iş bellidir, artık doyuma ulaşır, yeni bir şeyler eklenmez artık, bu da onun gibi. O tür paketleri genellikle kullanıyorum. Kabaca çok kullandığım paketlerden bir liste çıkarmam gerekirse:

artesaos/seotools // SEO işlemleri için
barryvdh/laravel-debugbar // Symfony'deki gibi bir debugbar
barryvdh/laravel-ide-helper // IDE'ler için yardımcı
dimsav/laravel-translatable // Bahsi geçen çok dilli işlemler için kullandığım paket
guzzlehttp/guzzle // HTTP istemcisi
kalnoy/nestedset // Hiyerarşik yapı oluşturmada nested set yöntemi için
laravelcollective/html // Laravel'in eski HTML ve FORM bileşenleri
maatwebsite/excel // Excel işlemleri için, sadece gerektiğinde
spatie/laravel-permission // Rol - Yetki sistemi için

Çevrimdışı

Forum alt kısmı