Initial commit: apps.prometeysev.ru
This commit is contained in:
commit
96ccabcd8b
6561 files changed
+1270349
No files matched your search
Vendored
+158
@@ -0,0 +1,158 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the Aura Project for PHP.
|
||||
*
|
||||
* @package Aura.Intl
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
*/
|
||||
namespace Aura\Intl;
|
||||
|
||||
/**
|
||||
*
|
||||
* Translator to translate the message
|
||||
*
|
||||
* @package Aura.Intl
|
||||
*
|
||||
*/
|
||||
class Translator implements TranslatorInterface
|
||||
{
|
||||
/**
|
||||
*
|
||||
* A fallback translator.
|
||||
*
|
||||
* @var TranslatorInterface
|
||||
*
|
||||
*/
|
||||
protected $fallback;
|
||||
|
||||
/**
|
||||
*
|
||||
* The formatter to use when translating messages.
|
||||
*
|
||||
* @var FormatterInterface
|
||||
*
|
||||
*/
|
||||
protected $formatter;
|
||||
|
||||
/**
|
||||
*
|
||||
* The locale being used for translations.
|
||||
*
|
||||
* @var string
|
||||
*
|
||||
*/
|
||||
protected $locale;
|
||||
|
||||
/**
|
||||
* The Package containing keys and translations.
|
||||
*
|
||||
* @var Package
|
||||
*
|
||||
*/
|
||||
protected $package;
|
||||
|
||||
/**
|
||||
*
|
||||
* Constructor
|
||||
*
|
||||
* @param string $locale The locale being used.
|
||||
*
|
||||
* @param Package $package The Package containing keys and translations.
|
||||
*
|
||||
* @param FormatterInterface $formatter A message formatter.
|
||||
*
|
||||
* @param TranslatorInterface $fallback A fallback translator.
|
||||
*
|
||||
*/
|
||||
public function __construct(
|
||||
$locale,
|
||||
Package $package,
|
||||
FormatterInterface $formatter,
|
||||
TranslatorInterface $fallback = null
|
||||
) {
|
||||
$this->locale = $locale;
|
||||
$this->package = $package;
|
||||
$this->formatter = $formatter;
|
||||
$this->fallback = $fallback;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Gets the message translation by its key.
|
||||
*
|
||||
* @param string $key The message key.
|
||||
*
|
||||
* @return mixed The message translation string, or false if not found.
|
||||
*
|
||||
*/
|
||||
protected function getMessage($key)
|
||||
{
|
||||
$message = $this->package->getMessage($key);
|
||||
if ($message) {
|
||||
return $message;
|
||||
}
|
||||
|
||||
if ($this->fallback) {
|
||||
// get the message from the fallback translator
|
||||
$message = $this->fallback->getMessage($key);
|
||||
if ($message) {
|
||||
// speed optimization: retain locally
|
||||
$this->package->addMessage($key, $message);
|
||||
// done!
|
||||
return $message;
|
||||
}
|
||||
}
|
||||
|
||||
// no local message, no fallback
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Translates the message indicated by they key, replacing token values
|
||||
* along the way.
|
||||
*
|
||||
* @param string $key The message key.
|
||||
*
|
||||
* @param array $tokens_values Token values to interpolate into the
|
||||
* message.
|
||||
*
|
||||
* @return string The translated message with tokens replaced.
|
||||
*
|
||||
*/
|
||||
public function translate($key, array $tokens_values = [])
|
||||
{
|
||||
// get the message string
|
||||
$message = $this->getMessage($key);
|
||||
|
||||
// do we have a message string?
|
||||
if (! $message) {
|
||||
// no, return the message key as-is
|
||||
$message = $key;
|
||||
}
|
||||
|
||||
// are there token replacement values?
|
||||
if (empty($tokens_values)) {
|
||||
// no, return the message string as-is
|
||||
return $message;
|
||||
}
|
||||
|
||||
// run message string through formatter to replace tokens with values
|
||||
return $this->formatter->format($this->locale, $message, $tokens_values);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* An object of type Package
|
||||
*
|
||||
* @return Package
|
||||
*
|
||||
*/
|
||||
public function getPackage()
|
||||
{
|
||||
return $this->package;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user