1. Go to this page and download the library: Download codewiser/multilingual library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
codewiser / multilingual example snippets
$user->name;
// Michael
app()->setLocale('es');
$user->name = 'Miguel';
$user->name;
// Miguel
app()->setLocale('en');
$user->name;
// Michael
use Illuminate\Database\Eloquent\Model;
use Codewiser\Multilingual\Casts\Multilingual;
use Codewiser\Multilingual\Casts\AsMultilingual;
use Codewiser\Multilingual\Traits\HasMultilingual;
/**
* @property null|string $name
*/
class User extends Model
{
use HasMultilingual;
protected function casts(): array
{
return [
'name' => AsMultilingual::class
];
}
}
// Set value in current locale
$user->name = 'Michael';
// Set value with explicit locale
$user->withLocale('en', fn() => $user->name = 'Michael');
$user->withLocale('es', fn() => $user->name = 'Miguel');
// Set values as array (or Arrayable) to replace all values
$user->name = [
'en' => 'Michael',
'es' => 'Miguel',
];
// Get value in current locale
$name = $user->name;
// Get value in given locale
$nameInEn = $user->withLocale('en', fn() => $user->name);
$nameInEs = $user->withLocale('es', fn() => $user->name);
// One attribute
$user->multilingual('name');
// Multilingual<string>
// Several attributes at once
$user->multilingual(fn() => [$user->name, $user->description]);
// From outside the model
Multilingual::of(fn() => $user->name);
use Illuminate\Database\Eloquent\Model;
use Codewiser\Multilingual\Casts\Multilingual;
use Codewiser\Multilingual\Casts\AsMultilingual;
use Codewiser\Multilingual\Traits\HasMultilingual;
/**
* @property null|float $score
*/
class User extends Model
{
use HasMultilingual;
protected function casts(): array
{
return [
'score' => AsMultilingual::strict()
];
}
}
$user->score = [
'en' => 1.0,
'es' => 1.1
];
$user->withLocale('en', fn() => $user->score);
// 1
$user->withLocale('it', fn() => $user->score);
// null (exact value, no fallback)
use Illuminate\Database\Eloquent\Model;
use Codewiser\Multilingual\Casts\Multilingual;
use Codewiser\Multilingual\Casts\AsMultilingual;
use Codewiser\Multilingual\Traits\HasMultilingual;
/**
* @property null|array $keywords
*/
class User extends Model
{
use HasMultilingual;
protected function casts(): array
{
return [
'keywords' => AsMultilingual::class
];
}
}
$user->keywords = [
'en' => ['one', 'two'],
'es' => ['uno', 'dos'],
];
$user->withLocale('en', fn() => $user->keywords);
// ['one', 'two']
$user->withLocale('es', fn() => $user->keywords);
// ['uno', 'dos']
$user->multilingual('keywords')['es'][0];
// 'uno'
$user->multilingual('keywords')->toArray();
// ['en' => ['one', 'two'], 'es' => ['uno', 'dos']]
use Illuminate\Database\Eloquent\Model;
use Codewiser\Multilingual\Casts\Multilingual;
use Codewiser\Multilingual\Casts\AsMultilingual;
use Codewiser\Multilingual\Traits\HasMultilingual;
/**
* @property null|Username $name
*/
class User extends Model
{
use HasMultilingual;
protected function casts(): array
{
return [
'name' => AsMultilingual::using(Username::class)
];
}
}
$user->name = [
'en' => ['first_name' => 'John', 'last_name' => 'Smith'],
'es' => ['first_name' => 'Juan', 'last_name' => 'Herrera'],
];
$user->withLocale('en', fn() => $user->name);
// Username(['first_name' => 'John', 'last_name' => 'Smith'])
$user->withLocale('es', fn() => $user->name);
// Username(['first_name' => 'Juan', 'last_name' => 'Herrera'])
$user->name->first_name = 'Johnny';
$user->name->first_name;
// Johnny, the change was not thrown away by the next read
$user->isDirty('name');
// true
$user->multilingual('name')->toArray();
// ['en' => ['first_name' => 'Johnny', ...], 'es' => ['first_name' => 'Juan', ...]]
$user->save();
// the change is in the database
$hydrated = $user->name;
$user->name = ['en' => ['first_name' => 'Jane', 'last_name' => 'Doe']];
$hydrated->first_name = 'Nobody';
// does not touch the attribute anymore
use Illuminate\Database\Eloquent\Model;
use Codewiser\Multilingual\Casts\AsMultilingual;
use Codewiser\Multilingual\Traits\HasMultilingual;
use Illuminate\Support\Collection;
/**
* @property null|Collection<int, Username> $names
*/
class User extends Model
{
use HasMultilingual;
protected function casts(): array
{
return [
'names' => AsMultilingual::collect(Username::class, strict: true),
];
}
}
$user->names = [
['en' => ['first_name' => 'John', 'last_name' => 'Smith']],
['en' => ['first_name' => 'Gregory', 'last_name' => 'Johnson']],
];
$user->names->first();
// Username(['first_name' => 'John', 'last_name' => 'Smith'])
$user->multilingual('names')->first();
// Multilingual<Username> holding the very same object
$user->names->first()->first_name = 'Johnny';
// changes the attribute, just like a mapped attribute does
use Illuminate\Database\Eloquent\Model;
use Codewiser\Multilingual\Casts\Multilingual;
use Codewiser\Multilingual\Traits\HasMultilingual;
use Illuminate\Support\Collection;
use Illuminate\Database\Eloquent\Casts\AsCollection;
/**
* @property null|Collection<int, Multilingual<string>> $keywords
*/
class User extends Model
{
use HasMultilingual;
protected function casts(): array
{
return [
'keywords' => AsCollection::of(Multilingual::class)
];
}
}
$user->keywords = [
['en' => 'one', 'es' => 'uno'],
['en' => 'two', 'es' => 'dos'],
];
$user->keywords->first()->get();
// one
$user->withLocale('es', fn() => $user->keywords->first()->get());
// uno
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.