How to associate programatically the translation of new term to the original existing term?
Here is the function which takes $term as current term and $org_term which is original/source term.

&lt;?php
/**
 * Custom function to add term translations.
 */
function foo_add_term_translation($term, $org_term) {
  if ($org_term-&gt;i18n_tsid) {
    // Already part of a set, grab that set.
    $i18n_tsid = $org_term-&gt;i18n_tsid;
    $translation_set = i18n_translation_set_load($org_term-&gt;i18n_tsid);
    $translation_set-&gt;add_item($term);
    $translation_set-&gt;save_translations();
    watchdog('foo', "Added !source translation: !translated in !lang.", array('!source' =&gt; $org_term-&gt;name, '!translated' =&gt; $term-&gt;name, '!lang' =&gt; $term-&gt;language), WATCHDOG_NOTICE);
  }
  else {
    // We have no translation source nid, this could be a new set.
  }
}   


More code examples you'll find in i18n_translation module. 

This could be called either during insert or update as below:

/**
 * Implements hook_taxonomy_term_insert().
 */
function foo_taxonomy_term_insert($term) {
  foo_add_term_translation_wrapper($term);
}

/**
 * Implements hook_taxonomy_term_update().
 */
function foo_taxonomy_term_update($term) {
  foo_add_term_translation_wrapper($term);
}


Here is helpful wrapper function with example to load the original term where two terms share the same field value:

/**
 * Custom wrapper to update term translation.
 */
function foo_add_term_translation_wrapper($term) {

  $bundle = 'countries'; // Example bundle name
  $vid = ($voc = taxonomy_vocabulary_machine_name_load($bundle)) ? $voc-&gt;vid : NULL;
  if ($term-&gt;vid == $vid &amp;&amp; module_exists('i18n_taxonomy') &amp;&amp; $term-&gt;language &lt;&gt; 'en' &amp;&amp; empty($term-&gt;translation_set)) {

    if ($shared_id = $term-&gt;field_shared_id[key($term-&gt;field_shared_id)][0]['value']) {

      // Find term which points to the same country, but in English
      $query = new EntityFieldQuery();
      $org_term_res = $query
        -&gt;entityCondition('entity_type', 'taxonomy_term')
        -&gt;entityCondition('bundle', $bundle)
        -&gt;propertyCondition('vid', $vid)
        -&gt;fieldCondition('field_shared_id', 'value', $shared_id, '=')
        -&gt;propertyCondition('language', 'en')
        -&gt;execute();

      // Load term in the main language
      if ($org_term = taxonomy_term_load(reset(reset($org_term_res))-&gt;tid)) {
        foo_add_term_translation($term, $org_term);    
      } // end: if

    } // end: if
  } // end: if

}


See also:

https://drupal.org/node/2102933