The source looks like this:
if { $user_id == 0 } {
set locale [ad_get_cookie "ad_locale"]
if { [empty_string_p $locale] } {
set locale [lang::system::site_wide_locale]
}
return $locale
} else {
return [db_string get_user_site_wide_locale {} -default ""]
}
So the return value depends on a cookie. Not a good idea to cache this.