Node titles are erased when I update a field with entity_metadata_wrapper I've written a script which fetches data from a REST API and uses it to update a field in a node. The website is multilingual (Canada English, Canada French, Australia English and US English) with US English as the default language. When I run the script with drush, it updates field_gj_metro_id with the correct value from the REST API, but for all nodes with languages other than US English, it deletes the node title. 

What am I missing in my script that would take care of the language settings so that the titles will be unaffected?

function fetch_metros() {
  return gj_api_request('GetMetroList', $arguments = array());
 }

$metros = array();
$metros = fetch_metros();
foreach ($metros as $metro) {
  $query = new EntityFieldQuery();
  $query
    -&gt;entityCondition('entity_type', 'node')
    -&gt;entityCondition('bundle', 'gj_locations')
    -&gt;propertyCondition('status', 1)
    -&gt;propertyCondition('title', $metro['metroName'])
    -&gt;propertyOrderBy('created', 'DESC')
    -&gt;fieldCondition('field_display_in_listing', 'value', TRUE);
  $result = $query-&gt;execute();

  if (!empty($result)) {
    $nids = array_keys($result['node']);
    $node = node_load($nids[0]);
    $node_wrapper = entity_metadata_wrapper('node', $node);
    $node_wrapper-&gt;field_gj_metro_id-&gt;set($metro['metroID']);
    $node_wrapper-&gt;save();
  }
}
I tried calling resetCache but the problem persisted. In the end I created a page for each language and used the PHP filter to add the script to the page. By switching to each language, setting the value of propertyCondition('language','') to the loaded language and loading the corresponding page, I was able to import the metroIDs and update the pages, one language at a time, without deleting the titles.