Download the PHP package itstructure/laravel-multilingual-tools without Composer
On this page you can find all versions of the php package itstructure/laravel-multilingual-tools. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download itstructure/laravel-multilingual-tools
More information about itstructure/laravel-multilingual-tools
Files in itstructure/laravel-multilingual-tools
Package laravel-multilingual-tools
Short Description Laravel package for multilingual content manage
License MIT
Informations about the package laravel-multilingual-tools
MULT
Laravel multilingual tools
1 Introduction
MULT - Package for the Laravel framework to content manage with different languages.
For example, you can store pages in English, Russian, French, German and some another languages...
It is you who add new languages to your application.
All multilingual fields will be with a language postfix, as in example:
title_en
, description_en
, content_en
title_ru
, description_ru
, content_ru
, e t. c.
2 Dependencies
- laravel 8+ | 9+ | 10+ | 11+ | 12+
- php >= 7.3
- composer
3 Installation
Note!
Version 2.x is for laravel 8, 9, 10, 11, 12.
Version 1.x is for laravel 7. You can use branch laravel7-mult
with 1.x versions.
3.1 General installation from remote repository
Run the composer command:
composer require itstructure/laravel-multilingual-tools "~2.0.6"
3.2 If you are testing this package from local server directory
In application composer.json
file set the repository, as in example:
Here,
../laravel-multilingual-tools - directory name, which has the same directory level as your project application and contains MULT package.
Then run command:
composer require itstructure/laravel-multilingual-tools:dev-master --prefer-source
3.3 Next internal installation steps
-
Publish files.
-
To publish migrations run command:
php artisan mult:publish --only=migrations
It stores migration file to
database/migrations
folder. There is a migration to create languages table. -
To publish seeder run command:
php artisan mult:publish --only=seeders
It stores seeder files to
database/seeders
folder. There is a seeder to create a first English language DB entry as a default. -
To publish all parts run command without
only
argument:php artisan mult:publish
Else you can use
--force
argument to rewrite already published files. -
-
Run command to run migration and seed:
php artisan mult:database
The next will be acted:
-
A table languages will be created.
- A first English language will be stored as a default.
Or optional:
To run just migration
php artisan mult:database --only=migrate
To run just seed
php artisan mult:database --only=seed
-
Alternative variant for seeders.
You can set published
MultSeeder
seeder class in to a specialDatabaseSeeder
:and run command:
php artisan db:seed
.
-
4 Usage
Notes:
-
There are no controllers, views, routes and another CRUD elements to manage languages. There is just a model
Language
. This CRUD you must to create by yourself in your application. - There are no controllers, models, views, routes and another CRUD elements to manage entity content. There are just base classes, which are written below. CRUDs you must to create by yourself in your application.
4.1 Migration part
First, before a develop multilingual application, make migrations with extending from MultilingualMigration
base class.
Example for pages table:
Here,
createMultilingualTable() method provides:
-
First argument: table name.
-
Second argument: a callable with multilingual fields.
- Third argument: a callable with simple fields.
After applying a migration, two tables will be created automatically:
-
pages - to store a simple data.
- pages_languages - to store translates, some entries for concrete pages entry.
Note: Timestamps created automatically for both tables.
And the next special columns for pages_languages table with foreign keys will be created automatically:
-
column pages_id. Foreign key to pages table
pages_languages(pages_id) -> pages(id)
- column languages_id. Foreign key to languages table
pages_languages(languages_id) -> languages(id)
Example with already stored data:
Main table "pages"
| id | active | alias | created_at | updated_at |
|----|--------|-------------|---------------------|---------------------|
| 1 | 1 | first-page | 2020-01-14 18:06:33 | 2020-01-14 18:06:33 |
| 2 | 1 | second-page | 2020-01-14 18:10:00 | 2020-01-14 18:10:00 |
| 3 | 0 | third-page | 2020-01-14 19:05:15 | 2020-01-14 19:05:15 |
Translate table "pages_languages"
| pages_id | languages_id | title | description | created_at | updated_at |
|----------|--------------|------------|----------------------|---------------------|---------------------|
| 1 | 1 | Page 1 | Description 1 | 2020-01-14 18:06:33 | 2020-01-14 18:06:33 |
| 1 | 2 | Страница 1 | Описание 1 | 2020-01-14 18:06:33 | 2020-01-14 18:06:33 |
| 2 | 1 | Page 2 | Description 2 | 2020-01-14 18:10:00 | 2020-01-14 18:10:00 |
| 3 | 1 | Page 3 | Description 3 | 2020-01-14 19:05:15 | 2020-01-14 19:05:15 |
| 3 | 2 | Страница 3 | Описание 3 | 2020-01-14 19:05:15 | 2020-01-14 19:05:15 |
Language table "languages"
| id | locale | short_name | name | default | created_at | updated_at |
|----|--------|------------|---------|---------|---------------------|---------------------|
| 1 | en-US | en | English | 1 | 2020-01-14 18:06:33 | 2020-01-14 18:06:33 |
| 2 | ru-RU | ru | Русский | 0 | 2020-01-14 18:10:00 | 2020-01-14 18:10:00 |
4.2 Model part
Notes:
-
Access to multilingual value from a model entry is by using a language postfix. Example:
- Set a new multilingual value for a model is by using a language postfix. Example:
4.2.1 Main simple model
Create a main model for base table and use MultilingualModelTrait
.
Example model for pages table:
4.2.2 Translate model
Create a model for translates table.
Example model for pages_languages table:
It is not necessary to create relation methods here, such as: page()
, language()
. It is additional.
4.3 Validation requests part
This request classes can be useful in controller's methods.
Here roles()
method makes the next result:
4.4 Controller part
Short page controller example just to create entry:
4.5 View template part
Short example for page.create
blade view template:
License
Copyright © 2020-2025 Andrey Girnik [email protected].
Licensed under the MIT license. See LICENSE.txt for details.