PHP code example of tobento / service-translation
1. Go to this page and download the library: Download tobento/service-translation 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' );
tobento / service-translation example snippets
use Tobento \Service \Translation \Translator ;
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \Modifier \ParameterReplacer ;
use Tobento \Service \Translation \Modifier \Pluralization ;
use Tobento \Service \Translation \MissingTranslationHandler ;
$translator = new Translator(
new Resources(
new Resource('*' , 'de' , [
'Hello World' => 'Hallo Welt' ,
]),
),
new Modifiers(
new Pluralization(),
new ParameterReplacer(),
),
new MissingTranslationHandler(),
'en' ,
);
var_dump($translator->trans('Hello World' ));
var_dump($translator->trans('Hello World' , [], 'de' ));
use Tobento \Service \Translation \Translator ;
use Tobento \Service \Translation \TranslatorInterface ;
use Tobento \Service \Translation \LocaleAware ;
use Tobento \Service \Translation \ResourcesAware ;
use Tobento \Service \Translation \ModifiersAware ;
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \Modifier \ParameterReplacer ;
use Tobento \Service \Translation \MissingTranslationHandler ;
$translator = new Translator(
resources: new Resources(
new Resource('*' , 'de' , [
'Hello World' => 'Hallo Welt' ,
]),
),
modifiers: new Modifiers(
new ParameterReplacer(),
),
missingTranslationHandler: new MissingTranslationHandler(),
locale: 'en' ,
localeFallbacks: ['de' => 'en' ],
localeMapping: ['de' => 'de-CH' ],
);
var_dump($translator instanceof TranslatorInterface);
var_dump($translator instanceof LocaleAware);
var_dump($translator instanceof ResourcesAware);
var_dump($translator instanceof ModifiersAware);
use Tobento \Service \Translation \TranslatorInterface ;
$translated = $translator->trans(
message: 'Hi :name' ,
parameters: [':name' => 'John' ],
locale: 'de'
);
use Tobento \Service \Translation \LocaleAware ;
$translator->setLocale('de' );
var_dump($translator->getLocale());
$translator->setLocaleFallbacks(['de' => 'en' ]);
var_dump($translator->getLocaleFallbacks());
$translator->setLocaleMapping(['de' => 'de-CH' ]);
var_dump($translator->getLocaleMapping());
use Tobento \Service \Translation \ResourcesAware ;
use Tobento \Service \Translation \ResourcesInterface ;
var_dump($translator->resources() instanceof ResourcesInterface);
$translations = $translator->getResource(
name: '*' ,
locale: 'de'
);
var_dump($translations);
$translator = $translator->withResources(
resources: $resources
);
use Tobento \Service \Translation \ModifiersAware ;
use Tobento \Service \Translation \ModifiersInterface ;
var_dump($translator->modifiers() instanceof ModifiersInterface);
$translator = $translator->withModifiers(
modifiers: $modifiers
);
use Tobento \Service \Translation \Translator ;
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \Modifier \Pluralization ;
use Tobento \Service \Translation \Modifier \ParameterReplacer ;
use Tobento \Service \Translation \MissingTranslationHandler ;
$translator = new Translator(
resources: new Resources(
new Resource('*' , 'de' , [
'Hi :name' => 'Hi :name' ,
'It takes :minutes minute|It takes :minutes minutes' => 'Es dauert :minutes Minute|Es dauert :minutes Minuten'
]),
),
modifiers: new Modifiers(
new Pluralization(),
new ParameterReplacer(),
),
missingTranslationHandler: new MissingTranslationHandler(),
locale: 'en' ,
localeFallbacks: ['de' => 'en' ],
);
$translated = $translator->trans(
message: 'Hi :name' ,
parameters: [':name' => 'John' ],
locale: 'de'
);
var_dump($translated);
$translated = $translator->trans(
message: 'It takes :minutes minute|It takes :minutes minutes' ,
parameters: [':minutes' => 5 , 'count' => 5 ],
locale: 'de'
);
var_dump($translated);
use Tobento \Service \Translation \Translator ;
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \MissingTranslationHandler ;
$translator = new Translator(
resources: new Resources(
new Resource('shop' , 'de' , [
'noProducts' => 'Keine Produkte' ,
'No items in your shopping bag.' => 'Keine Artikel sind in deinem Warenkorb.' ,
]),
),
modifiers: new Modifiers(),
missingTranslationHandler: new MissingTranslationHandler(),
locale: 'en' ,
localeFallbacks: ['de' => 'en' ],
);
$translated = $translator->trans(
message: 'shop.noProducts' ,
locale: 'de'
);
var_dump($translated);
$translated = $translator->trans(
message: 'No items in your shopping bag.' ,
parameters: ['src' => 'shop' ],
locale: 'de'
);
var_dump($translated);
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \ResourcesInterface ;
use Tobento \Service \Translation \Resource ;
$resources = new Resources(
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
group: 'front' ,
priority: 10 ,
),
);
var_dump($resources instanceof ResourcesInterface);
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
$resources = new Resources();
$resources->add(new Resource('*' , 'de' , [
'Hello World' => 'Hallo Welt' ,
]));
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
$resources = new Resources();
$resources->add(new Resources(
new Resource('*' , 'de' , [
'Hello World' => 'Hallo Welt' ,
]),
));
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
use Tobento \Service \Translation \ResourceInterface ;
$resources = new Resources(
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
group: 'front' ,
),
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
group: 'back' ,
),
);
$resources = $resources->filter(
fn(ResourceInterface $r): bool => $r->group() === 'front'
);
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
$resources = new Resources(
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
),
new Resource(
name: '*' ,
locale: 'de' ,
translations: ['Hello World' => 'Hallo Welt' ],
),
);
$resources = $resources->locale('en' );
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
$resources = new Resources(
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
),
new Resource(
name: '*' ,
locale: 'de' ,
translations: ['Hello World' => 'Hallo Welt' ],
),
);
$resources = $resources->locales(['en' , 'de' ]);
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
$resources = new Resources(
new Resource(
name: 'shop' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
),
new Resource(
name: 'shop' ,
locale: 'de' ,
translations: ['Hello World' => 'Hallo Welt' ],
),
);
$resources = $resources->name('shop' );
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
$resources = new Resources(
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
priority: 10 ,
),
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
priority: 15 ,
),
);
$resources = $resources->sort();
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
use Tobento \Service \Translation \ResourceInterface ;
$resources = new Resources(
new Resource(
name: 'users' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
priority: 10 ,
),
new Resource(
name: 'shop' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
priority: 15 ,
),
);
$resources = $resources->sort(
fn(ResourceInterface $a, ResourceInterface $b): int => $a->name() <=> $b->name()
);
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
use Tobento \Service \Translation \ResourceInterface ;
$resources = new Resources(
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
),
);
foreach ($resources->all() as $resource) {
var_dump($resource instanceof ResourceInterface);
var_dump($resource->name());
var_dump($resource->locale());
var_dump($resource->group());
var_dump($resource->priority());
var_dump($resource->translations());
}
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
$resources = new Resources(
new Resource(
name: '*' ,
locale: 'en' ,
translations: ['Hello World' => 'Hallo Welt' ],
priority: 10 ,
),
);
$translations = $resources->locale('en' )->translations();
foreach ($resources->locale('en' )->all() as $resource) {
var_dump($resource instanceof ResourceInterface);
}
use Tobento \Service \Translation \FilesResources ;
use Tobento \Service \Dir \Dirs ;
use Tobento \Service \Translation \ResourcesInterface ;
$resources = new FilesResources(
(new Dirs())->dir(dir: 'private/trans/' , group: 'front' , priority: 10 )
);
var_dump($resources instanceof ResourcesInterface);
return [
'Using Real Message' => 'Using Real Message' ,
'usingKeywordMessage' => 'Using Keyword Message' ,
];
use Tobento \Service \Translation \FilesResources ;
use Tobento \Service \Dir \Dirs ;
use Tobento \Service \Translation \ResourceFactory ;
use Tobento \Service \Translation \ResourceInterface ;
use Tobento \Service \Filesystem \File ;
class CustomResourceFactory extends ResourceFactory
{
public function createResourceFromFile (
string|File $file,
string $locale,
string $group = 'default' ,
int $priority = 0 ,
) : ResourceInterface {
return parent ::createResourceFromFile($file, $locale, $group, $priority);
}
}
$resources = new FilesResources(
(new Dirs())->dir(dir: 'private/trans/' , group: 'front' , priority: 10 ),
new CustomResourceFactory()
);
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \ModifiersInterface ;
use Tobento \Service \Translation \Modifier \ParameterReplacer ;
$modifiers = new Modifiers(
new ParameterReplacer(),
);
var_dump($modifiers instanceof ModifiersInterface);
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \Modifier \ParameterReplacer ;
$modifiers = new Modifiers();
$modifiers->add(new ParameterReplacer());
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \Modifier \ParameterReplacer ;
use Tobento \Service \Translation \ModifierInterface ;
$modifiers = new Modifiers(new ParameterReplacer());
$allModifiers = $modifiers->all();
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \Modifier \ParameterReplacer ;
$modifiers = new Modifiers(
new ParameterReplacer(),
);
[$message, $parameters] = $modifiers->modify(
message: 'Hi :name' ,
parameters: [':name' => 'John' ],
);
var_dump($message);
use Tobento \Service \Translation \Modifier \Pluralization ;
$modifier = new Pluralization(key: 'count' );
[$message, $parameters] = $modifier->modify(
message: 'There is one apple|There are many apples' ,
parameters: ['count' => 5 ],
);
var_dump($message);
[$message, $parameters] = $modifier->modify(
message: 'There is one apple|There are many apples' ,
parameters: ['count' => 1 ],
);
var_dump($message);
use Tobento \Service \Translation \Modifier \ParameterReplacer ;
$modifier = new ParameterReplacer();
[$message, $parameters] = $modifier->modify(
message: 'Hi :name' ,
parameters: [':name' => 'John' ],
);
var_dump($message);
use Tobento \Service \Translation \Translator ;
use Tobento \Service \Translation \Resources ;
use Tobento \Service \Translation \Resource ;
use Tobento \Service \Translation \Modifiers ;
use Tobento \Service \Translation \MissingTranslationHandler ;
use Psr \Log \LoggerInterface ;
use Monolog \Logger ;
use Monolog \Handler \StreamHandler ;
$logger = new Logger('name' );
$logger->pushHandler(new StreamHandler('path/to/your.log' , Logger::WARNING));
$translator = new Translator(
new Resources(
new Resource('*' , 'de' , [
'Hello World' => 'Hallo Welt' ,
]),
),
new Modifiers(),
new MissingTranslationHandler($logger),
);
var_dump($translator->trans('Hello World' ));
private /
trans/
en/
en.php
en.json
en-shop.json
shop.json
routes.shop.json
routes.blog.json
de-CH/
de-CH.json
de-CH-shop.json
shop.json
routes.shop.json