The correct and optimal way to check language and print field depending on language, without affecting performance I have a multilingual site, and for many reasons (don't ask why) I'm not using the Entity Translation module. Instead, I have 3 separate description fields for each language, and I want to print those depending on the current language. I just wanted to ask if this is the correct and optimal way to print render those fields, and whether or not it will have major implications on site's performance?

Inside my custom node--content-type.tpl.php at the top I put:

&lt;?php hide($content['field_description_nl']); ?&gt;
&lt;?php hide($content['field_description_fr']); ?&gt;
&lt;?php hide($content['field_description_en']); ?&gt;


and later inside the teaser and then again inside the full node I've put:

&lt;?php 
global $language;
$lang_name = $language-&gt;language;
if($lang_name == "nl") {print render($content['field_description_nl']);}
if($lang_name == "fr") {print render($content['field_description_fr']);}
if($lang_name == "en") {print render($content['field_description_en']);}
?&gt;


Will this work or will it dramatically slow down the site when the traffic starts pouring in?
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.