DRB-IT / blacktiger-controller

The HTML/JavaScript/CSS client for blacktiger
0 stars 0 forks source link

Detektering af browser/OS sprog virker ikke længere i Chrome #232

Closed paf61 closed 7 years ago

paf61 commented 9 years ago

Websiden kommer op på engelsk i Chrome på dansk Windows med Chrome med danske menuer. Set på Windows 7 og 8.1. (Nogle brugere har slået auto-translate til i Chrome, men når siden vises på engelsk og auto-oversættes til eget sprog har det den bivirkning at password formatters forkert så der vises mellemrum.)

Problemet er ikke i IE 11, der detekteres sprog ok.

Jeg er ret sikker på at det har virket ok i Chrome tidligere.

michaelkrog commented 9 years ago

Jeg er næsten sikker på at dette er blevet løst i forbindelse med https://github.com/DRB-IT/blacktiger-controller/issues/231 som en del af version 2.2.4.

Vil du evt. prøve om det kan reproduceres når v2.2.4 er lagt op?

xToMMeRx commented 9 years ago

På build 2.2.6: Jeg har én pc hvor Chrome default åbner websiden på Dansk, og en anden pc hvor Chrome default åbner websiden på Engelsk.

Jeg har prøvet at ændre diverse regional og language settings på pc'en og sproget i Chrome, og ingen af delene slår igennem på websiden. (I tidligere releases fulgte den Chromes menu-sprog) Hvilken indstilling bruger du til at bestemme sproget når Chrome bruges?

I både IE11 og Microsoft Edge virker sprog fint ud fra regional settings.

michaelkrog commented 9 years ago

Jeg bruger følgende kode til detektering:

$translateProvider.determinePreferredLanguage(function () {
        var language;
        if (navigator && navigator.languages) {
            language = navigator.languages[0];
        } else {
            language = window.navigator.userLanguage || window.navigator.language;
            language = language.split('-');
            language = language[0];
        }
        return language;
    });

Det bibliotek der bruges til oversættelse har egentlig indbygget detektering af sprog, men jeg har af en eller anden grund valgt at implementere egen logik til det. De skriver da også selv følgende:

Since version 2.0 there's also a method determinePreferredLanguage() on the $translateProvider. This method tries to determine by itself what the preferred language would be. It searches for values in the window.navigator object in the following properties......... Please use this method on your own risk! Be aware that each browser can return different values on these properties.

Jeg har lavet en plnkr der viser værdierne af de forskellige sprog-variabler. Prøv at tilgå den på følgende URL med de 2 forskellige PC'ere og angiv resultatet her i tråden: http://plnkr.co/edit/unLD4f5SZvzg9ZZ63zCW?p=preview

Jeg ser følgende med Chrome på Mac:

navigator.languages[0]:da
navigator.language:da
navigator.browserLanguage:undefined
navigator.systemLanguage:undefined
navigator.userLanguage:undefined
xToMMeRx commented 9 years ago

På min arbejdspc melder Chrome følgende når menu sproget i Chrome er sat til dansk men blacktiger-controller stadig vælger engelsk:

navigator.languages[0]:en-US
navigator.language:da
navigator.browserLanguage:undefined
navigator.systemLanguage:undefined
navigator.userLanguage:undefined

IE11 på samme pc hvor blacktiger-controller vælger Dansk får jeg følgende:

navigator.language:da-DK
navigator.browserLanguage:en-US
navigator.systemLanguage:da-DK
navigator.userLanguage:da-DK

På min tablet hvor Chrome er sat til dansk menu men blacktiger-controller vælger engelsk:

navigator.languages[0]:da-DK
navigator.language:da
navigator.browserLanguage:undefined
navigator.systemLanguage:undefined
navigator.userLanguage:undefined

Samme tablet i IE11 viser blacktiger-controller dansk:

navigator.language:da-DK
navigator.browserLanguage:en-US
navigator.systemLanguage:da-DK
navigator.userLanguage:da-DK

Samme tablet i den nye Microsoft Edge (Windows 10) browser viser blacktiger-controller dansk:

navigator.language:da-DK
navigator.browserLanguage:undefined
navigator.systemLanguage:undefined
navigator.userLanguage:undefined

Det tyder altså på at det mest pålidelige er navigator.language, og den kan så både vise da og da-DK.

michaelkrog commented 9 years ago

Firefox på Mac

navigator.languages[0]:da
navigator.language:da
navigator.browserLanguage:undefined
navigator.systemLanguage:undefined
navigator.userLanguage:undefined

Safari på Mac

navigator.language:da-dk
navigator.browserLanguage:undefined
navigator.systemLanguage:undefined
navigator.userLanguage:undefined

Chrome på Android 5

navigator.languages[0]:da-DK
navigator.language:da
navigator.browserLanguage:undefined
navigator.systemLanguage:undefined
navigator.userLanguage:undefined

Ipad med ios 8.3

navigator.language:da-dk
navigator.browserLanguage:undefined
navigator.systemLanguage:undefined
navigator.userLanguage:undefined

Du har ret. navigator.language ser ud til at være blevet de facto standard.

michaelkrog commented 9 years ago

Hvad siger i til at jeg lader den huske det sprog man evt vælger i listen så den bliver på der efter rekord? Er det ikke lidt det man forventer?

xToMMeRx commented 9 years ago

Jeg kan komme på ét scenarie hvor det vil være generende hvis den husker det: Sale i Sverige hvor der f.eks. er en spansktalende menighed. Når den spanske menighed kommer til møde ændrer de sproget til spansk, så husker websiden det, og den næste menighed der kommer bliver nødt til at skifte tilbage til Svensk.

Hvis det forbliver som det er idag hvor den blot følger pc'ens sprog, så kan man indstille pc'en til det sprog flest taler, og så kan de få fremmedesprogede menigheder ændre sproget i browseren når de bruger salen.

Umiddelbart synes jeg det er fint at den blot følger pc'ens indstillinger.

xToMMeRx commented 9 years ago

Til gengæld har jeg lige haft en på Færøerne som har spurgt om det ikke bliver gemt i en cookie. Så jeg ved ikke lige hvad der er bedst.

Et andet forslag som han kom med var om man ikke kunne lave websiden så man kan skrive sprogkoden i URL'en og på den måde kan lave et link direkte til det rigtige sprog. Og det er jeg faktisk mere tilhænger af.

Jeg tænker f.eks. at den automatisk vælger sprog ud fra browseren hvis der ikke se specificeret noget i URL'en, men hvis der er specificeret noget i URL'en så vælger den dét sprog og ignorerer browser settingen.

michaelkrog commented 9 years ago

Jeg synes også den er svær.

De har i deres profil på computeren valgt deres foretrukne sprog, fx Dansk. I nogen tilfælde foretrækker man så et andet sprog i telesal end det sprog alt det andet på skærmen vises i.

Det får mig til at tænke om det ikke er en løsning at foreslå dem at oprette en ekstra profil på computeren i de sale hvor de vil skifte sprog i telesal? Så får de hele brugerfladen på det sprog de vil have.

Derudover kunne vi gemme sprogvalget i browseren som ham fra Færøerne forslog. Så behøver man ikke have valgt det rette sprog i computerens profil for at få det sprog man vil have i telesal. Jeg forestiller mig at man nogen gange vil have en engelsk profil som standard, men gerne vil have at den viser fx Dansk hver gang alligevel.

michaelkrog commented 9 years ago

Nu når jeg læser det jeg skrev igen, så kan jeg se at jeg 1) ikke svarede på dit forslag og 2) ikke forklarede mit særlig tydeligt.

Mht. dit forslag, så har vi allerede landekode i starten af url'en. Vi kunne udvide det til at optionelt også at have sprog, f.eks. dk.telesal.org(computerens sprog), da-dk.telesal.org(dansk), es-dk.telesal.org(spansk). Det er, nu når jeg tænker mere over det, en meget let og forståelig løsning. Eneste ulempe jeg kan komme i tanke om er at man ikke permanent kan vælge et andet sprog end det der er valgt i computerens profil UDEN at vide hvordan url'en skal udformes.

Mht. til det jeg foreslog med computer profiler, så mente jeg IKKE at de skulle oprette en ny computer profil i hver menighed de vil ændre sprog. Lad mig forklare med nogle korte scenarier hvad jeg mente. Udgangspunktet er at det sprog man manuelt vælger i sprogvælgeren huskes fremover.

Scenarie 1: Dansk m. med dansk computer profil I dette tilfælde skal den automatisk vælge dansk.

Scenarie 2: Dansk m. med engelsk computer profil I dette tilfælde skal den automatisk vælge engelsk, men hvis de vælger dansk skal deres valg huskes fremover.

Scenarie 3: Spansk gruppe der låner Svensk m. computer med svensk computer profil I dette tilfælde kan de 1) leve med at skifte sprog i sprogvælgerene hver gang de skifter mellem sprogene eller 2) oprette en ekstra computer profil, som de f.eks. kan sætte til spansk. Dermed har den spanske gruppe en helt spansk brugerflade og Telesal vælger automatisk spansk.

Scenarie 4: Færøsk m. med skiftende behov for dansk eller færøsk Også i dette tilfælde kan de 1) leve med at skifte sprog i sprogvælgeren eller 2) oprette en ekstra computer profile - én Færøsk og én Dansk. Telesal vælger automatisk det rigtige sprog.

Denne løsning har den ulempe at de evt. skal oprette nye profiler de steder de vil kunne skifte vilkårligt mellem sprog.

Hvad synes i?

paf61 commented 8 years ago

Den skal bruge det sprog man har valgt i OS, og ikke huske valget. De få fremmedsprogede grupper må vælge sprog hver gang, I mange tilfælde forstår de også landets sprog og behøver ikke nødvendigvis skifte.