How to switch language on login based on user profile?
In "Configuration -> Regional and language -> Languages -> Detection and Selection" enable detection method "User -> Follow the user's language preference." and drag it to the top of the list. Do same in both sections: User interface &amp; Content language detection.

UPDATE: 
As an alternative to GUI method you can add the code pasted below in your theme's template.php file (but first, disable detection of user language in Language settings).

The code below uses hook_user_login which runs when the user successfully logs in and passes the user object as an argument. User language is then used for a redirect (drupal_goto).

function yourthemename_user_login(&amp;$edit, $account)
    {
      // get current user's language from the user account
      $user_language = $account-&gt;language;

      // if account has no preferred language set - do nothing
      if (!$user_language) {
          return;
      }
      // if the language is set - do additional checks and then redirect
      else {
        // get a list of installed languages
        $languages = language_list();
        // check if language retrieved from user account exists 
        if (!isset($languages[$user_language])) {
            return;
        }
        else {
          // verify if language is enabled
          if (!$languages[$user_language]-&gt;enabled) {
              return;
          }
          else {
            // if enabled - redirect to user profile in preferred language
            $user_profile_url = drupal_get_path_alias('user/' . $account-&gt;uid);
            drupal_goto($user_profile_url, array(
                'language' =&gt; $languages[$user_language],
            ));
          }
        } 
      }
    }