wdes / php-i18n-l10n
PHP library/api to provide Internationalisation and Localisation
v4.0.0
2021-03-31 13:51 UTC
Requires
- php: ^7.2.9 || ^8.0
- phpmyadmin/twig-i18n-extension: ^4.0
- twig/twig: ^3
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^7 || ^8 || ^9
- wdes/coding-standard: ^3
README
PHP library/api to provide Internationalisation and Localisation
License
About
We use the phpmyadmin/twig-i18n-extension
for the Twig extension.
How to use
composer require wdes/php-i18n-l10n
Have a look at example file example/simple.php
Example without a MO file
<?php declare(strict_types = 1); // Can be removed :) require_once __DIR__ . '/../vendor/autoload.php'; use Wdes\phpI18nL10n\plugins\MoReader; use Wdes\phpI18nL10n\Launcher; use Wdes\phpI18nL10n\Twig\Extension\I18n as ExtensionI18n; use Twig\Environment as TwigEnvironment; use Twig\Loader\ArrayLoader as TwigLoader; $moReader = new MoReader(); $moReader->setTranslations( [ 'Homepage' => 'Page d\'accueil', ] ); // Load the translation plugin Launcher::setPlugin($moReader); $twig = new TwigEnvironment(new TwigLoader()); $twig->addExtension(new ExtensionI18n()); // You can use a file instead, see the example using a mo file $templateContents = <<<HTML <html> <title>{% trans %}Homepage{% endtrans %}</title> <body> {% trans %}Homepage{% endtrans %} </body> </html> HTML; echo $twig->createTemplate($templateContents)->render([]);
Example with a MO file
<?php declare(strict_types = 1); // Can be removed :) require_once __DIR__ . '/../vendor/autoload.php'; use Wdes\phpI18nL10n\plugins\MoReader; use Wdes\phpI18nL10n\Launcher; use Wdes\phpI18nL10n\Twig\Extension\I18n as ExtensionI18n; use Twig\Environment as TwigEnvironment; use Twig\Loader\FilesystemLoader as TwigLoaderFilesystem; $dataDir = __DIR__ . '/locale/'; $moReader = new MoReader(); $moReader->readFile($dataDir . 'fr.mo'); // Load the file you want (a specific language for example) // Load the translation plugin Launcher::setPlugin($moReader); $loader = new TwigLoaderFilesystem([ __DIR__ . '/templates/' ]); // Load all templates from the dir $twig = new TwigEnvironment($loader); $twig->addExtension(new ExtensionI18n()); echo $twig->render( 'homepage.twig', // Can be found in the templates directory [ 'keyForTwig' => 'theValue', // Just an example line ;) 'say' => 'Hello world' ] );
Scripts
This package includes some scripts that can be usefull scripts/tools
Here is an example to use them : scripts/update-example.sh