Entity translation not working
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!