How to only allow a node to be viewed in its assigned language? I have three languages on my site:

/en
/es


If I have a node with ID = 1234 and this node in english, then I can view it as follows:

/en/node/1234 


And this will redirect to 

/en/my-page


Which is great! The problem is, if I view this ENGLISH page from another language. I.e. If I open this:

/es/node/1234


Then it opens the english page but the link remains at /es/node/1234

I enabled the "Translation Redirect" module, but this doesn't do exactly what I was hoping it would do. In the above case, if you open:

/en/node/1234 


And there IS a "ES" version of the page, it will redirect to that page. Which is great, except sometimes I have a page that does not have a translation, and in the case I want that link to redirect to the correct page. In other words, opening this:

/es/node/1234


Must take you to:

/en/node/1234 


Which will then automatically take you to:

/en/my-page


Is there a way to enable this in i18n or must I write something custom to do this?
i18n_redirect module has simple code, so turn it off, and add next code to custom module:

/**
 * Implements hook_init()
 */
function CUSTOMMODULE_init() {

    $path = $_GET['q'];
    $language = i18n_language_interface();
    // Not for logged in users nor for home page
    if (!$path || drupal_is_front_page() || !empty($GLOBALS['user']-&gt;uid)) {
        return;
    }
    elseif ($translations = i18n_get_path_translations($path)) {
        if (isset($translations[$language-&gt;language]) &amp;&amp; $translations[$language-&gt;language]['href'] != $path) {
            drupal_goto($translations[$language-&gt;language]['href'], array('language' =&gt; $language), 301);
        }
        else {
            // Here we working with node, since question about node redirections
            $node = menu_get_object();
            if ($node &amp;&amp; $node-&gt;language &amp;&amp; ($node-&gt;language != $language-&gt;language)) {
                $languages = language_list();
                if (isset($languages[$node-&gt;language])) {
                    $language = $languages[$node-&gt;language];
                    drupal_goto('node/' . $node-&gt;nid, array('language' =&gt; $language), 301);
                }
            }
        }
    }
}