diff --git a/core/modules/node/content_types.inc b/core/modules/node/content_types.inc index 3ebc6dc..82bf9a2 100644 --- a/core/modules/node/content_types.inc +++ b/core/modules/node/content_types.inc @@ -185,21 +185,19 @@ function node_type_form($form, &$form_state, $type = NULL) { '#description' => t('Users with the Administer content permission will be able to override these options.'), ); if (module_exists('language')) { - $languages = language_list(); - // @todo use language_special_languages() if #1471432 is comitted. - $lang_options = array( - LANGUAGE_NOT_SPECIFIED => t('Not specified'), - LANGUAGE_NOT_APPLICABLE => t('Not applicable'), - LANGUAGE_MULTIPLE => t('Multiple languages'), + $lang_options = array(); + + $languages = language_list(LANGUAGE_ALL); + foreach ($languages as $langcode => $language) { + $lang_options[$langcode] = $language->locked ? t('- @name -', array('@name' => $language->name)) : $language->name; + } + + $lang_options += array( 'site_default' => t("Site's default language"), 'current_interface' => t('Current interface language'), 'authors_default' => t("Author's preferred language"), ); - foreach ($languages as $langcode => $language) { - $lang_options[$langcode] = $language->name; - } - $form['language'] = array( '#type' => 'fieldset', '#title' => t('Language settings'), diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc index 003541b..faa3dea 100644 --- a/core/modules/node/node.pages.inc +++ b/core/modules/node/node.pages.inc @@ -186,7 +186,7 @@ function node_form($form, &$form_state, Node $node) { // @todo D8: Remove. Modules should access the node using $form_state['node']. $form['#node'] = $node; - if (variable_get('node_type_language_' . $node->type, 0) && module_exists('language')) { + if (module_exists('language')) { $languages = language_list(LANGUAGE_ALL); $language_options = array(); foreach ($languages as $langcode => $language) { @@ -196,16 +196,15 @@ function node_form($form, &$form_state, Node $node) { $form['langcode'] = array( '#type' => 'select', '#title' => t('Language'), - '#default_value' => (isset($node->langcode) ? $node->langcode : LANGUAGE_NOT_SPECIFIED), + '#default_value' => $node->langcode, '#options' => $language_options, + '#access' => !variable_get('node_type_language_hidden_' . $node->type, TRUE), ); } else { $form['langcode'] = array( '#type' => 'value', - // New nodes without multilingual support get the default language, old - // nodes keep their language if language.module is not available. - '#value' => !isset($form['#node']->nid) ? language_default()->langcode : $node->langcode, + '#value' => $node->langcode, ); } diff --git a/core/modules/translation/translation.module b/core/modules/translation/translation.module index efa8a14..4edf541 100644 --- a/core/modules/translation/translation.module +++ b/core/modules/translation/translation.module @@ -136,11 +136,11 @@ function translation_form_node_type_form_alter(&$form, &$form_state) { * and language selector is not hidden, translation cannot be enabled. */ function translation_node_type_language_translation_enabled_validate($element, &$form_state, $form) { - // @todo Change this to language_is_locked() when #1471432 is comitted. - $locked_language = in_array($form_state['values']['node_type_language_default'], array(LANGUAGE_NOT_SPECIFIED, LANGUAGE_NOT_APPLICABLE, LANGUAGE_MULTIPLE)); - if ($locked_language && $form_state['values']['node_type_language_hidden'] && $form_state['values']['node_type_language_translation_enabled']) { - // @todo use language_special_languages() if #1471432 is comitted. - form_set_error('node_type_language_translation_enabled', t('Translation is not supported if language is always one of: Not specified, Not applicable or Multiple languages')); + if (language_is_locked($form_state['values']['node_type_language_default']) && $form_state['values']['node_type_language_hidden'] && $form_state['values']['node_type_language_translation_enabled']) { + foreach (language_locked_languages() as $language) { + $locked_languages[] = $language->name; + } + form_set_error('node_type_language_translation_enabled', t('Translation is not supported if language is always one of: @locked_languages', array('@locked_languages' => implode(", ", $locked_languages)))); } }