2013-09-30 11 views
6

के साथ बहुभाषी डेटाबेस प्रबंधन मैं लैरावेल में बैकएंड के साथ एक ऐप बना रहा हूं। बैकएंड को ऑब्जेक्ट्स के संग्रह को प्रबंधित करने की आवश्यकता होती है जो ऐप पर डाउनलोड की जाती हैं। डिवाइस भाषा के आधार पर वस्तुओं को स्थानीयकृत किया जाना चाहिए।लार्वेल

क्या लैरवेल में ऐसा करने का कोई आसान तरीका है? शायद एक भाषण या Laravel प्लगइन? मैं खुद को स्थानीयकरण समर्थन लिखने से बचना चाहता हूं।

(Laravel में स्थानीयकरण में बनाया केवल इंटरफ़ेस के लिए, यह सुवक्ता वस्तुओं का समर्थन नहीं करता है)

उत्तर

9

आपको लगता है कि लिखने के लिए अपने दम पर की आवश्यकता होगी। सबसे पहले आप बहुभाषी सामग्री का समर्थन करने के लिए अपने डेटाबेस तालिकाओं मॉडल करने के लिए और फिर अपने मॉडल में आप की तरह कुछ कहने के लिए सक्षम हो जाएगा होगा:

class Content extends Eloquent 
{ 

    public function scopeEnglish($query) 
    { 
      return $query->where('language', '=', 'en'); 
    } 

    public function scopeSpanish($query) 
    { 
     return $query->where('language', '=', 'es'); 
    } 
} 


class Post extends Eloquent 
{ 
    public function content() 
    { 
    return $this->hasMany('Content'); 
    } 
} 

और फिर आप इसे पसंद का उपयोग कर सकते हैं:

$englishContent = Posts::find($id)->content->english()->get(); 
$spanishContent = Posts::find($id)->content->spanish()->get(); 
6

खुशी सहायता के उत्तर में कई भाषाओं के साथ बहुभाषी साइट के लिए सही लगता है। मुझे पता चला है कि ऐसा करने के लिए यह एक तरह का घबराहट है जब आपकी साइट में केवल दो/तीन भाषाएं होंगी।

मैंने जो किया है, प्रत्येक अनुवाद योग्य फ़ील्ड के लिए दो कॉलम हैं। title विशेषता के लिए मेरे पास डेटाबेस title_en और title_es डेटाबेस में है। उसके बाद, नियंत्रक में बस एक स्वचालित अनुवाद करने के लिए इस विधि को सेट करें।

public function getTitleAttribute() 
{ 
    $locale = App::getLocale(); 
    $column = "title_" . $locale; 
    return $this->{$column}; 
} 

अब आप Post::find($id)->title जब फोन यह स्वचालित रूप से वर्तमान भाषा के लिए एक मिल जाएगा।

उम्मीद है कि यह मदद करता है। चीयर्स!

1

@ user1067281 उत्तर के बाद मुझे बहु भाषा साइट के लिए एक महान उन्नत ट्यूटोरियल मिला।

आप पूरी तरह से यह देखना चाहिए: https://medium.com/laravel-4/26cdc75e4810

+2

कृपया, एक लिंक न केवल एक स्पष्टीकरण जोड़ने पर विचार करें। – Onik

+0

इसके लिए नया। टिप @ ओनिक के लिए धन्यवाद –

4

मैं

public function TextTrans($text) 
{ 
    $locale=App::getLocale(); 
    $column=$text.'_'.$locale; 

    return $this->{$column}; 
} 

अब मैं के साथ ही प्रत्येक क्षेत्र के लिए प्रत्येक भाषा के संस्करण के लिए समान है, लेकिन अधिक सार्वभौमिक

Schema::create('index', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title_uk'); 
     $table->string('title_ru'); 
     $table->string('title_en'); 
     $table->string('heading_uk'); 
     $table->string('heading_ru'); 
     $table->string('heading_en'); 
     $table->string('photo'); 
     $table->timestamps(); 
    }); 

मॉडल किया एक विशिष्ट कार्य निर्धारित नहीं करेगा, और यह सब कारण होगा:

$text=Index::find('1'); $text->TextTrans('title'); $text->TextTrans('heading');