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'),
