--- i18nviews.module.orig 2008-12-02 10:53:03.000000000 -0200 +++ i18nviews.module 2008-12-02 13:08:43.000000000 -0200 @@ -149,3 +149,36 @@ function i18ntaxonomy_views_handler_fiel } return $links; } + +/** + * Implement hook_form_alter to localize exposed forms + * + */ +function i18nviews_form_alter(&$form, $form_state, $form_id) { + if ($form_id != 'views_exposed_form') return; + global $language; + // 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)) { + if (is_array($form[$key]['#options'])) { + foreach ($form[$key]['#options'] as $index => $opt) { + $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']); + } + } + } +}