From 49238ac39195abde4e18e99ef61ec3c86a2e1351 Mon Sep 17 00:00:00 2001
From: Stefan Borchert <stefan.borchert@undpaul.de>
Date: Sat, 26 Feb 2011 15:41:23 +0100
Subject: [PATCH] Set language of created content if content type is translatable.

---
 nodereference_autocreate.module |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/nodereference_autocreate.module b/nodereference_autocreate.module
index eb84140..489a5a0 100644
--- a/nodereference_autocreate.module
+++ b/nodereference_autocreate.module
@@ -89,6 +89,8 @@ function nodereference_autocreate_process($element, $edit, $form_state, $form) {
  * referenced node on each additional save.
  */
 function nodereference_autocreate_validate($element, &$form_state) {
+  global $language;
+
   $field_name = $element['#field_name'];
   $type_name = $element['#type_name'];
   $field = content_fields($field_name, $type_name);
@@ -96,18 +98,28 @@ function nodereference_autocreate_validate($element, &$form_state) {
   $delta = $element['#delta'];
   $value = $element['#value'][$field_key];
   $nid = NULL;
+  // Set the language if the content type is translatable (i18n).
+  $lang = variable_get('language_content_type_'. $node->type, 0) ? $language->language : '';
 
   if ($value) {
     // Load the current value stored in the database.
     $self = node_load($form_state['values']['nid']);
     $current_nid = $self->$field_name;
     $current_nid = $current_nid[$delta]['nid'];
+    // Get language selection.
+    if (isset($form_state['values']['language']) && $form_state['values']['language'] != '') {
+      $lang = $form_state['values']['language'];
+    }
 
     if ($current_nid) {
       // Referenced node exists, update its title if changed.
       $referenced_node = node_load($current_nid);
       if ($referenced_node->title != $value) {
         $referenced_node->title = $value;
+        // Update language if needed.
+        if ($form_state['values']['language'] != $referenced_node->language) {
+          $referenced_node->language = $lang;
+        }
         node_save($referenced_node);
       }
 
@@ -118,6 +130,8 @@ function nodereference_autocreate_validate($element, &$form_state) {
       $node = new stdClass();
       $node->type = nodereference_autocreate_type_get($field['referenceable_types']);
       $node->title = $value;
+      // Set language of node.
+      $node->language = $lang;
       node_save($node);
 
       if (!$node->nid) {
-- 
1.7.4

