Merge pull request #11141 from urbalazs/language-names
Add native language names to language selector & fix config during install
This commit is contained in:
		
				commit
				
					
						3d8e82d95d
					
				
			
		
					 4 changed files with 49 additions and 18 deletions
				
			
		|  | @ -21,6 +21,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace Friendica\Core\Config\Repository; | namespace Friendica\Core\Config\Repository; | ||||||
| 
 | 
 | ||||||
|  | use Friendica\App\Mode; | ||||||
| use Friendica\Core\Config\Exception\ConfigPersistenceException; | use Friendica\Core\Config\Exception\ConfigPersistenceException; | ||||||
| use Friendica\Core\Config\Util\ValueConversion; | use Friendica\Core\Config\Util\ValueConversion; | ||||||
| use Friendica\Database\Database; | use Friendica\Database\Database; | ||||||
|  | @ -32,10 +33,13 @@ class Config | ||||||
| { | { | ||||||
| 	/** @var Database */ | 	/** @var Database */ | ||||||
| 	protected $db; | 	protected $db; | ||||||
|  | 	/** @var Mode */ | ||||||
|  | 	protected $mode; | ||||||
| 
 | 
 | ||||||
| 	public function __construct(Database $db) | 	public function __construct(Database $db, Mode $mode) | ||||||
| 	{ | 	{ | ||||||
| 		$this->db = $db; | 		$this->db   = $db; | ||||||
|  | 		$this->mode = $mode; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	protected static $table_name = 'config'; | 	protected static $table_name = 'config'; | ||||||
|  | @ -47,7 +51,7 @@ class Config | ||||||
| 	 */ | 	 */ | ||||||
| 	public function isConnected(): bool | 	public function isConnected(): bool | ||||||
| 	{ | 	{ | ||||||
| 		return $this->db->isConnected(); | 		return $this->db->isConnected() && !$this->mode->isInstall(); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  |  | ||||||
|  | @ -25,7 +25,6 @@ use Friendica\Core\Config\Capability\IManageConfigValues; | ||||||
| use Friendica\Core\Session\Capability\IHandleSessions; | use Friendica\Core\Session\Capability\IHandleSessions; | ||||||
| use Friendica\Database\Database; | use Friendica\Database\Database; | ||||||
| use Friendica\Util\Strings; | use Friendica\Util\Strings; | ||||||
| use Psr\Log\LoggerInterface; |  | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Provide Language, Translation, and Localization functions to the application |  * Provide Language, Translation, and Localization functions to the application | ||||||
|  | @ -35,6 +34,34 @@ class L10n | ||||||
| { | { | ||||||
| 	/** @var string The default language */ | 	/** @var string The default language */ | ||||||
| 	const DEFAULT = 'en'; | 	const DEFAULT = 'en'; | ||||||
|  | 	/** @var string[] The language names in their language */ | ||||||
|  | 	const LANG_NAMES = [ | ||||||
|  | 		'ar'    => 'العربية', | ||||||
|  | 		'bg'    => 'Български', | ||||||
|  | 		'ca'    => 'Català', | ||||||
|  | 		'cs'    => 'Česky', | ||||||
|  | 		'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: | 	 * A string indicating the current language used for translation: | ||||||
|  | @ -57,15 +84,9 @@ class L10n | ||||||
| 	 */ | 	 */ | ||||||
| 	private $dba; | 	private $dba; | ||||||
| 
 | 
 | ||||||
| 	/** | 	public function __construct(IManageConfigValues $config, Database $dba, IHandleSessions $session, array $server, array $get) | ||||||
| 	 * @var LoggerInterface |  | ||||||
| 	 */ |  | ||||||
| 	private $logger; |  | ||||||
| 
 |  | ||||||
| 	public function __construct(IManageConfigValues $config, Database $dba, LoggerInterface $logger, IHandleSessions $session, array $server, array $get) |  | ||||||
| 	{ | 	{ | ||||||
| 		$this->dba    = $dba; | 		$this->dba    = $dba; | ||||||
| 		$this->logger = $logger; |  | ||||||
| 
 | 
 | ||||||
| 		$this->loadTranslationTable(L10n::detectLanguage($server, $get, $config->get('system', 'language', self::DEFAULT))); | 		$this->loadTranslationTable(L10n::detectLanguage($server, $get, $config->get('system', 'language', self::DEFAULT))); | ||||||
| 		$this->setSessionVariable($session); | 		$this->setSessionVariable($session); | ||||||
|  | @ -340,9 +361,10 @@ class L10n | ||||||
| 	 * | 	 * | ||||||
| 	 * Scans the view/lang directory for the existence of "strings.php" files, and | 	 * Scans the view/lang directory for the existence of "strings.php" files, and | ||||||
| 	 * returns an alphabetical list of their folder names (@-char language codes). | 	 * 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 | 	 * @return array | ||||||
| 	 */ | 	 */ | ||||||
|  | @ -358,7 +380,7 @@ class L10n | ||||||
| 			asort($strings_file_paths); | 			asort($strings_file_paths); | ||||||
| 			foreach ($strings_file_paths as $strings_file_path) { | 			foreach ($strings_file_paths as $strings_file_path) { | ||||||
| 				$path_array            = explode('/', $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; | 		return $langs; | ||||||
|  |  | ||||||
|  | @ -21,6 +21,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace Friendica\Core\PConfig\Repository; | namespace Friendica\Core\PConfig\Repository; | ||||||
| 
 | 
 | ||||||
|  | use Friendica\App\Mode; | ||||||
| use Friendica\Core\Config\Util\ValueConversion; | use Friendica\Core\Config\Util\ValueConversion; | ||||||
| use Friendica\Core\PConfig\Exception\PConfigPersistenceException; | use Friendica\Core\PConfig\Exception\PConfigPersistenceException; | ||||||
| use Friendica\Database\Database; | use Friendica\Database\Database; | ||||||
|  | @ -34,10 +35,13 @@ class PConfig | ||||||
| 
 | 
 | ||||||
| 	/** @var Database */ | 	/** @var Database */ | ||||||
| 	protected $db; | 	protected $db; | ||||||
|  | 	/** @var Mode */ | ||||||
|  | 	protected $mode; | ||||||
| 
 | 
 | ||||||
| 	public function __construct(Database $db) | 	public function __construct(Database $db, Mode $mode) | ||||||
| 	{ | 	{ | ||||||
| 		$this->db = $db; | 		$this->db   = $db; | ||||||
|  | 		$this->mode = $mode; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  | @ -47,7 +51,7 @@ class PConfig | ||||||
| 	 */ | 	 */ | ||||||
| 	public function isConnected(): bool | 	public function isConnected(): bool | ||||||
| 	{ | 	{ | ||||||
| 		return $this->db->isConnected(); | 		return $this->db->isConnected() & !$this->mode->isInstall(); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  |  | ||||||
|  | @ -22,6 +22,7 @@ | ||||||
| namespace Friendica\Test\src\Core\Storage\Repository; | namespace Friendica\Test\src\Core\Storage\Repository; | ||||||
| 
 | 
 | ||||||
| use Dice\Dice; | use Dice\Dice; | ||||||
|  | use Friendica\App\Mode; | ||||||
| use Friendica\Core\Config\Capability\IManageConfigValues; | use Friendica\Core\Config\Capability\IManageConfigValues; | ||||||
| use Friendica\Core\Config\Type\PreloadConfig; | use Friendica\Core\Config\Type\PreloadConfig; | ||||||
| use Friendica\Core\Hook; | use Friendica\Core\Hook; | ||||||
|  | @ -83,7 +84,7 @@ class StorageManagerTest extends DatabaseTest | ||||||
| 
 | 
 | ||||||
| 		$this->dba = new StaticDatabase($configCache, $profiler, $this->logger); | 		$this->dba = new StaticDatabase($configCache, $profiler, $this->logger); | ||||||
| 
 | 
 | ||||||
| 		$configModel  = new Repository\Config($this->dba); | 		$configModel  = new Repository\Config($this->dba, new Mode(Mode::DBCONFIGAVAILABLE)); | ||||||
| 		$this->config = new PreloadConfig($configCache, $configModel); | 		$this->config = new PreloadConfig($configCache, $configModel); | ||||||
| 		$this->config->set('storage', 'name', 'Database'); | 		$this->config->set('storage', 'name', 'Database'); | ||||||
| 		$this->config->set('storage', 'filesystem_path', $this->root->getChild(Type\FilesystemConfig::DEFAULT_BASE_FOLDER)->url()); | 		$this->config->set('storage', 'filesystem_path', $this->root->getChild(Type\FilesystemConfig::DEFAULT_BASE_FOLDER)->url()); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue