tleckie / translate
Fast, powerful, scalable and customizable php translator library
Fund package maintenance!
teodoroleckie
www.paypal.com/donate?business=ZHYA2MTGA4884¤cy_code=USD
Requires
- php: ^8
Requires (Dev)
- friendsofphp/php-cs-fixer: v3.0.0-beta.2
- infection/infection: ^0.21.5
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
README
Fast, powerful, scalable and customizable php translator library
You can install the package via composer:
composer require tleckie/translate
Usage
Create an instance of the Translator class to which you will assign a loader. The loader must have the directory in which the translation files are stored, it must also indicate the extension of the translation files.
<?php use Tleckie\Translate\Loader\ArrayLoader; use Tleckie\Translate\Translator; $trans = new Translator( new ArrayLoader('./translations/','php'), 'es_ES' ); $trans->trans('hello'); $trans->trans('other.value');
Your translations file should look like this:
<?php return [ 'hello' => "Hola! Bienvenido a mi sitio web!", 'other.value' => "Otro valor", . . . ];
The name of the file that stores the translation should look like this:
/translations/es_ES.php
The trans() method takes multiple arguments. The first is the key of the translation array, it is the value that will be searched for in its corresponding file.
The second argument (optional) is an array of values to be replaced in the translated value. If you want to add values to your translated text you must indicate it with "%s". Note that the number of arguments must match the number of "%s".
<?php use Tleckie\Translate\Loader\ArrayLoader; use Tleckie\Translate\Translator; $trans = new Translator( new ArrayLoader('./translations/','php'), 'es_ES' ); $trans->trans('hello',['John']);
Your translations file should look like this:
<?php return [ 'hello' => "Hola %s! Bienvenido a mi sitio web!" ];
Even if you configure your translator to load a specific language, you can also change the language at any time if you need.
<?php use Tleckie\Translate\Loader\ArrayLoader; use Tleckie\Translate\Translator; $trans = new Translator( new ArrayLoader('./translations/','php'), 'es_ES' ); $trans->trans('hello',['John'],null, 'en_GB');
You can create your translation files by specifying the language and country defined by the provided locale. You can also decide whether to use the same language for different countries. Regional configuration example: "en_US" and "en_GB" In this case, you just need to create a file that has the following name:
/translations/en.php
In that case the following calls will have the same result and will load the translations from the same file.
<?php use Tleckie\Translate\Loader\ArrayLoader; use Tleckie\Translate\Translator; $trans = new Translator( new ArrayLoader('./translations/','php'), 'es_ES' ); $trans->trans('hello',['John'],null, 'en_GB'); $trans->trans('hello',['John'],null, 'en_US');
You can also implement your own loader to connect to your preferred data source. You simply have to implement the LoaderInterface interface.
That's all! I hope this helps you ;)