„Locales“ Phänomen
Ich versuche den ganzen Tag hinter das Geheimnis zu kommen, warum ein und dieselbe PHP Testdatei je nach Lust und Laune auf dem Server des Providers eines meiner Kunden verschiedene Ergebnisse liefert. Es geht um setlocale(), dass ich auf „de_DE“stellen will, damit ich deutsche Wochentage und Monatsnamen habe.
Mittlerweile herausgefunden habe ich, dass bei diesem Provider „de_DE“ überhaupt nicht geht, sondern dass es „de“ heißen muss. Trotzdem habe ich nach einigen Reloads alle paar Minuten mal deutsche, dann wieder englische Wochentage:


Ich bin ratlos und konnte bis jetzt kein Muster erkennen – und der Support konnte bis jetzt auch nicht weiterhelfen.
Ist irgendein Leser dieses Weblogs vielleicht schlauer…?
Ähnliche Beiträge:
Links und barrierefreies Webdesign für Farbenblinde „Ich bin auf Go, es kann losgehen!“
Kommentare:
Bei den Kommentaren handelt es sich um fremde Inhalte, die sich „esse est percipi“ nicht zueigen macht. Verantwortlich für den Inhalt eines Kommentars ist der jeweilige Verfasser.
In den Kommentaren auf dieser Website ist u. a. Folgendes zu lesen (vielleicht hilft Dir das irgendwie weiter):
On Windows XP (maybe W2K too) set it to German, and on an Unixserver it work with de. Primary I was confused, cause everyone say it should be de_DE. No matter, the settings above works perfektly.
Hallo Michael,
Vielleicht hilft Dir dieser Thread weiter
Das Auflisten mehrerer möglicher Einstellungen könnte vieleicht weiterhelfen, also setlocale(..., "de_DE", "de", "ge"); Letztendlich hatte ich mit den Locales jedoch schon so oft Probleme, dass ich das seit langem prinzipiell selbst löse. $w = array("Sonntag", "Montag", ...); und dann $w[date("w")]; Anderes Beispiel: Die Regex w sollte – auf Deutsch gestellt – auch Umlaute finden, tut sie aber nie. Also bleibt es trotz Locale bei [wÄÖÜäöüß]
Die einzige Einstellung, die funktioniert, ist de. Aber das merkwürdige ist ja nicht, dass es nur mit de funktioniert, sondern dass sich das Verhalten des Webservers alle paar Minuten ändert, ohne dass man irgendein Muster erkennen könnte.
Wenn man die Datei datumstest.php aufruft, kann es sein, dass die Locale gesetzt ist, dann habe ich einen deutschen Wochentag, Sekunden später beim erneuten Aufrufen kann es wieder sein, dass die Locale nicht gesetzt ist und ich lesen muss: Eingestelltes Locale ist ‘’
Eben habe ich die Datei zehnmal im Browser aufgerufen, hier die Ergebnisse für Eingestelltes Locale ist:
‘’
‘’
‘de’
‘de’
‘’
‘de’
‘de’
‘de’
‘de’
‘’
Ich vermag da keine Logik zu erkennen. Und dummerweise hat sich der Support nach drei Telefonaten gestern vormittag und einer E-Mail von gestern nachmittag immer noch nicht zurückgemeldet…
In Zukunft werde ich wohl – wie Thiemo – wieder auf setlocale() verzichten und Datumsdinge mit date() statt mit strftime() machen.
vielleicht solltest du den rückgabewert von setlocale prüfen. setlocale kann ja auch false zurueckgeben; echo FALSE; bringt einen leeren string. teste also den rueckgabewert bevor du dich drauf verlaesst.
dieses komische behavior koennte daraus (comment 27-Jul-2001 09:34) resultieren. schalt doch mal E_ALL bei deinem script an – das bringt vielleicht ein paar informationen?
Kommentar schreiben:
FAQ (Häufig gestellte Fragen)
Kommentare:
- Michael Preidel zu CookieCrumble Testflight jetzt auch für macOS
- Götz zu CookieCrumble Testflight jetzt auch für macOS
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Henning zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
Schlagwörter