/**
  * Add a link to a taxonomy archive.
  *
  * @param object $lang A Babble language object for this link
  * @return void
  **/
 protected function add_taxonomy_archive_link($lang)
 {
     $classes = array();
     $queried_object = get_queried_object();
     if (!bbl_is_translated_taxonomy($queried_object->taxonomy)) {
         $this->add_arbitrary_link($lang);
         return;
     } elseif (isset($this->translations[$lang->code]->term_id)) {
         // Translation exists
         bbl_switch_to_lang($lang->code);
         $href = get_term_link($this->translations[$lang->code], bbl_get_base_taxonomy($queried_object->taxonomy));
         bbl_restore_lang();
         $title = sprintf(__('Switch to %s', 'babble'), $lang->display_name);
         $classes[] = 'bbl-existing';
         $classes[] = 'bbl-existing-term';
     } else {
         // Translation does not exist
         // Generate a URL to create the translation
         $default_term = $this->translations[bbl_get_default_lang_code()];
         $href = bbl_get_new_term_translation_url($default_term->term_id, $lang->code, $default_term->taxonomy);
         $title = sprintf(__('Create for %s', 'babble'), $lang->display_name);
         $classes[] = 'bbl-add';
         $classes[] = 'bbl-add-term';
     }
     $href = apply_filters('bbl_switch_taxonomy_archive_link', $href, $lang, $this->translations);
     $classes[] = "bbl-lang-{$lang->code} bbl-lang-{$lang->url_prefix}";
     $classes[] = 'bbl-lang';
     $classes[] = 'bbl-term';
     if ($lang == bbl_get_current_lang_code()) {
         $classes[] = 'bbl-active';
     }
     $this->links[$lang->code] = array('classes' => $classes, 'href' => $href, 'id' => $lang->url_prefix, 'meta' => array('class' => strtolower(join(' ', array_unique($classes)))), 'title' => $title, 'lang' => $lang);
 }
 public function get_post_terms_to_translate($post_id, $lang_code)
 {
     $post = get_post($post_id);
     $taxos = get_object_taxonomies($post->post_type);
     $trans_terms = array();
     foreach ($taxos as $key => $taxo) {
         if (!bbl_is_translated_taxonomy($taxo)) {
             continue;
         }
         $terms = get_the_terms($post, $taxo);
         if (empty($terms)) {
             continue;
         }
         foreach ($terms as $term) {
             $trans = bbl_get_term_translations($term->term_id, $term->taxonomy);
             if (!isset($trans[$lang_code])) {
                 $trans_terms[$taxo][$term->term_id] = $term;
             }
         }
     }
     return $trans_terms;
 }