سهند
10 ماه پیش توسط سهند مطرح شد
3 پاسخ

چند زبانه کردن دیتابیس لاراول

سلام وقتتون بخیر.

ما یه سایت فروشگاهی عظیم داریم با لاراول. حال میخوایم محتوای محصولاتمون رو به انگلیسی و عربی ترجمه کنیم. استفاده از سرویس های ترجمه آنلاین و آفلاین مدنظر ما نیست زیرا که میخوایم برای هر زبان مد نظر محتوای خاص خودش رو تولید و ذخیره کنیم. نظر شما اساتید در این رابطه چیست؟


ثبت پرسش جدید
حسین افتخارراد
تخصص : نال کد
@hosseinradvictor 10 ماه پیش مطرح شد
0

درود از پکیج زیر استفاده کنید
https://spatie.be/docs/laravel-translatable/v6/introduction


سهند
@sahandi80 10 ماه پیش مطرح شد
0

@hosseinradvictor
نه دقت بفرمایید عرض کردم که نمیخوام سایت برای ما ترجمه کنه
بیشتر نیاز دارم به یه استراکچر دیتابیس برای چیدن اطلاعات هر زبان داخلش


حسین افتخارراد
تخصص : نال کد
@hosseinradvictor 10 ماه پیش مطرح شد
0

دقیقا این پکیج هم برای این مورد طراحی شده و روند به صورت زیر میباشد که درون مودل مد نظر کد های زیر رو اضافه میکنید

  use HasTranslations;

    public $translatable = ['name'];

در ارایه $translatable نام فیلدهایی که قصد دارید چند زبانی بر روی انها صورت گیرد را معرفی میکنید
سپس به صورت زیر دیتا ها رو وارد میکنید برای هر فیلد و زبان مد نظر

$newsItem = new NewsItem(); // This is an Eloquent model
$newsItem
   ->setTranslation('name', 'en', 'Name in English')
   ->setTranslation('name', 'nl', 'Naam in het Nederlands')
   ->save();
یا 
NewsItem::create([
   'name' => [
      'en' => 'Name in English',
      'nl' => 'Naam in het Nederlands'
   ],
]);

قسمت اول نام فیلد مد نظر و قسمت دوم کلید زبان مد نظر و درقسمت اخر متنی و دیتای که به زبان مد نظر میخواید وارد کنید
برای نمایش هم بدین صورت

$newsItem->getTranslation('name', 'nl');

نام فیلد و زبان مورد نظر برای نمایش متناسب با زبان اپ لوکال سیستم به صورت زیر

app()->setLocale('nl');

$newsItem->name;

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام