diff --git a/core/lib/Drupal/Core/Language/Language.php b/core/lib/Drupal/Core/Language/Language.php index e774fa9..3094c0d 100644 --- a/core/lib/Drupal/Core/Language/Language.php +++ b/core/lib/Drupal/Core/Language/Language.php @@ -20,7 +20,7 @@ class Language { // Properties within the Language are set up as the default language. public $name = 'English'; public $langcode = 'en'; - public $direction = 0; + public $direction = LANGUAGE_LTR; public $weight = 0; public $default = FALSE; public $method_id = NULL; @@ -33,10 +33,23 @@ class Language { * The properties used to construct the language. */ public function __construct(array $options = array()) { - // Set all the properties for the language. + // Set all the provided properties for the language. foreach ($options as $name => $value) { $this->$name = $value; } + // If some options were not set, set sane defaults of a predefined language. + if (!isset($options['name']) || !isset($options['direction'])) { + include_once DRUPAL_ROOT . '/core/includes/standard.inc'; + $predefined = standard_language_list(); + if (isset($predefined[$this->langcode])) { + if (!isset($options['name'])) { + $this->name = $predefined[$this->langcode][0]; + } + if (!isset($options['direction']) && isset($predefined[$this->langcode][2])) { + $this->direction = $predefined[$this->langcode][2]; + } + } + } } /** diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index d7bf8f4..fd3da62 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -347,15 +347,9 @@ function language_admin_add_custom_form_submit($form, &$form_state) { function language_admin_add_predefined_form_submit($form, &$form_state) { // Predefined language selection. $langcode = $form_state['values']['predefined_langcode']; - include_once DRUPAL_ROOT . '/core/includes/standard.inc'; - $predefined = standard_language_list(); - $language = new Language(array( - 'langcode' => $langcode, - 'name' => $predefined[$langcode][0], - 'direction' => isset($predefined[$langcode][2]) && $predefined[$langcode][2] == LANGUAGE_RTL ? LANGUAGE_RTL : LANGUAGE_LTR, - )); + $language = new Language(array('langcode' => $langcode)); language_save($language); - drupal_set_message(t('The language %language has been created and can now be used.', array('%language' => t($predefined[$langcode][0])))); + drupal_set_message(t('The language %language has been created and can now be used.', array('%language' => t($language->name)))); $form_state['redirect'] = 'admin/config/regional/language'; } diff --git a/core/modules/language/language.module b/core/modules/language/language.module index a94876e..a3e14c0 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -208,14 +208,6 @@ function language_process_language_select($element) { function language_save($language) { $language->is_new = !(bool) db_query_range('SELECT 1 FROM {language} WHERE langcode = :langcode', 0, 1, array(':langcode' => $language->langcode))->fetchField(); - // If name was not set, we add a predefined language. - if (!isset($language->name)) { - include_once DRUPAL_ROOT . '/core/includes/standard.inc'; - $predefined = standard_language_list(); - $language->name = $predefined[$language->langcode][0]; - $language->direction = isset($predefined[$language->langcode][2]) ? $predefined[$language->langcode][2] : LANGUAGE_LTR; - } - // Let other modules modify $language before saved. module_invoke_all('language_presave', $language); diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc index c6a4de1..527df6c 100644 --- a/core/modules/locale/locale.bulk.inc +++ b/core/modules/locale/locale.bulk.inc @@ -100,12 +100,8 @@ function locale_translate_import_form_submit($form, &$form_state) { // Add language, if not yet supported. $language = language_load($form_state['values']['langcode']); if (empty($language)) { - include_once DRUPAL_ROOT . '/core/includes/standard.inc'; - $predefined = standard_language_list(); $language = new Language(array( - 'langcode' => $form_state['values']['langcode'], - 'name' => $predefined[$form_state['values']['langcode']][0], - 'direction' => isset($predefined[$form_state['values']['langcode']][2]) ? $predefined[$form_state['values']['langcode']][2] : LANGUAGE_LTR, + 'langcode' => $form_state['values']['langcode'] )); $language = language_save($language); drupal_set_message(t('The language %language has been created.', array('%language' => t($language->name))));