PHP code example of yiisoft / i18n-translator
1. Go to this page and download the library: Download yiisoft/i18n-translator library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
yiisoft / i18n-translator example snippets
public function actionProcess(\Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher)
{
// ...
}
/** @var \Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher */
$locale = 'ru';
$fallbackLocale = 'en';
$translator = new Yiisoft\Translator\Translator(
$locale,
$fallbackLocale,
$eventDispatcher
);
// Default category is used when no category is specified explicitly.
$defaultCategoryName = 'app';
$pathToTranslations = './messages/';
// We use MessageSource that is based on PHP files.
$messageSource = new \Yiisoft\Translator\Message\Php\MessageSource($pathToTranslations);
// We use Intl message formatter.
$formatter = new \Yiisoft\Translator\IntlMessageFormatter();
// Now get an instance of CategorySource.
$category = new Yiisoft\Translator\CategorySource(
$defaultCategoryName,
$messageSource,
$formatter
);
// And add it.
$translator->addCategorySources($category);
declare(strict_types=1);
use Psr\EventDispatcher\EventDispatcherInterface;
use Yiisoft\Definitions\Reference;
use Yiisoft\Translator\TranslatorInterface;
use Yiisoft\Translator\Translator;
use Yiisoft\Translator\CategorySource;
/** @var array $params */
return [
// Configure application CategorySource
ApplicationCategorySource::class => [ // <- Uncommented
'class' => CategorySource::class,
'__construct()' => [
'name' => $params['yiisoft/translator']['defaultCategory'],
],
],
TranslatorInterface::class => [
'class' => Translator::class,
'__construct()' => [
$params['yiisoft/translator']['locale'],
$params['yiisoft/translator']['fallbackLocale'],
Reference::to(EventDispatcherInterface::class),
],
'addCategorySources()' => [
$params['yiisoft/translator']['categorySources']
],
],
];
declare(strict_types=1);
use Yiisoft\Definitions\Reference;
return [
'yiisoft/translator' => [
'locale' => 'en-US',
'fallbackLocale' => null,
'defaultCategory' => 'app',
'categorySources' => [
// You can add categories to your application and your modules using `Reference::to` below
Reference::to(ApplicationCategorySource::class), // <- Uncommented
// Reference::to(MyModuleCategorySource::class),
],
],
];
/** @var \Yiisoft\Translator\TranslatorInterface $translator */
$categoryName = 'module';
$pathToModuleTranslations = './module/messages/';
$moduleMessageSource = new \Yiisoft\Translator\Message\Php\MessageSource($pathToModuleTranslations);
// Simple message formatter.
$formatter = new \Yiisoft\Translator\Formatter\Simple\SimpleMessageFormatter();
$additionalCategory = new Yiisoft\Translator\CategorySource(
$categoryName,
$moduleMessageSource,
$formatter
);
$translator->addCategorySources($additionalCategory);
/**
* @var \Yiisoft\Translator\TranslatorInterface $translator
* @var \Yiisoft\Translator\CategorySource $additionalCategory1
* @var \Yiisoft\Translator\CategorySource $additionalCategory2
*/
$translator->addCategorySources($additionalCategory1, $additionalCategory2);
/** @var \Yiisoft\Translator\TranslatorInterface $translator */
/** @var \Yiisoft\Translator\Message\Php\MessageSource $yourCustomMessageSource */
/** @var \Yiisoft\Translator\Formatter\Simple\SimpleMessageFormatter $formatter */
// CategorySource for module with "validator" category name.
$categoryNameAsModule = 'validator'; //
$moduleCategorySource = new Yiisoft\Translator\CategorySource(
$categoryNameAsModule,
$yourCustomMessageSource,
$formatter
);
// Needs be added after module category source is added.
$translator->addCategorySources($moduleCategorySource);
// single translation
$messageIdentificator = 'submit';
echo $translator->translate($messageIdentificator);
// output: `Submit message`
// translation with plural
$messageIdentificator = 'multiHumans';
echo $translator->translate($messageIdentificator, ['n' => 3]);
// output: `3 humans`
$messageIdentificator = 'submit';
echo $translator->translate($messageIdentificator, [], 'moduleId', 'ru');
// output: `Отправить сообщение`
$newDefaultLocale = 'de-DE';
$translator->setLocale($newDefaultLocale);
echo $translator->getLocale();
$newDefaultLocale = 'de-DE';
echo $translator->withLocale($newDefaultLocale);
$newDefaultCategoryId = 'module2';
echo $translator->withDefaultCategory($newDefaultCategoryId);