I will go on something easier than re-create the action.
In your file /apps/[your app]/lib/user/myUser.class.php
which extends sfGuardSecurityUser
:
You can override the signIn
function like that :
public function signIn($user, $remember = false, $con = null)
{
parent::signin($user, $remember, $con);
$this->setCulture($user->getProfile()->getLanguage());
}
So every time a user is log in, it will have its culture setted.