Issue #1260510 by andypost, Berdir, Gábor Hojtsy: Introduce a language_load()($langcode).

8.0.x
Nathaniel 2011-10-21 15:42:30 +09:00
parent 35b88bdaff
commit 6be0aa47e4
4 changed files with 32 additions and 24 deletions

View File

@ -32,7 +32,7 @@ function _locale_import_po($file, $langcode, $mode) {
drupal_set_time_limit(240); drupal_set_time_limit(240);
// Check if we have the language already in the database. // Check if we have the language already in the database.
if (!db_query("SELECT COUNT(language) FROM {languages} WHERE language = :language", array(':language' => $langcode))->fetchField()) { if (!language_load($langcode)) {
drupal_set_message(t('The language selected for import is not supported.'), 'error'); drupal_set_message(t('The language selected for import is not supported.'), 'error');
return FALSE; return FALSE;
} }

View File

@ -764,8 +764,9 @@ function _locale_rebuild_js($langcode = NULL) {
// This is necessary to keep the variable consistent with the database // This is necessary to keep the variable consistent with the database
// version of the language and to prevent checking against an outdated hash. // version of the language and to prevent checking against an outdated hash.
$default_langcode = language_default()->language; $default_langcode = language_default()->language;
drupal_static_reset('language_list');
if ($default_langcode == $language->language) { if ($default_langcode == $language->language) {
$default = db_query("SELECT * FROM {languages} WHERE language = :language", array(':language' => $default_langcode))->fetchObject(); $default = language_load($default_langcode);
variable_set('language_default', $default); variable_set('language_default', $default);
} }
} }

View File

@ -239,22 +239,16 @@ function locale_languages_add_form($form, &$form_state) {
* @param $langcode * @param $langcode
* Language code of the language to edit. * Language code of the language to edit.
*/ */
function locale_languages_edit_form($form, &$form_state, $langcode) { function locale_languages_edit_form($form, &$form_state, $language) {
if ($language = db_query("SELECT * FROM {languages} WHERE language = :language", array(':language' => $langcode))->fetchObject()) { _locale_languages_common_controls($form, $language);
_locale_languages_common_controls($form, $language); $form['actions'] = array('#type' => 'actions');
$form['actions'] = array('#type' => 'actions'); $form['actions']['submit'] = array(
$form['actions']['submit'] = array( '#type' => 'submit',
'#type' => 'submit', '#value' => t('Save language')
'#value' => t('Save language') );
); $form['#submit'][] = 'locale_languages_edit_form_submit';
$form['#submit'][] = 'locale_languages_edit_form_submit'; $form['#validate'][] = 'locale_languages_edit_form_validate';
$form['#validate'][] = 'locale_languages_edit_form_validate'; return $form;
return $form;
}
else {
drupal_not_found();
drupal_exit();
}
} }
/** /**
@ -324,8 +318,7 @@ function locale_languages_add_predefined_form_validate($form, &$form_state) {
form_set_error('predefined_langcode', t('Fill in the language details and save the language with <em>Add custom language</em>.')); form_set_error('predefined_langcode', t('Fill in the language details and save the language with <em>Add custom language</em>.'));
} }
else { else {
$languages = language_list(); if (language_load($langcode)) {
if (isset($languages[$langcode])) {
form_set_error('predefined_langcode', t('The language %language (%code) already exists.', array('%language' => $languages[$langcode]->name, '%code' => $langcode))); form_set_error('predefined_langcode', t('The language %language (%code) already exists.', array('%language' => $languages[$langcode]->name, '%code' => $langcode)));
} }
} }
@ -431,8 +424,8 @@ function locale_languages_edit_form_submit($form, &$form_state) {
/** /**
* User interface for the language deletion confirmation screen. * User interface for the language deletion confirmation screen.
*/ */
function locale_languages_delete_form($form, &$form_state, $langcode) { function locale_languages_delete_form($form, &$form_state, $language) {
$langcode = $language->language;
// Do not allow deletion of English locale. // Do not allow deletion of English locale.
if ($langcode == 'en') { if ($langcode == 'en') {
drupal_set_message(t('The English language cannot be deleted.')); drupal_set_message(t('The English language cannot be deleted.'));

View File

@ -125,14 +125,14 @@ function locale_menu() {
'file' => 'locale.admin.inc', 'file' => 'locale.admin.inc',
'type' => MENU_VISIBLE_IN_BREADCRUMB, 'type' => MENU_VISIBLE_IN_BREADCRUMB,
); );
$items['admin/config/regional/language/edit/%'] = array( $items['admin/config/regional/language/edit/%language'] = array(
'title' => 'Edit language', 'title' => 'Edit language',
'page callback' => 'drupal_get_form', 'page callback' => 'drupal_get_form',
'page arguments' => array('locale_languages_edit_form', 5), 'page arguments' => array('locale_languages_edit_form', 5),
'access arguments' => array('administer languages'), 'access arguments' => array('administer languages'),
'file' => 'locale.admin.inc', 'file' => 'locale.admin.inc',
); );
$items['admin/config/regional/language/delete/%'] = array( $items['admin/config/regional/language/delete/%language'] = array(
'title' => 'Confirm', 'title' => 'Confirm',
'page callback' => 'drupal_get_form', 'page callback' => 'drupal_get_form',
'page arguments' => array('locale_languages_delete_form', 5), 'page arguments' => array('locale_languages_delete_form', 5),
@ -255,6 +255,20 @@ function locale_permission() {
); );
} }
/**
* Loads a language object from the database.
*
* @param $langcode
* The language code.
*
* @return
* A fully-populated language object or FALSE.
*/
function language_load($langcode) {
$languages = language_list();
return isset($languages[$langcode]) ? $languages[$langcode] : FALSE;
}
/** /**
* Form builder callback to display language selection widget. * Form builder callback to display language selection widget.
* *