clusteramaryllis / gettext
Adds localization support to laravel applications with PoEdit and Gettext
Requires
- php: >=5.5.9
- illuminate/config: 5.2.*
- illuminate/view: 5.2.*
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0
Suggests
- ext-gettext: *
README
Installation
Laravel 5.2 Installation
Add the composer repository to your composer.json file:
"require": { "clusteramaryllis/gettext": "1.3.x" }
- For Laravel 5.1, checkout 1.2 branch
- For Laravel 4.2, checkout 0.3 branch
And run composer update
. Once finished, register via service provider in config/app.php
in the providers
array:
'providers' => [ // ... Clusteramaryllis\Gettext\GettextServiceProvider::class, ]
You can also provide static syntax via facade in the aliases
array:
'aliases' => [ // ... 'Gettext' => Clusteramaryllis\Gettext\Facades\Gettext::class, ]
Publish the configuration file (optional) (will create on config/gettext.php
) :
php artisan vendor:publish
Command
Available commands
gettext:create
=> Generate new .po file
gettext:update
=> Update existing .po file
Available options
Check with php artisan gettext:create --help
or php artisan gettext:update --help
Example
php artisan gettext:create --sources="app/Http/Controllers, resources/views" --destination="resources/locale" --locale="en_US"
This will generate .po files in resources/locale/en_US/LC_MESSAGES/messages.po
& will scan any string that utilize php-gettext function on app/Http/Controllers
& resources/views
Once done, you can easily translate your application using tools such as PoEdit.
How To
Simple usage
- Prepare
view
with strings wrapped withGettext
method or helper
<!-- resources\views\welcome.blade.php -->
{!! __('Welcome to main page') !!}
- Add your language preferences via
config/gettext.php
on languages array
languages => [ // ..., 'sv' => [ 'locale' => 'sv_SE', 'encoding' => 'utf-8', 'plural_forms' => "nplurals=2; plural=(n != 1);", ] ]
- Run
php artisan gettext:create
. This will generate .po file in
resources\locale\sv_SE\LC_MESSAGES\messages.po
& ready to scan translated string in app\Http\Controllers
& resources\views
(Default option).
-
Open the .po file with PoEdit or any similar editors. In PoEdit you need to click update to populate the table with the scanned strings. After that, you can start begin translating.
-
Simple routes test
Route::get('/', function() { Gettext::bindTextDomain('messages', base_path('resources/locale')); Gettext::textDomain('messages'); Gettext::setLocale(LC_ALL, 'sv_SE.utf-8'); return view('welcome'); });
Available methods
More detailed method & their parameters can be seen here.
Acknowledgements
This package is inspired by laravel-gettext by Nicolás Daniel Palumbo for .po files creation & utilize php-gettext package by Danilo Segan.