The correct and optimal way to check language and print field depending on language, without affecting performance
That's a reasonable way of implementing an alternative language switcher for specific field output.

To keep the logic out of the template, you could add it to hook_preprocess_node instead.

e.g:

/**
 * Implements hook_preprocess_node
 */
function MYTHEME_preprocess_node(&amp;$variables){
  global $language;
  $lang_field_name = 'field_description_'. $language-&gt;language;
  if(!empty($variables[$lang_field_name])){
    $variables['description'] = render($variables[$lang_field_name]);
  }
}


Then you can just use print $description in the node--content-type.tpl.php file. 

Make sure your cache is different for each language.

See also field_attach_preprocess for how field language translations are added in core.