wdes/php-i18n-l10n

PHP library/api to provide Internationalisation and Localisation

Maintainers

👁 wdes

Package info

github.com/wdes/php-I18n-L10n

Homepage

Issues

pkg:composer/wdes/php-i18n-l10n

Statistics

Installs: 99 606

Dependents: 1

Suggesters: 0

Stars: 4

v4.2.0 2025-11-18 11:35 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MPL-2.0 6c35a4adeadef3fe689890a2a2f6408263401878

  • William Desportes <williamdes.woop@wdes.fr>

i18ntwiglibrarygettextl10nmocomposer-packagepot-generator

This package is auto-updated.

Last update: 2026-06-18 13:11:50 UTC


README

PHP library/api to provide Internationalisation and Localisation

👁 Codacy Badge
👁 Lint and analyse files
👁 Run tests
👁 codecov
👁 FOSSA Status
👁 Packagist
👁 Latest Stable Version

License

👁 FOSSA Status

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