PHP code example of igaster / laravel-translate-eloquent
1. Go to this page and download the library: Download igaster/laravel-translate-eloquent 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/ */
igaster / laravel-translate-eloquent example snippets
public function up()
{
Schema::create('translations', function (Blueprint $table) {
$table->increments('id');
$table->integer('group_id')->unsigned()->index();
$table->text('value')->nullable();
$table->string('locale', 2)->index(); // Can be any length!
});
}
public function down()
{
Schema::drop('translations');
}
$table->integer('key')->unsigned()->nullable();
class ExampleModel extends Eloquent
{
use \igaster\TranslateEloquent\TranslationTrait;
protected static $translatable = ['key'];
}
$model->key='Monday'; // Set the translation for the current Locale.
$model->key; // Get the translation for the current Locale
$model->translate('de')->key = 'Montag'; // Set translation in a locale
$model->translate('de')->key; // Get translation in a locale
$model->translate('de','en')->key; // Get translation in a locale / fallback locale
$model->key = [ // Set a batch of translations
'el' => 'Δευτέρα',
'en' => 'Monday',
'de' => 'Montag',
];
// Create a model translated to current locale
Day::create([
'name' => 'Πέμπτη',
]);
// Create a model with multiple translations
Day::create([
'name' => [
'el' => 'Σάββατο',
'en' => 'Saturday',
]
]);
App::setLocale('de'); // Set curent Locale
App::getLocale(); // Get curent Locale
Config::set('app.fallback_locale','el'); // Set fallback Locale
$translations = $model->translations('key'); // Get instance of Translations
$translations->in('de'); // Get a translation in a locale
$translations->set('el', 'Δευτέρα'); // Set a translation in a locale
$translations->has('el'); // Check if a translation exists
$translations->set([ // Set a batch of translations
'el' => 'Δευτέρα',
'en' => 'Monday',
'de' => 'Montag',
]);
$translations = new Translations(); // Create a new Translations collection
$translations = new Translations($group_id); // or load Translations with $group_id
$translations->group_id; // column `translations.group_id` groups all translations for a key
$translation = $translations->get('en'); // Get instance of `Translation` (a single translation)
$translation->id; // From this model you have access to the actual translations record
$translation->value='New Value'; // in your database. You can perform any raw opperation on it.
Day::findWithTranslation(1,'name'); // Day with id 1 with 'name' translated in the current Locale
Day::firstWithTranslation('name'); // First Day from the query with 'name' translated in the current Locale
Day::getWithTranslation('name'); // Collection of Day with 'name' translated in the current Locale
Day::allWithTranslation('name'); // Collection of Day with 'name' translated in the current Locale
// You can specify a locale as an extra parameter in all above scopes:
Day::firstWithTranslation('name', 'en'); // First Day from the query with 'name' translated in English
// The column name is optional and defaults to first item in your `$translatable` array:
Day::firstWithTranslation(); // First Day from the query with the first $translatable column (='name')
// translated in the current Locale
use igaster\TranslateEloquent\TranslationTrait {
__get as private;
__set as private;
}
//--- copy these in your model if you need to implement __get() __set() methods
public function __get($key) {
// Handle Translatable keys
$result=$this->translatable_get($key);
if ($this->translatable_handled)
return $result;
//your code goes here
return parent::__get($key);
}
public function __set($key, $value) {
// Handle Translatable keys
$this->translatable_set($key, $value);
if ($this->translatable_handled)
return;
//your code goes here
parent::__set($key, $value);
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.