<?php
/**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
namespace Friendica\Core;
-use Friendica\Core\Config\IConfig;
-use Friendica\Core\Session\ISession;
+use Friendica\Core\Config\Capability\IManageConfigValues;
+use Friendica\Core\Session\Capability\IHandleSessions;
use Friendica\Database\Database;
use Friendica\Util\Strings;
-use Psr\Log\LoggerInterface;
/**
* Provide Language, Translation, and Localization functions to the application
{
/** @var string The default language */
const DEFAULT = 'en';
+ /** @var string[] The language names in their language */
+ const LANG_NAMES = [
+ 'ar' => 'العربية',
+ 'bg' => 'Български',
+ 'ca' => 'Català',
+ 'cs' => 'Česky',
+ 'da-dk' => 'Dansk (Danmark)',
+ 'de' => 'Deutsch',
+ 'en-gb' => 'English (United Kingdom)',
+ 'en-us' => 'English (United States)',
+ 'en' => 'English (Default)',
+ 'eo' => 'Esperanto',
+ 'es' => 'Español',
+ 'et' => 'Eesti',
+ 'fi-fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'hu' => 'Magyar',
+ 'is' => 'Íslenska',
+ 'it' => 'Italiano',
+ 'ja' => '日本語',
+ 'nb-no' => 'Norsk bokmål',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt-br' => 'Português Brasileiro',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sv' => 'Svenska',
+ 'zh-cn' => '简体中文',
+ ];
/**
* A string indicating the current language used for translation:
*/
private $dba;
- /**
- * @var LoggerInterface
- */
- private $logger;
-
- public function __construct(IConfig $config, Database $dba, LoggerInterface $logger, ISession $session, array $server, array $get)
+ public function __construct(IManageConfigValues $config, Database $dba, IHandleSessions $session, array $server, array $get)
{
$this->dba = $dba;
- $this->logger = $logger;
$this->loadTranslationTable(L10n::detectLanguage($server, $get, $config->get('system', 'language', self::DEFAULT)));
$this->setSessionVariable($session);
/**
* Sets the language session variable
*/
- private function setSessionVariable(ISession $session)
+ private function setSessionVariable(IHandleSessions $session)
{
if ($session->get('authenticated') && !$session->get('language')) {
$session->set('language', $this->lang);
}
}
- private function setLangFromSession(ISession $session)
+ private function setLangFromSession(IHandleSessions $session)
{
if ($session->get('language') !== $this->lang) {
$this->loadTranslationTable($session->get('language'));
if (is_null($s) && $this->stringPluralSelectDefault($count)) {
$s = $plural;
- } else {
+ } elseif (is_null($s)) {
$s = $singular;
}
*
* Scans the view/lang directory for the existence of "strings.php" files, and
* returns an alphabetical list of their folder names (@-char language codes).
- * Adds the english language if it's missing from the list.
+ * Adds the english language if it's missing from the list. Folder names are
+ * replaced by nativ language names.
*
- * Ex: array('de' => 'de', 'en' => 'en', 'fr' => 'fr', ...)
+ * Ex: array('de' => 'Deutsch', 'en' => 'English', 'fr' => 'Français', ...)
*
* @return array
*/
asort($strings_file_paths);
foreach ($strings_file_paths as $strings_file_path) {
$path_array = explode('/', $strings_file_path);
- $langs[$path_array[2]] = $path_array[2];
+ $langs[$path_array[2]] = self::LANG_NAMES[$path_array[2]] ?? $path_array[2];
}
}
return $langs;