Dansk kalender

Dansk kalender

ved Martin Kristensen -
Antal besvarelser: 6

Jeg har installeret moodle 1.4.3 med dansk sprogpakke på en local pc til test.
Jeg har valgt dansk som sprog i konfiguration, men en ting undrer mig:
Alle de steder hvor der er navne på måneder fx i kalenderen (overskrifter, dropdownbokse) er disse navne på engelsk, uanset hvilket sprog der er valgt i konfigurationen.

Dagene er på dansk (hvis dansk er valgt), så jeg forstår ikke hvor i konfigurationen/koden jeg  ændrer de engelske månedsnavne til danske?

Er det PHP på Apache serveren, der ikke afleverer andet end engelsk, her på sitet er alt jo på dansk.
Er der en venlig sjæl, der kan hjælpe?

Venlig hilsen Martin Kristensen

I svar til Martin Kristensen

Ang: Dansk kalender

ved Christian Wahl -
Man kan godt lave datoer og navne på dansk - det kræver bare at man skriver den rigtige kode... Se på funktionen setlocale(): http://dk2.php.net/manual/en/function.setlocale.php

Det er ikke helt så nemt. Først skal man fortælle Apache at man gerne vil have det hele på dansk ved f.eks. at skrive setlocale(LC_ALL, 'da_DK'); først i sin kode. Herefter skal man sørge for at skrive sine dato-koder rigtigt. F.eks. skal man ikke skrive $aktuelleMaaned=date(M); men $aktuelleMaaned=strftime("%B"); for at vise navnet på måneden -- og det giver jo rigtig meget mening.

Jeg ved ikke hvordan det ser ud for Moodle, men jeg har søgt i koden efter "setlocale" og har ikke lige umiddelbart fundet denne funktion brugt. Mht. brugen af de rigtige dato-koder har jeg ikke noget overblik.tankefuld
I svar til Christian Wahl

Ang: Dansk kalender

ved Martin Kristensen -

Det lyder mærkeligt at man skal ind over Apache for at få månedsnavne på det valgte sprog. Man har jo typisk ikke adgang til dette ved alm. hostning af et domæne på et webhotel. Det må da være konfigurerbart inde fra Moodle ??
Hilsen Martin

I svar til Martin Kristensen

Ang: Dansk kalender

ved Christian Wahl -
Ja, det var lige mit umiddelbare bud - jeg har bøvlet med det før. Jeg har ikke lige haft mulighed for at lede mere i koden, men vil gerne lige følge op på det.

Man kan jo siger at de engelsksprogede lande kan være lige glade med hvilken kode de bruger. Der er mange andre systemer som f.eks. OS Commerce der har samme problem.
I svar til Christian Wahl

Ang: Dansk kalender

ved Christian Wahl -
Her kommer forklaringen:

For at lave danske datoer på Apache med PHP skal man bruge to funktioner. Den ene er setlocal() og den anden er strftime().

setlocal() skal have to variabler med; en for hvilken kategori man vil ændre sprog i og en for sprog. Kategorien kan man som regel bare sætte til LC-ALL - så tager man alt med. Lidt mere vanskeligt er det med sproget; her er der forskellige muligheder afhængigt af hvilken server man har... setlocal() kan se ud som følger (og der er sikkert flere muligheder...):
setlocal(LC_ALL,'da');setlocal(LC_ALL,'da_DK');setlocal(LC_ALL,'da-DK');setlocal(LC_ALL,'dnk_DNK');setlocal(LC_ALL,'danish');setlocal(LC_ALL,'da_DK.ISO8859-1');setlocal(LC_ALL,'da:DK.ISO_8859-1');
Jeg har selv benyttet de to sidste på to forskellige freeBSD-servere, så jeg kan ikke lige se noget system i det.

strftime() kan sættes op på mange måder afhængig af hvordan ens dato eller tid skal se ud. Det kunne f.eks. være "echo strftime("%e. %B %Y");" for at skrive "27. Maj 2005" - find flere koder på http://dk2.php.net/manual/en/function.strftime.php

Konkrete tiltag hvis du vil have danske månedsnavne:
Indsæt
setlocal(LC_ALL,'den-danske-kode-der-passer-din-server');
på en tom linje lige under "<?php" i filen calendar/lib.php.

Jeg har ikke tjekket om det slår igennem på alle datoer og kalendere i hele moodle men det fungerer i hvert fald på kursuskalenderen på forsiden og kurserne. Konsekvensen af at sætte setlocal() ind er at der er danske navne på månederne uanset det valgte sprog...

Det er testet på 1.5 ALPHA
I svar til Christian Wahl

Re: Ang: Dansk kalender

ved Jacob Strue -

Som supplement kan jeg fortælle at det er

setlocale(LC_ALL, 'Danish_Denmark.1252');

der løste det for min Moodle, som kører på en Windows Server.