Entity translation not working I'm using Entity Metadata Wrapper and Entity Translation to programatically add a translation to existing nodes. This is my code, i'ts not working and I'm at loss to understand why:

$meta = entity_metadata_wrapper('node', $node);

$new_lang = 'fr';

$meta-&gt;language($new_lang);

$meta-&gt;language($new_lang)-&gt;title = 'Some French Title';

// Other fields are changed, but not shown here

$r = $meta-&gt;value();

$handler = entity_translation_get_handler('node',$r);

$translation = array(
  'entity_type' =&gt; 'node',
  'nid'         =&gt; $node-&gt;nid,
  'uid'         =&gt; $node-&gt;uid,
  'created'     =&gt; $node-&gt;created,
  'changed'     =&gt; $node-&gt;changed,
  'translate'   =&gt; 1,
  'status'      =&gt; 1,
  'language'    =&gt; $new_lang,
  'source'      =&gt; $node-&gt;language,
);

$handler-&gt;setTranslation($translation, $r);

$meta-&gt;save();
Most importantly, you should be calling $handler-&gt;saveTranslations(); after setting the translation. Your updated code should look like this:

$meta = entity_metadata_wrapper('node', $node);

$new_lang = 'fr';

$meta-&gt;language($new_lang);

// The body field is set to be translatable.
$meta-&gt;language($new_lang)-&gt;body-&gt;value = 'Some French Body';

// Other fields are changed, but not shown here

$handler = entity_translation_get_handler('node',$node);
$translations = $handler-&gt;getTranslations();

// This is a convenience way to initialize the translation data for
// the new language.
$new_translation = array(
  'language' =&gt; $new_lang,
  'source' =&gt; $translations-&gt;original
) + $translations-&gt;data[$translations-&gt;original];

$handler-&gt;setTranslation($new_translation);
$handler-&gt;saveTranslations();
$meta-&gt;save();


As a last note, the title property of a node is not translatable, unless you use the Title module. In that case, you should probably use the $meta-&gt;title_field accessor to change the value.

Good luck!