diff --git a/i18n_node/i18n_node.module b/i18n_node/i18n_node.module index 8c2e38e..c42cfae 100644 --- a/i18n_node/i18n_node.module +++ b/i18n_node/i18n_node.module @@ -222,8 +222,16 @@ function i18n_node_language_mode($type) { function i18n_node_node_prepare($node) { $options = variable_get('i18n_node_options_' . $node->type, array()); if (i18n_node_type_enabled($node) && empty($node->nid) && !i18n_object_langcode($node) && in_array('current', $options)) { + $default = variable_get('i18n_node_default_language_for_' . $node->type, '-- current --'); + // Set current language for new nodes if option enabled - $node->language = i18n_language_content()->language; + if ($default === '-- current --') { + $node->language = i18n_language_content()->language; + } + // If a custom language was specified, apply it. + else { + $node->language = $default; + } } } @@ -417,7 +425,16 @@ function i18n_node_form_node_type_form_alter(&$form, &$form_state) { // Some settings about node languages. Add variables for node type from variable definition if ($form['#node_type']->type) { variable_type_include('node_type'); - $form['i18n'] += node_variable_type_subform($form['#node_type']->type, array('i18n_node_options', 'i18n_node_extended')); + $form['i18n'] += node_variable_type_subform($form['#node_type']->type, array('i18n_node_options', 'i18n_node_default_language_for', 'i18n_node_extended')); + // Only show custom default language field if "current" is checked. + $form['i18n']['i18n_node_default_language_for']['#states'] = array( + 'visible' => array( + ':input[name="i18n_node_options[current]"]' => array('checked' => TRUE), + ), + 'required' => array( + ':input[name="i18n_node_options[current]"]' => array('checked' => TRUE), + ), + ); } // Add disabled message if ($disabled) { diff --git a/i18n_node/i18n_node.variable.inc b/i18n_node/i18n_node.variable.inc index 9362fc3..b9b0495 100644 --- a/i18n_node/i18n_node.variable.inc +++ b/i18n_node/i18n_node.variable.inc @@ -45,13 +45,30 @@ function i18n_node_variable_info($options = array()) { 'repeat' => array( 'type' => 'options', 'options' => array( - 'current' => t('Set current language as default for new content.', array(), $options), + // Note: this was previously used only to mark new, translatable nodes + // with the current language of the user. Now, this setting is extended + // to allow a specific language to be chosen (defaulting to the current + // language). This was done for backwards compatibility reasons. + 'current' => t('Set custom language as default for new content.', array(), $options), 'required' => t('Require language (Do not allow Language Neutral).', array(), $options), 'lock' => t('Lock language (Cannot be changed).', array(), $options), ), ), 'group' => 'i18n', ); + // This field will only be displayed if "current" is checked above. + $variables['i18n_node_default_language_for_[node_type]'] = array( + 'type' => 'multiple', + 'title' => t('Custom default language', array(), $options), + 'repeat' => array( + 'type' => 'select', + 'options' => array_merge(array( + '-- current --' => t('Current language') + ), locale_language_list('name')), + 'default' => '-- current --', + ), + 'group' => 'i18n', + ); $variables['i18n_node_extended_[node_type]'] = array( 'type' => 'multiple', 'title' => t('Extended language support'),