All Projects → spatie → Laravel Translation Loader

spatie / Laravel Translation Loader

Licence: mit
Store your translations in the database or other sources

Programming Languages

language
365 projects

Projects that are alternatives of or similar to Laravel Translation Loader

Linguist
Easy multilingual urls and redirection support for the Laravel framework
Stars: ✭ 188 (-57.85%)
Mutual labels:  translation, i18n, laravel
Deeply
PHP client for the DeepL.com translation API (unofficial)
Stars: ✭ 152 (-65.92%)
Mutual labels:  translation, i18n, laravel
I18next Scanner
Scan your code, extract translation keys/values, and merge them into i18n resource files.
Stars: ✭ 259 (-41.93%)
Mutual labels:  translation, i18n
Tower
i18n & L10n library for Clojure/Script
Stars: ✭ 264 (-40.81%)
Mutual labels:  translation, i18n
Gotext
Go (Golang) GNU gettext utilities package
Stars: ✭ 292 (-34.53%)
Mutual labels:  translation, i18n
potools
Tools for working with translations in R
Stars: ✭ 42 (-90.58%)
Mutual labels:  i18n, translation
labels
Bolt Labels extension - Translatable labels for Bolt
Stars: ✭ 18 (-95.96%)
Mutual labels:  i18n, translation
Js Lingui
🌍📖 A readable, automated, and optimized (5 kb) internationalization for JavaScript
Stars: ✭ 3,249 (+628.48%)
Mutual labels:  translation, i18n
rosetta
A blazing fast internationalization (i18n) library for Crystal with compile-time key lookup.
Stars: ✭ 23 (-94.84%)
Mutual labels:  i18n, translation
Laravel Pt Br Localization
Tradução do Laravel para português brasileiro (pt_BR locale)
Stars: ✭ 373 (-16.37%)
Mutual labels:  translation, laravel
I18n Manager
Translation management app
Stars: ✭ 373 (-16.37%)
Mutual labels:  translation, i18n
React Localize Redux
Dead simple localization for your React components
Stars: ✭ 384 (-13.9%)
Mutual labels:  translation, i18n
i18n-tag-schema
Generates a json schema for all i18n tagged template literals in your project
Stars: ✭ 15 (-96.64%)
Mutual labels:  i18n, translation
plate
Internationalization library for Python
Stars: ✭ 31 (-93.05%)
Mutual labels:  i18n, translation
Mojito
An automation platform that enables continuous localization.
Stars: ✭ 256 (-42.6%)
Mutual labels:  translation, i18n
i18n
Minimalist gettext style i18n for JavaScript
Stars: ✭ 14 (-96.86%)
Mutual labels:  i18n, translation
Eo Locale
🌏Internationalize js apps 👔Elegant lightweight library based on Internationalization API
Stars: ✭ 290 (-34.98%)
Mutual labels:  translation, i18n
Easy localization
Easy and Fast internationalizing your Flutter Apps
Stars: ✭ 407 (-8.74%)
Mutual labels:  translation, i18n
django-languages-plus
Provides models and fixtures for working with both common languages and 'culture codes' or locale codes, like pt-BR.
Stars: ✭ 21 (-95.29%)
Mutual labels:  i18n, translation
awrora-starter
Landing page template built with one of most popular javascript library Vue.JS, Vuetify (Material Design) and Nuxt.JS with SSR.
Stars: ✭ 38 (-91.48%)
Mutual labels:  i18n, translation

Store your language lines in the database

Latest Version on Packagist Software License GitHub Workflow Status Total Downloads

In a vanilla Laravel or Lumen installation you can use language files to localize your app. This package will enable the translations to be stored in the database. You can still use all the features of the trans function you know and love.

trans('messages.welcome', ['name' => 'dayle']);

You can even mix using language files and the database. If a translation is present in both a file and the database, the database version will be returned.

Want to use a different source for your translations? No problem! The package is easily extendable.

Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

You can install the package via composer:

composer require spatie/laravel-translation-loader

In config/app.php (Laravel) or bootstrap/app.php (Lumen) you should replace Laravel's translation service provider

Illuminate\Translation\TranslationServiceProvider::class,

by the one included in this package:

Spatie\TranslationLoader\TranslationServiceProvider::class,

You must publish and run the migrations to create the language_lines table:

php artisan vendor:publish --provider="Spatie\TranslationLoader\TranslationServiceProvider" --tag="migrations"
php artisan migrate

Optionally you could publish the config file using this command.

php artisan vendor:publish --provider="Spatie\TranslationLoader\TranslationServiceProvider" --tag="config"

This is the contents of the published config file:

return [

    /*
     * Language lines will be fetched by these loaders. You can put any class here that implements
     * the Spatie\TranslationLoader\TranslationLoaders\TranslationLoader-interface.
     */
    'translation_loaders' => [
        Spatie\TranslationLoader\TranslationLoaders\Db::class,
    ],

    /*
     * This is the model used by the Db Translation loader. You can put any model here
     * that extends Spatie\TranslationLoader\LanguageLine.
     */
    'model' => Spatie\TranslationLoader\LanguageLine::class,

    /*
     * This is the translation manager which overrides the default Laravel `translation.loader`
     */
    'translation_manager' => Spatie\TranslationLoader\TranslationLoaderManager::class,

];

Note: publishing assets doesn't work out of the box in Lumen. Instead you have to copy the files from the repo.

Usage

You can create a translation in the database by creating and saving an instance of the Spatie\TranslationLoader\LanguageLine-model:

use Spatie\TranslationLoader\LanguageLine;

LanguageLine::create([
   'group' => 'validation',
   'key' => 'required',
   'text' => ['en' => 'This is a required field', 'nl' => 'Dit is een verplicht veld'],
]);

You can fetch the translation with Laravel's default trans function:

trans('validation.required'); // returns 'This is a required field'

app()->setLocale('nl');

trans('validation.required'); // returns 'Dit is een verplicht veld'

You can still keep using the default language files as well. If a requested translation is present in both the database and the language files, the database version will be returned.

If you need to store/override json translation lines, just create a normal LanguageLine with group => '*'.

Creating your own translation providers

This package ships with a translation provider than can fetch translations from the database. If you're storing your translations in a yaml-file, a csv-file, or ... you can easily extend this package by creating your own translation provider.

A translation provider can be any class that implements the Spatie\TranslationLoader\TranslationLoaders\TranslationLoader-interface. It contains only one method:

namespace Spatie\TranslationLoader\TranslationLoaders;

interface TranslationLoader
{
    /*
     * Returns all translations for the given locale and group.
     */
    public function loadTranslations(string $locale, string $group): array;
}

Translation providers can be registered in the translation_loaders key of the config file.

Changelog

Please see CHANGELOG for more information what has changed recently.

Testing

composer test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].