Fix language installation selection, use isocode

pull/3924/head
Julio Montoya 4 years ago
parent 474f03bf28
commit aebd931297
  1. 2
      public/main/inc/lib/internationalization.lib.php
  2. 6
      public/main/install/index.php
  3. 30
      public/main/install/install.lib.php
  4. 30
      src/CoreBundle/DataFixtures/LanguageFixtures.php

@ -129,7 +129,7 @@ function api_get_language_isocode()
return $request->getLocale(); return $request->getLocale();
} }
return 'en'; return 'en_US';
} }
/** /**

@ -53,7 +53,7 @@ if (file_exists($envFile)) {
}*/ }*/
// Defaults settings // Defaults settings
putenv('APP_LOCALE=en'); putenv('APP_LOCALE=en_US');
putenv('APP_ENCRYPT_METHOD="bcrypt"'); putenv('APP_ENCRYPT_METHOD="bcrypt"');
putenv('DATABASE_HOST='); putenv('DATABASE_HOST=');
putenv('DATABASE_PORT='); putenv('DATABASE_PORT=');
@ -67,7 +67,7 @@ session_start();
require_once 'install.lib.php'; require_once 'install.lib.php';
$installationLanguage = 'en'; $installationLanguage = 'en_US';
// Determination of the language during the installation procedure. // Determination of the language during the installation procedure.
if (!empty($_POST['language_list'])) { if (!empty($_POST['language_list'])) {
$search = ['../', '\\0']; $search = ['../', '\\0'];
@ -79,7 +79,7 @@ if (!empty($_POST['language_list'])) {
// Language validation. // Language validation.
if (!array_key_exists($installationLanguage, get_language_folder_list())) { if (!array_key_exists($installationLanguage, get_language_folder_list())) {
$installationLanguage = 'en'; $installationLanguage = 'en_US';
} }
// Set translation // Set translation

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\DataFixtures\LanguageFixtures;
use Chamilo\CoreBundle\Entity\AccessUrl; use Chamilo\CoreBundle\Entity\AccessUrl;
use Chamilo\CoreBundle\Entity\BranchSync; use Chamilo\CoreBundle\Entity\BranchSync;
use Chamilo\CoreBundle\Entity\Group; use Chamilo\CoreBundle\Entity\Group;
@ -380,6 +381,10 @@ function writeSystemConfigFile($path)
*/ */
function get_language_folder_list() function get_language_folder_list()
{ {
$languages = LanguageFixtures::getLanguages();
return array_column($languages, 'english_name', 'isocode');
return [ return [
'ar' => 'arabic', 'ar' => 'arabic',
'ast' => 'asturian', 'ast' => 'asturian',
@ -573,33 +578,12 @@ function display_step_sequence()
/** /**
* Displays a drop down box for selection the preferred language. * Displays a drop down box for selection the preferred language.
*/ */
function display_language_selection_box($name = 'language_list', $default_language = 'en') function display_language_selection_box($name = 'language_list', $default_language = 'en_US')
{ {
// Reading language list.
$language_list = get_language_folder_list();
// Sanity checks due to the possibility for customizations.
if (!is_array($language_list) || empty($language_list)) {
$language_list = ['en' => 'English'];
}
// Sorting again, if it is necessary.
//asort($language_list);
// More sanity checks.
if (!array_key_exists($default_language, $language_list)) {
if (array_key_exists('en', $language_list)) {
$default_language = 'en';
} else {
$language_keys = array_keys($language_list);
$default_language = $language_keys[0];
}
}
// Displaying the box. // Displaying the box.
return Display::select( return Display::select(
'language_list', 'language_list',
$language_list, get_language_folder_list(),
$default_language, $default_language,
['class' => 'form-control'], ['class' => 'form-control'],
false false

@ -14,7 +14,23 @@ class LanguageFixtures extends Fixture
{ {
public function load(ObjectManager $manager): void public function load(ObjectManager $manager): void
{ {
$list = [ $list = self::getLanguages();
foreach ($list as $data) {
$lang = (new Language())
->setOriginalName($data['original_name'])
->setEnglishName($data['english_name'])
->setIsocode($data['isocode'])
->setAvailable(1 === $data['available'])
;
$manager->persist($lang);
}
$manager->flush();
}
public static function getLanguages(): array
{
return [
[ [
'original_name' => 'العربية', 'original_name' => 'العربية',
'english_name' => 'arabic', 'english_name' => 'arabic',
@ -382,17 +398,5 @@ class LanguageFixtures extends Fixture
'available' => 0, 'available' => 0,
], ],
]; ];
foreach ($list as $data) {
$lang = (new Language())
->setOriginalName($data['original_name'])
->setEnglishName($data['english_name'])
->setIsocode($data['isocode'])
->setAvailable(1 === $data['available'])
;
$manager->persist($lang);
}
$manager->flush();
} }
} }

Loading…
Cancel
Save