geeksdevelop/translate

Package for handling translations of data in the database

1.0.1 2017-01-27 10:46 UTC

This package is not auto-updated.

Last update: 2024-09-28 21:29:33 UTC


README

###Compatible with laravel versions 5.1, 5.2, 5.3 and 5.4 Package for the translation of fields in the database according to the language of configuration of the laravel system.

Installation

  composer require geeksdevelop/translate

Service Provider

Add the package to your application service providers in config/app.php file.

'providers' => [
    /*
     * Package Service Providers...
     */
    Geeksdevelop\Translate\TranslateProvider::class,
],

Publish

Publish the migration to your application. Run these commands inside your terminal.

  php artisan vendor:publish --provider="Geeksdevelop\Translate\TranslateProvider"

Migrate the tables

Run migrations.

  php artisan migrate

Include trait to models

Include the Translate feature within your models where you need to translate fields.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Geeksdevelop\Translate\Traits\Translate;

class Post extends Model
{
    use Translate;

],

User Guide

Create translations

Create the translation by placing the following data locale => language to translate, type => Input name to translate, value => string incresada ene the input,

$post->setTranslate($locale, $type, $value);

Exemple

$post = Post::create([...]);
#English language
$post->setTranslate('en', 'title', 'Title of the post');
#French language
$post->setTranslate('fr', 'title', 'Après le titre');

#Table translates
+----+----------------+--------------------+-----------------+------------------+
| id | locale | type  |      value         | translable_type | translable_value |
+----+----------------+--------------------+-----------------+------------------+
| 1  | en     | title | Title of the post  | 1               | App\Post         |
+----+----------------+--------------------+-----------------+------------------+
| 2  | fr     | title | Après le titre     | 1               | App\Post         |
+----+----------------+--------------------+-----------------+------------------+

Get the translation

To get a translation we just have to make use of the method translate(), which by entering the type will give us the translation depending on the language in which the laravel system is configurated.

$post->translate('title');
#Title of the post

If you want to get a specific translation in a language other than the one that is configured laravel you can use the translate () method, in the following way:

$post->translate('title', 'fr');
#Après le titre

Using translate(), we can get all the translations that have been registered on the model in different languages.

$post->translate();
/*
translate => [
  0 => [
    'id' => 1,
    'locale' => 'en', 
    'value' => 'Title of the post', 
    'translable_type' => 1, 
    'translable_value' => 'App\Post'
  ],
  1 => [
    'id' => 2,
    'locale' => 'fr', 
    'value' => 'Après le titre', 
    'translable_type' => 1, 
    'translable_value' => 'App\Post'
  ]
];
*/

Update translations

To update, the method to be used is updateTranslate(locale, type, value)

$post->updateTranslate($locale, $type, $value);

Delete translation

To delete just use the method deleteTranslate(locale, type)

$post->deleteTranslate($locale, $type);