--- i18n_access.module	2010-05-22 11:21:55.000000000 +0100
+++ i18n_access.module.new	2010-06-02 14:41:43.000000000 +0100
@@ -94,6 +94,42 @@ 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') && user_access('translate interface')) {
+      
+    $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') && user_access('translate interface')) {
+    
+     $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;
+       }
+     }  
+  }
 }
 
 /**
