Avatar billede clausfod Nybegynder
16. juni 2004 - 11:48 Der er 7 kommentarer

Servlet API - request.getLocale()

Når man benytter request.getLocale() returneres clientens locale.
Nogle gange 2 karakterer andre gange 5 karakterer.

Eksempelvis returneres "da" hvis man launcher en side med en browser med dansk som language andre gange "en_US" hvis man launcher med engelsk.

Kan man på nogen måde sikrer at man request.getLocale() altid returnere både language og countrycode ?
Avatar billede arne_v Ekspert
16. juni 2004 - 12:02 #1
public java.util.Locale getLocale()
Returns the preferred Locale that the client will accept content in, based on the Accept-Language header. If the client request doesn't provide an Accept-Language header, this method returns the default locale for the server.
Avatar billede arne_v Ekspert
16. juni 2004 - 12:02 #2
D.v.s. at det afhænger af browseren.

Og man kan ikke stole meget på browsere ...

:-)
Avatar billede clausfod Nybegynder
16. juni 2004 - 14:03 #3
Har du nogle alternative løsninger udover at bruge navigator.userlanguage og navigator.language clientside ?
Avatar billede arne_v Ekspert
16. juni 2004 - 20:24 #4
Jeg har ingen super gode løsninger.

Du kan bruge request.getLocale() og kode processingen af resultatet
fleksibelt d.v.s. at både en og en_US bliver til engelsk.

Du kan også bruge request.getHeader("Accept-Language") fordi den returnerer
null hvis browseren slet ikke har sendt noget mens request.getLocale() hapser
default fra serveren - og vil ihvertfald synes at det var rart at vide
om det kommer fra client eller server. Den returnerer strenge a la "en-us,en;q=0.5"
og skal derfor også processes meget fleksibelt.

Du nævner selv client side løsning med JavaScript. Det er også en mulighed. Omend
jeg normalt helst vil undgå JavaScript.

En fjerde mulighed er at sætte noget IP adresse til land logik op. Det kræver en
del arbejde (det kan også være dyrt men der er gratis løsninger). Fordelen er
at alle de andre metoder primært identificerer sproget i softwaren og der er
rigtigt mange danskere som kører med engelske versioner af softwaren.
Avatar billede clausfod Nybegynder
17. juni 2004 - 10:02 #5
Nedenstående kode returnerer en-us på min maskine - hvorimod request.getLocale() og request.getHeader("Accept-Language") returnerer "da". Forvirret ?
Avatar billede clausfod Nybegynder
17. juni 2004 - 10:02 #6
<html>
<head>
    <title>Untitled</title>
</head>

<body>
<script>
if (navigator.appName == 'Netscape')
    var language = navigator.language;
else
    var language = navigator.browserLanguage;

var code = language.substring(0,4);

document.write("<P>Language = " + code);
</script>
<br>
<script>
var start = navigator.userAgent.indexOf('[');
if (start > -1) {
    var end = navigator.userAgent.indexOf(']');
    if (end > -1) {
        var language = navigator.userAgent.substring(start+1,end);
        document.write("<P>Language = " + language);
    }
     
} else document.write( "Language  no info available ");
document.write( "<br>user-agent :  " + navigator.userAgent);
</script>
</body>
</html>
Avatar billede arne_v Ekspert
17. juni 2004 - 10:28 #7
JS returnerer nok sproget i softwaren.

Accept-Language sættes i IE i:
  Tools
  Internet Options
  General
  Language

men al sund fornuft siger at de burde være ens ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB