entity_metadata_wrapper langcode always prints default language I'm using entity_metadata_wrapper with entity translation to print fields in a template, but it always prints the default language when using a langcode in the options.

$wrap = entity_metadata_wrapper('node', $node-&gt;nid, array('langcode' =&gt; 'zh-hans'));
print $wrap-&gt;field_main_subtitle-&gt;value(); // Returns English value


Printing out the $wrap array shows the following towards the end which might give some clue (langcode:protected => und):

[propertyInfoAltered:protected] =&gt; 
    [langcode:protected] =&gt; und
    [propertyInfoDefaults:protected] =&gt; Array
        (
            [type] =&gt; text
            [getter callback] =&gt; entity_property_verbatim_get
            [clear] =&gt; Array
                (
                )

        )

    [type:protected] =&gt; node
    [data:protected] =&gt; 
    [info:protected] =&gt; Array
        (
            [langcode] =&gt; zh-hans
            [type] =&gt; node
            [property defaults] =&gt; Array
                (
                )

        )


Any ideas?
Try this

print $wrap-&gt;language('zh-hans')-&gt;field_main_subtitle-&gt;value()