1
0
mirror of https://github.com/flarum/core.git synced 2025-10-11 15:04:25 +02:00
Files
php-flarum/src/Locale/LocaleManager.php

110 lines
2.3 KiB
PHP

<?php
/*
* This file is part of Flarum.
*
* (c) Toby Zerner <toby.zerner@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Flarum\Locale;
class LocaleManager
{
/**
* @var Translator
*/
protected $translator;
protected $locales = [];
protected $js = [];
protected $css = [];
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
public function getLocale(): string
{
return $this->translator->getLocale();
}
public function setLocale(string $locale)
{
$this->translator->setLocale($locale);
}
public function addLocale(string $locale, string $name)
{
$this->locales[$locale] = $name;
}
public function getLocales(): array
{
return $this->locales;
}
public function hasLocale(string $locale): bool
{
return isset($this->locales[$locale]);
}
public function addTranslations(string $locale, $file, string $module = null)
{
$prefix = $module ? $module.'::' : '';
$this->translator->addResource('prefixed_yaml', compact('file', 'prefix'), $locale);
}
public function addJsFile(string $locale, string $js)
{
$this->js[$locale][] = $js;
}
public function getJsFiles(string $locale): array
{
$files = array_get($this->js, $locale, []);
$parts = explode('-', $locale);
if (count($parts) > 1) {
$files = array_merge(array_get($this->js, $parts[0], []), $files);
}
return $files;
}
public function addCssFile(string $locale, string $css)
{
$this->css[$locale][] = $css;
}
public function getCssFiles(string $locale): array
{
$files = array_get($this->css, $locale, []);
$parts = explode('-', $locale);
if (count($parts) > 1) {
$files = array_merge(array_get($this->css, $parts[0], []), $files);
}
return $files;
}
public function getTranslator(): Translator
{
return $this->translator;
}
public function setTranslator(Translator $translator)
{
$this->translator = $translator;
}
}