/**
  * Generate frontend switch urls.
  *
  * @return array
  */
 function generate_frontend_switch_urls()
 {
     global $wp_query;
     $urls = array();
     $languages = $this->get_parent()->get_enabled_languages();
     $taxonomy = $wp_query->queried_object->taxonomy;
     $term_id = $wp_query->queried_object->term_id;
     $translation_id = fw_get_term_meta($term_id, 'translation_id', true);
     $translated_terms = $this->query_translation($translation_id);
     foreach ($languages as $code => $name) {
         $translation_data = $this->translation_exists($translated_terms, $code);
         if (!empty($translation_data)) {
             global $wp_rewrite;
             $term_link = get_term_link((int) $translation_data['term_id'], $taxonomy);
             if ($wp_rewrite->using_permalinks()) {
                 $term_link = preg_replace('/(\\/fw_lang\\/)(\\w+)/ix', '${1}' . $code, $term_link);
                 $urls[$code] = $term_link;
             } else {
                 remove_query_arg('fw_lang', $term_link);
                 $urls[$code] = esc_url(add_query_arg(array('fw_lang' => $code), $term_link));
             }
         } else {
             //translation did not exists for this post
             $urls[$code] = preg_replace('/(\\/fw_lang\\/)(\\w+)/ix', '${1}' . $code, get_home_url('/'));
         }
     }
     return $urls;
 }
 /**
  * Generate backend switch urls.
  *
  * @param $term_id
  *
  * @return array
  */
 public function generate_backend_switch_urls($term_id)
 {
     $urls = array();
     $meta_translation_id = fw_get_term_meta($term_id, 'translation_id', true);
     $translate_id = empty($meta_translation_id) ? $term_id : $meta_translation_id;
     $translate_lang = (bool) fw_get_term_meta($term_id, 'translation_lang', true) ? fw_get_term_meta($term_id, 'translation_lang', true) : $this->get_parent()->get_admin_active_language();
     $translated_terms = $this->query_translation($translate_id);
     $translation_languages = $this->get_parent()->get_enabled_languages_without($translate_lang);
     foreach ($translation_languages as $code => $language) {
         $translation_exists = $this->translation_exists($translated_terms, $code);
         if (empty($translation_exists)) {
             $args = array('action' => 'edit', 'menu' => 0, 'fw_translate_to' => $code);
             if ($translate_id > 0) {
                 $args['fw_translate_id'] = $translate_id;
             }
             $urls[$code] = array('lang_name' => $language['name'], 'url' => esc_url(add_query_arg($args, admin_url('nav-menus.php'))), 'type' => 'add');
         } else {
             $urls[$code] = array('lang_name' => $language['name'], 'url' => esc_url(add_query_arg(array('action' => 'edit', 'menu' => $translation_exists['term_id'], 'fw_translate_to' => $code), admin_url('nav-menus.php'))), 'type' => 'edit');
         }
     }
     return $urls;
 }