A simple translation solution.
- php: ~7.0
- pimple/pimple: ~3.0
- twig/twig: ^1.25.0
Through Composer as chubbyphp/chubbyphp-translation.
composer require chubbyphp/chubbyphp-translation "~1.1"
<?php
use Chubbyphp\Translation\LocaleTranslationProvider;
use Chubbyphp\Translation\Translator;
$translator = new Translator([
new LocaleTranslationProvider('de', [
'some.existing.key' => 'erfolgreiche Uebersetzung',
'another.existing.key' => '%d erfolgreiche Uebersetzungen',
'yetanother.existing.key' => '{{key}} erfolgreiche Uebersetzungen'
]),
new LocaleTranslationProvider('en', [
'some.existing.key' => 'successful translation',
'another.existing.key' => '%d successful translations'
'yetanother.existing.key' => '{{key}} successful translations'
])
]);
echo $translator->translate('de', 'some.existing.key'); // erfolgreiche Uebersetzung
echo $translator->translate('en', 'some.existing.key'); // successful translation
echo $translator->translate('fr', 'some.existing.key'); // some.existing.key
echo $translator->translate('de', 'another.existing.key', [5]); // 5 erfolgreiche Uebersetzungen
echo $translator->translate('en', 'another.existing.key', [5]); // 5 successful translations
echo $translator->translate('fr', 'another.existing.key', [5]); // some.existing.key
echo $translator->translate('de', 'yetanother.existing.key', ['key' => 5]); // 5 erfolgreiche Uebersetzungen
echo $translator->translate('en', 'yetanother.existing.key', ['key' => 5]); // 5 successful translations
echo $translator->translate('fr', 'yetanother.existing.key', ['key' => 5]); // some.existing.key
<?php
use Chubbyphp\Translation\Translator;
use Chubbyphp\Translation\TranslationProvider;
use Pimple\Container;
$container->register(new TranslationProvider);
$container->extend('translator.providers', function (array $providers) use ($container) {
$providers[] = new LocaleTranslationProvider('de', [
'some.existing.key' => 'erfolgreiche Uebersetzung',
'another.existing.key' => '%d erfolgreiche Uebersetzungen'
]);
$providers[] = new LocaleTranslationProvider('en', [
'some.existing.key' => 'successful translation',
'another.existing.key' => '%d successful translations'
]);
return $providers;
});
/** @var Translation $translator */
$translator = $container['translator'];
<?php
use Chubbyphp\Translation\LocaleTranslationProvider;
use Chubbyphp\Translation\TranslationTwigExtension;
use Chubbyphp\Translation\Translator;
$twig->addExtension(new TranslationTwigExtension(new Translator([])));
{{ 'some.existing.key'|translate('de') }}
{{ 'another.existing.key'|translate('de', [5]) }}
{{ 'yetanother.existing.key'|translate('de', ['key' => 5]) }}
Dominik Zogg 2016