This component provides a service to handle string translations. The service is called translator and is available in controllers as $this->translator. In template views you can use it like echo $this->translate('...') or its shortcut $this->show('...').
The configuration is typically locate at the framework's configuration (usually at /config/app.php) file. It's under translator section. It has only two options.
default - species default language
when - takes an array of the following parameters
uri - defines an array of URI fragments when default language must be overriden.
language - defines a language to be overridden.
So why and when would you tweak when section? Consider a web-site that has support for several languages. But you want an administration panel's language to be only a one language of your choice. In that case it would look as following:
'default' => 'en',
'when' => array(
'uri' => array('/admin'),
'language' => 'de'
)
In order to load translations, in your Module.php you have to implement a new method called getTranslations() that holds a language argument, defined in configuration file. It would look like as following:
class Module
{
public function getTranslations($language)
{
return require(__DIR__.'/Translations/'.$language.'/messages.php');
}
}
So for example, when you defined a default language as de, it would try to load an array from __DIR__.'/Translations/de/messages.php. As you might already guessed, messages.php itself should be a standalone file that returns an array of translations.
The service has the following methods
\Krystal\I18n\Translator::extend(array, [array] ..)
Extends a dictionary at runtime.
\Krystal\I18n\Translator::translate($string, array|string $placeholders)
Translates a string, optionally substituting placeholders. A placeholder must be defined as %s.
\Krystal\I18n\Translator::translateArray($array)
Just like as translate() method translates a string in the target $array and returns a translated array.