Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Jul 31, 2022. It is now read-only.
/ tarjama Public archive

This package allows you to translate your models fields. `2.0` version will be continued here: https://github.com/fevrok/laravel-translatable

License

Notifications You must be signed in to change notification settings

LaravelArab/tarjama

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

64 Commits

Repository files navigation

this package is deprecated please use: https://github.com/fevrok/laravel-translatable

tarjama

It's a Laravel model columns translation manager

Current working model

Laravel Tarjama current working model

Installation

You can install the package via composer:

composer require laravelarab/tarjama

If you have Laravel 5.5 and up The package will automatically register itself.

else you have to add the service provider to app/config/app.php

LaravelArab\Tarjama\TarjamaServiceProvider::class,

If you want to change the default locale, you must publish the config file:

php artisan vendor:publish --provider="LaravelArab\Tarjama\TarjamaServiceProvider"

This is the contents of the published file:

return [
 /**
 * Default Locale || Root columns locale
 * We will use this locale if config('app.locale') translation not exist
 */
 'locale' => 'en',
 /**
 * Supported Locales e.g: ['en', 'fr', 'ar']
 */
 'locales' => ['ar', 'en', 'fr']
];

next migrate translations table

php artisan migrate

Making a model translatable

The required steps to make a model translatable are:

  • Just use the LaravelArab\Tarjama\Translatable trait.

Here's an example of a prepared model:

use Illuminate\Database\Eloquent\Model;
use LaravelArab\Tarjama\Translatable;
class Item extends Model
{
 use Translatable;
 /**
 * The attributes that are Translatable.
 *
 * @var array
 */
 protected $translatable = [
 'name', 'color'
 ];
}

Available methods

Saving translations

$item = new Item;
$data = array('en' => 'car', 'ar' => 'سيارة');
$item->setTranslations('name', $data); // setTranslations($attribute, array $translations, $save = false)
// or save one translation
$item->setTranslation('name', 'en', 'car', true); // setTranslation($attribute, $locale, $value, $save = false)
// or just do
$item->name = 'car'; // note: this will save automaticaly unless it's the default locale
// This will save if (current locale == default locale OR $save = false)
$item->save();

Get translations

$item = new Item::first();
// get current locale translation
$item->city
OR
$item->getTranslation('city');
// pass translation locales
$item->getTranslation('city', 'ar'); // getTranslation($attribute, $language = null, $fallback = true)
$item->getTranslationsOf('name', ['ar', 'en']); // getTranslationsOf($attribute, array $languages = null, $fallback = true)

Delete translations

$item = new Item::first();
$item->deleteTranslations(['name', 'color'], ['ar', 'en']); // deleteTranslations(array $attributes, $locales = null)

Maintainers

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /