WPML – Filter by individual or all languages

So I’ve made it work. The problem was not with the filter but with tax query. Here is the solution for those who might be interested.

<?php
// I check the lang query var if it's empty we'll display all languages
$langGet = get_query_var('lang', 'all');
?>

/* Then  have my form to filter posts */
<form action="<?php echo get_permalink( get_the_ID() ); ?>" method="get">
    <label for="lang"><?php _e( 'Languages', 'mytextdomain' ); ?></label>
    <?php
    $languages = apply_filters( 'wpml_active_languages', NULL );
    if($languages) { ?>
        <select name="lang">
            <?php foreach($languages as $language) : ?>
                <option value="<?php echo $language['language_code']; ?>" <?php echo ( $langGet == $language['language_code'] ) ? 'selected' : ''; ?>><?php echo $language['translated_name']; ?></option>
            <?php endforeach; ?>
            <option value="all" <?php echo ( $langGet == 'all' ) ? 'selected' : ''; ?>><?php _e('All languages', 'mytextdomain'); ?></option>
        </select>
    <?php } ?>
    <input type="submit" value="<?php _e( 'Filter projects', 'mytextdomain' ); ?>">
</form>

<?php
// Then I set up the switch for current language
if( $langGet != 'all' ) {
    global $sitepress;
    $current_lang = $sitepress->get_current_language();
    $sitepress->switch_lang($langGet, true);
    $taxTerms = array( apply_filters( 'wpml_object_id', 755, 'project_category' ) );
    $filters = false;
} else {
    // If we want to display all languages we have to remove filters
    global $sitepress;
    remove_filter( 'get_terms_args', array( $sitepress, 'get_terms_args_filter' ), 10 );
    remove_filter( 'get_term', array( $sitepress, 'get_term_adjust_id' ), 1 );
    remove_filter( 'terms_clauses', array( $sitepress, 'terms_clauses' ), 10 );
    $taxTerms = array( 755, 776, 777, 778 );
    $filters = true;
}

$paged = (get_query_var('paged')) ? absint(get_query_var('paged')) : 1;

// Then we set the query
$args = array(
    'posts_per_page' => $postsperpage,
    'post_type' => 'projects',
    'tax_query' => array(
      array(
          'taxonomy' => 'project_category',
          'field' => 'term_id',
          'terms' => $taxTerms
      )
    ),
    'orderby'   => $orderby,
    'order' => $order,
    'meta_key' => $metakey,
    'paged' => $paged,
    'suppress_filters' => $filters
);
$projects = new WP_Query($args);