mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-16 19:40:44 +01:00
87 lines
1.9 KiB
PHP
87 lines
1.9 KiB
PHP
<?php namespace App\LaravelGettext\Composers;
|
|
|
|
use App\LaravelGettext\LaravelGettext;
|
|
|
|
/**
|
|
* Simple language selector generator.
|
|
* @author Nicolás Daniel Palumbo
|
|
*/
|
|
class LanguageSelector
|
|
{
|
|
/**
|
|
* Labels
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $labels = [];
|
|
|
|
/**
|
|
* @var LaravelGettext
|
|
*/
|
|
protected $gettext;
|
|
|
|
/**
|
|
* @param LaravelGettext $gettext
|
|
* @param array $labels
|
|
*/
|
|
public function __construct(LaravelGettext $gettext, array $labels = [])
|
|
{
|
|
$this->labels = $labels;
|
|
$this->gettext = $gettext;
|
|
}
|
|
|
|
/**
|
|
* @param LaravelGettext $gettext
|
|
* @param array $labels
|
|
* @return LanguageSelector
|
|
*/
|
|
public static function create(LaravelGettext $gettext, $labels = [])
|
|
{
|
|
return new LanguageSelector($gettext, $labels);
|
|
}
|
|
|
|
/**
|
|
* Renders the language selector
|
|
* @return string
|
|
*/
|
|
public function render()
|
|
{
|
|
/** @var string $currentLocale */
|
|
$currentLocale = $this->gettext->getLocale();
|
|
|
|
$html = '<ul class="language-selector">';
|
|
|
|
foreach ($this->gettext->getSupportedLocales() as $locale) {
|
|
$localeLabel = $locale;
|
|
|
|
// Check if label exists
|
|
if (array_key_exists($locale, $this->labels)) {
|
|
$localeLabel = $this->labels[$locale];
|
|
}
|
|
|
|
|
|
$link = '<a href="/lang/' . $locale . '" class="' . $locale . '">' . $localeLabel . '</a>';
|
|
|
|
if ($locale == $currentLocale) {
|
|
$link = '<strong class="active ' . $locale . '">' . $localeLabel . '</strong>';
|
|
}
|
|
|
|
$html .= '<li>' . $link . '</li>';
|
|
}
|
|
|
|
$html .= '</ul>';
|
|
|
|
return $html;
|
|
}
|
|
|
|
/**
|
|
* Convert to string
|
|
*
|
|
* @return string
|
|
*/
|
|
public function __toString()
|
|
{
|
|
return $this->render();
|
|
}
|
|
}
|