mirror of
https://gitlab.com/TheGamecraft/c-cms.git
synced 2026-04-23 19:39:10 -04:00
Include Vendor
This commit is contained in:
143
vendor/nesbot/carbon/src/Carbon/Translator.php
vendored
Normal file
143
vendor/nesbot/carbon/src/Carbon/Translator.php
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
|
||||
namespace Carbon;
|
||||
|
||||
use Symfony\Component\Translation;
|
||||
|
||||
class Translator extends Translation\Translator
|
||||
{
|
||||
/**
|
||||
* Singleton for Translator.
|
||||
*
|
||||
* @var static
|
||||
*/
|
||||
protected static $singleton;
|
||||
|
||||
/**
|
||||
* List of custom localized messages.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $messages = array();
|
||||
|
||||
/**
|
||||
* Return a singleton instance of Translator.
|
||||
*
|
||||
* @param string|null $locale optional initial locale ("en" - english by default)
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public static function get($locale = null)
|
||||
{
|
||||
if (static::$singleton === null) {
|
||||
static::$singleton = new static($locale ?: 'en');
|
||||
}
|
||||
|
||||
return static::$singleton;
|
||||
}
|
||||
|
||||
public function __construct($locale, Translation\Formatter\MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
|
||||
{
|
||||
$this->addLoader('array', new Translation\Loader\ArrayLoader());
|
||||
parent::__construct($locale, $formatter, $cacheDir, $debug);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset messages of a locale (all locale if no locale passed).
|
||||
* Remove custom messages and reload initial messages from matching
|
||||
* file in Lang directory.
|
||||
*
|
||||
* @param string|null $locale
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function resetMessages($locale = null)
|
||||
{
|
||||
if ($locale === null) {
|
||||
static::$messages = array();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (file_exists($filename = __DIR__.'/Lang/'.$locale.'.php')) {
|
||||
static::$messages[$locale] = require $filename;
|
||||
$this->addResource('array', static::$messages[$locale], $locale);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Init messages language from matching file in Lang directory.
|
||||
*
|
||||
* @param string $locale
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function loadMessagesFromFile($locale)
|
||||
{
|
||||
if (isset(static::$messages[$locale])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return $this->resetMessages($locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set messages of a locale and take file first if present.
|
||||
*
|
||||
* @param string $locale
|
||||
* @param array $messages
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setMessages($locale, $messages)
|
||||
{
|
||||
$this->loadMessagesFromFile($locale);
|
||||
$this->addResource('array', $messages, $locale);
|
||||
static::$messages[$locale] = array_merge(
|
||||
isset(static::$messages[$locale]) ? static::$messages[$locale] : array(),
|
||||
$messages
|
||||
);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get messages of a locale, if none given, return all the
|
||||
* languages.
|
||||
*
|
||||
* @param string|null $locale
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getMessages($locale = null)
|
||||
{
|
||||
return $locale === null ? static::$messages : static::$messages[$locale];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current translator locale and indicate if the source locale file exists
|
||||
*
|
||||
* @param string $locale locale ex. en
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function setLocale($locale)
|
||||
{
|
||||
$locale = preg_replace_callback('/[-_]([a-z]{2,})/', function ($matches) {
|
||||
// _2-letters is a region, _3+-letters is a variant
|
||||
return '_'.call_user_func(strlen($matches[1]) > 2 ? 'ucfirst' : 'strtoupper', $matches[1]);
|
||||
}, strtolower($locale));
|
||||
|
||||
if ($this->loadMessagesFromFile($locale)) {
|
||||
parent::setLocale($locale);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user