setlocale()

Door Yearupie Achternaamloos, 12 jaar geleden, 12.135x bekeken

Beste php'ers,

Ik heb deze tutorial geschreven omdat veel mensen niet weten hoe ze tijden in het Nederlands kunnen weergeven. Dit is eigenlijk heel simpel en dat ga ik jullie ook uitleggen.

Gesponsorde koppelingen

Inhoudsopgave

  1. Hoe werkt het?
  2. Let op, dit werkt niet overal!

 

Er zijn 19 reacties op 'Setlocale'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Victor Php
Victor Php
12 jaar geleden
 
0 +1 -0 -1
Ziet er leuk uit..
Idd handiger dan al die arrays met maanden etc. :P
Karl Karl
Karl Karl
12 jaar geleden
 
WOW, wat een tutorial, geweldig, ahum ahum.
Als je een tutorial wilt schrijven, schrijf dan in ieder geval meer dan er op php.net staat (en kwalitatief goed).
Volgens mij heb jij niet eens op php.net gekeken. Want oeps, tja, nl_NL werkt niet op Windows. Maar gelukkig, php.net weet een heleboel, dat staat namelijk al in het tweede voorbeeld: setlocale.
En als je even verder had gekeken, dan had je deze snippet al gevonden, die wel aangeeft dat het met Windows niet goed gaat.
(Edit: Jammer dat je niet naar een specifieke voorbeeld kan linken.)
FRizZL isMijnUsername
FRizZL isMijnUsername
12 jaar geleden
 
1 +1 -0 -1
Jezus Karl, lekker positief! :-)

Zoals hij aangeeft, Yearupi, werkt het niet onder windows en had je dat na even zoeken kunnen vinden op het internet. Maar voor de rest, wél een goed idee!
Yorick17
yorick17
12 jaar geleden
 
0 +1 -0 -1
ik wist idd niet dat dit kon
Jordy nvt
Jordy nvt
12 jaar geleden
 
1 +1 -0 -1
Het valt me altijd op dat er niet snel positief wordt gereageerd op tutorials. Ik bedoel, niet iedereen is toch de beste van de wereld? Dit is een goede tut.
Gerben Jacobs
Gerben Jacobs
12 jaar geleden
 
1 +1 -0 -1
LC_ALL verandert niet alleen je taal wat betreft tijd, maar ook je valuta, en punten en al dat soort instellingen.
TJVB tvb
TJVB tvb
12 jaar geleden
 
0 +1 -0 -1
Jordy, dat is omdat er veel tutorials etc. gepost worden die geen of weinig toegevoegde waarde hebben. Daarnaast zijn ze ook nog wel eens voorzien van fouten.
Toby hinloopen
toby hinloopen
12 jaar geleden
 
0 +1 -0 -1
Nice. Wist ik niet.

Beetje kort, maar wel handig om te weten.
 
0 +1 -0 -1
Ik heb nog een extra pagina gemaakt voor een Windows server.
Naam Loos
Naam Loos
12 jaar geleden
 
1 +1 -0 -1
Simpel maar goede tut!
Wesley Overdijk
wesley Overdijk
12 jaar geleden
 
0 +1 -0 -1
wauw wat een super tutorial! life changing epic gewoon!
Hipska BE
Hipska BE
12 jaar geleden
 
0 +1 -0 -1
Werkt dus niet op Ubuntu met Zend Server ...

Ten eerste moet je daar nl_BE.utf8 of nl_NL.utf8 kiezen, en dan nog staat de tijd in het engels bij mij..
Yea Rupie
Yea Rupie
12 jaar geleden
 
0 +1 -0 -1
Hoe roep je de tijd aan? gebruik je wel strftime() ?
Hipska BE
Hipska BE
12 jaar geleden
 
0 +1 -0 -1
He vreemd, met strftime doet ie het..

Waarom dan niet met DateTime::format() ?
Yea Rupie
Yea Rupie
12 jaar geleden
 
0 +1 -0 -1
Als je setLocale() gebruikt, wil je eigenlijk een van deze dingen:
Quote:
LC_ALL for all of the below
LC_COLLATE for string comparison, see strcoll()
LC_CTYPE for character classification and conversion, for example strtoupper()
LC_MONETARY for localeconv()
LC_NUMERIC for decimal separator (See also localeconv())
LC_TIME for date and time formatting with strftime()
LC_MESSAGES for system responses (available if PHP was compiled with libintl)
Hipska BE
Hipska BE
12 jaar geleden
 
0 +1 -0 -1
Nou ja, ik gebruik nu toch Zend_Locale en Zend_Date ondertussen. Dan ben je toch niet meer systeem afhankelijk.
Karl Karl
Karl Karl
12 jaar geleden
 
0 +1 -0 -1
Want die zendzooi laad een enorme xml bestand in, waar je maar een paar regels van gebruikt die gewoon de Engelse return waarden omzet in Nederlands. Dan kan je dus net zo goed gewoon gebruik maken van een simpel arraytje.
Hipska BE
Hipska BE
12 jaar geleden
 
0 +1 -0 -1
En Zend_Cache ook voor de performance ervan .. jaja, we weten allemaal al dat we het voor jou heel erg precies moeten gaan vermelden.

En nog even een bronvermelding ook: Zend_Date API Overview en ga naar 'Speed up Date Localization and Normalization with Zend_Cache'
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen


6 jaar geleden
 
0 +1 -0 -1
setlocale() kan gebruikt voor een transcoding functie iconv() die werkt afhankelijk van de ingestelde locale. Dan hoef je niet handmatig een mapping-array te gebruiken om bijvoorbeeld karakters met diakritische tekens om te zetten naar ASCII karakters, want dat is er al.

Als je een tekst als 'Cliënt' vertaald wilt hebben naar 'Client', voor bijvoorbeeld friendly URL's of XML tags en attributen dan is dit wel handig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
  setlocale(LC_CTYPE, 'nl_NL.UTF-8');
  echo iconv('UTF-8', 'ASCII//TRANSLIT', "Cliënt");
?>

Merk op dat een waarschuwing wordt gegeven in de documentatie op PHP.net.
Je kunt nooit 100% zeker zijn dat de instelling behouden blijft gedurende je script, want de locale instelling kan overschreven worden door andere threads, afhankelijk van de gebruikte configuratie. Eventueel kan je vooraf de locale controleren met iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  echo setlocale(LC_CTYPE, NULL);
?>

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Hoe werkt het?
  2. Let op, dit werkt niet overal!

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.