diff --git a/sites/all/modules/contrib/i18n/i18ntaxonomy/i18ntaxonomy.module b/sites/all/modules/contrib/i18n/i18ntaxonomy/i18ntaxonomy.module --- i18ntaxonomy/i18ntaxonomy.module +++ i18ntaxonomy/i18ntaxonomy.module @@ -401,7 +401,9 @@ break; case I18N_TAXONOMY_LOCALIZE: + $tid = $term->tid; + $form['language'] = array( '#type' => 'value', '#value' => '' ); @@ -404,9 +406,76 @@ $form['language'] = array( '#type' => 'value', '#value' => '' ); - $form['identification']['name']['#description'] .= ' '. t('This name will be localizable. You can translate it using the translate interface pages.', array('@translate-interface' => url('admin/build/translate'))) .''; - $form['identification']['description']['#description'] .= ' '. t('This description will be localizable. You can translate it using the translate interface pages.', array('@translate-interface' => url('admin/build/translate'))) .''; + $form['identification']['i18ntaxonomy'] = array( + '#type' => 'fieldset', + '#title' => t('Translations'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + ); + if (isset($tid)) { + if (empty($form['identification']['description']['#default_value'])) { + $form['identification']['i18ntaxonomy']['#description'] = t('Translation links for description will be available as soon as the description contains a non empty value.'); + } + } + else { + $form['identification']['i18ntaxonomy']['#collapsed'] = TRUE; + $form['identification']['i18ntaxonomy']['#description'] = t('Translation links will be available as soon as the term has been created.'); + } + + $form['identification']['i18ntaxonomy']['list'] = array( + '#value' => chr(32), // required to be processed + '#prefix' => '', + ); + foreach(language_list() as $langcode => $language) { + $form['identification']['i18ntaxonomy']['list'][$langcode] = array( + '#value' => $langcode, + //'#description' => $langcode, + '#prefix' => '
  • ', + '#suffix' => '
  • ', + 'name' => array('#prefix' => '/ ' . t('name:') . ' '), + 'description' => array('#prefix' => ', ' . t('description') . ': '), + ); + if ($langcode == language_default('language')) { + $form['identification']['i18ntaxonomy']['list'][$langcode]['name']['#value'] = $form['identification']['name']['#default_value']; + $form['identification']['i18ntaxonomy']['list'][$langcode]['description']['#value'] = $form['identification']['description']['#default_value']; + } + } + + $query_tr = 'SELECT translation, language FROM {locales_target} WHERE lid = %d'; + $query_lid = "SELECT lid FROM {locales_source} WHERE location = '%s' LIMIT 1"; + $destination = drupal_get_destination(); + foreach(array('name', 'description') as $elem_id) { + $location = 'term:' . $tid . ':' . $elem_id; + + // avoid apix_db dependency => traditional manual query without caching the result + //$lid = apix_db_colum2colum('lid', 'locales_source', 'location', $location); + $lid = db_result(db_query($query_lid, $location)); + + if (empty($form['identification'][$elem_id]['#default_value'])) continue; + + $key = "taxonomy:term:$tid:$elem_id"; + //$value = $form['identification'][$elem_id]['#default_value']; + $missing_languages = language_list(); + unset($missing_languages[language_default('language')]); + + $result = db_query($query_tr, $lid); + while ($translation = db_fetch_object($result)) { + $langcode = $translation->language; + $translated = $translation->translation; + $translated = l($translated, 'admin/build/translate/edit/' . $lid); + $form['identification']['i18ntaxonomy']['list'][$langcode][$elem_id]['#value'] .= $translated; + unset($missing_languages[$langcode]); + } + + // would be incorrect to use t($elem_id), since t() function is intended for constant strings only + $link_text = ($elem_id == 'name') ? t('name') : t('description'); + foreach($missing_languages as $langcode => $language) { + $translated = '' . l($link_text, 'admin/build/translate/edit/' . $lid) . ''; + $form['identification']['i18ntaxonomy']['list'][$langcode][$elem_id]['#value'] .= $translated; + } + } break; case I18N_TAXONOMY_NONE: