Is it possible to make site_email an i18n variable?
Your current solution is actually a very bad practice, as you will be rebuilding the variable cache on every page request, which is a big hit.

You can set the site_mail variable as translatable by installing the Variable module (http://dgo.to/variable), then implementing hook_variable_info() and declaring the site_mail variable. 

function hook_variable()
{
  $variables['site_mail'] = array
  (
    'title' =&gt; t('Site Email'),
    'description' =&gt; t('The email addresses site mails are sent from'),
    'type' =&gt; 'string',
  );

  return $variables;
}


You then need to go to Admin -> Configuration -> Regional and Language -> Mutilingual settings -> Variables, and set site_mail as being translatable. You will then be able to visit the site information page and set a different value for the site mail in each language.