PHP library/api to provide Internationalisation and Localisation
We use the phpmyadmin/twig-i18n-extension
for the Twig extension.
composer require wdes/php-i18n-l10n
Have a look at example file example/simple.php
<?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([]);
<?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'
]
);
This package includes some scripts that can be usefull scripts/tools
Here is an example to use them : scripts/update-example.sh