--- i18n_access.module	2009-02-02 16:50:16.000000000 +0000
+++ i18n_access_new.module	2010-04-22 14:00:11.000000000 +0100
@@ -8,6 +8,7 @@
 
 define('I18N_ACCESS_LANGUAGE_NEUTRAL', 'NEUTRAL');
 
+
 /**
  * Implementation of hook_user().
  */
@@ -82,7 +83,46 @@ function i18n_access_form_alter(&$form, 
       }
     }
   }
-}
+  
+    //Configuring locale search form to limit it to domain language
+  if ($form['#id'] == 'locale-translate-seek-form' && !user_access('administer nodes') ) {
+      
+    $perms = i18n_access_load_permissions();
+
+    foreach ($form['search']['language']['#options'] as $key => $value) {
+      $perm_key = ($key == '') ? I18N_ACCESS_LANGUAGE_NEUTRAL : $key;
+      if (!$perms[$perm_key]) {
+        unset($form['search']['language']['#options'][$key]);
+      }
+    }
+  }	
+  
+  //Configuring translation edit form to limit it to allowed language
+  if ($form['#id'] == 'locale-translate-edit-form' && !user_access('administer nodes') ) {
+    
+     $perms = i18n_access_load_permissions();
+     $form['translations'] = array('#tree' => TRUE);
+     $lid = arg(4); 
+    
+     foreach($perms as $language) {  
+       
+        $form['translations'][$language] = array(
+          '#type' => 'textarea',
+          '#title' => locale_language_name($language),
+          '#rows' => 3,
+          '#default_value' => '',
+        ); 
+                
+        $result = db_query("SELECT DISTINCT translation FROM {locales_target} WHERE lid = %d AND language = '%s'", $lid, $language);
+        while ($translation = db_fetch_object($result)) {
+           $form['translations'][$language]['#default_value'] = $translation->translation;
+        }
+      }  
+  
+  }
+} 
+  
+ 
 
 /**
  * Wrapper around node_access() with additional checks for language permissions.
@@ -114,7 +154,7 @@ function i18n_access_node_access($op, $n
   }
 
   $perms = i18n_access_load_permissions($account->uid);
-
+  
   return (boolean)$perms[$node->language];
 }
 
@@ -126,7 +166,7 @@ function i18n_access_menu_alter(&$callba
   $callbacks['node/%node/edit']['access callback'] = 'i18n_access_node_access';
 
   // Replace the translation overview page since we can't hook it.
-  $callbacks['node/%node/translate']['page callback'] = 'i18n_access_translation_node_overview';
+  $callbacks['node/%node/translate']['page callback'] = 'i18n_access_translation_node_overview';  
 }
 
 /**
