--- i18ntaxonomy.module.orig 2008-12-19 12:18:20.000000000 +0100 +++ i18ntaxonomy.module 2008-12-19 12:18:40.000000000 +0100 @@ -386,6 +386,37 @@ function i18ntaxonomy_form_alter(&$form, } break; + case 'views_exposed_form': + // Localise taxonomy terms + foreach(element_children($form) as $key) { + if (($key == 'tid' || preg_match('/^tid_\d+/', $key) || preg_match('/^term_node_tid_depth_\d+/', $key)) && is_array($form[$key]['#options']) { + foreach ($form[$key]['#options'] as $index => $opt) { + foreach ($opt->option as $opt_key => $opt_value) { + $prefix = ''; + if (preg_match('/^(-+?)(.*)$/', $opt_value, $matches)) { + $opt_value = $matches[2]; + $prefix = $matches[1]; + } + $form[$key]['#options'][$index]->option[$opt_key] = $prefix . tt("taxonomy:term:$opt_key:name", $opt_value); + } + $term_language = db_result(db_query('SELECT language FROM {term_data} WHERE tid = %d', $index)); + if($index != 'All' && $language->language != $term_language && !empty($term_language)) { + // Remove translated terms + unset($form[$key]['#options'][$index]); + } + } + } + } + // Localize labels + if (!empty($form['#info'])) { + foreach(element_children($form['#info']) as $key) { + if (!empty($form['#info'][$key]['label'])) { + $type = str_replace('views-exposed-form-', '', $form['#id']) . ':' . $key; + $form['#info'][$key]['label'] = tt("views:exposed:$type", $form['#info'][$key]['label']); + } + } + break; + default: if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id && ($node = $form['#node']) && isset($form['taxonomy']) ) {