This is a duplicate of the old asynchronicity problem, but there's a second issue as well -- scope.
First of all, scope. The lan variable is defined inside the internal function, and so cannot be seen from outside.
function getLanguage(){
    var lan;
    navigator.globalization.getLocaleName(
        function(locale){
            lan = locale.value;
        },
        function(){
            lan = null;
        }
    );
    return lan;
}
That was easy. But it still won't work, due to asynchronity. You have to set up your function to use a callback instead:
function getLanguage(callback){
    navigator.globalization.getLocaleName(
        function(locale){
            callback(locale.value);
        },
        function(){
            callback(null);
        }
    );
}
Also, by now, we don't even need the variable, so i got rid of it.
Then, you call it as:
getLanguage(function(lan){
    // something with lan here
});