mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 21:11 Benutzername: Passwort: Auto-Login

Thema: [php]setlocale() vom 20.06.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [php]setlocale()
Autor Nachricht
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mi 20.06.2007 12:47
Titel

[php]setlocale()

Antworten mit Zitat Zum Seitenanfang

Tach. Also, über setlocale() lässt sich php über die entsprechende locale funktion des Betriebssystems - lokalsieren - . Jetzt gibts aber ein wirrwar an language codes, einmal die nach ISO 639 (bspw. "ger") und nach RFC 1766 ("de-DE")-

Die PHP-Doku selbst probiert verschiedene Codes, um alle Plattformen zu befriedigen, bspw. 'de_DE@euro', 'de_DE', 'de', 'ge' ( man beachte den Unterstrich ) .

Gibts irgendwo ne Übersicht, welches OS welche Namensräume unterstützt?

// ich hab noch rausgefunden, dass windows kürzel nach ISO 3166 unterstützt.


Zuletzt bearbeitet von am Mi 20.06.2007 13:02, insgesamt 1-mal bearbeitet
 
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Mi 20.06.2007 15:09
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
einmal die nach ISO 639 (bspw. "ger")

Die sind aber obsolete.
ISO 639 Language Codes

RFC 1766

Zitat:
// ich hab noch rausgefunden, dass windows kürzel nach ISO 3166 unterstützt.

M$ Language Strings
M$ Country- and Region-Strings

setlocale() ist von dem System abhängig auf dem PHP läuft. Es wird die Systemfunktion setlocale aufgerufen.
Manpage (GNU) http://www.die.net/doc/linux/man/man3/setlocale.3.html
Manpage (BSD) http://www.hmug.org/man/3/setlocale.php
UNIX Specification http://www.opengroup.org/onlinepubs/007908799/xbd/locale.html
Wo du jetzt eine Liste mit allen möglichen Locale-Angaben findest, weiß ich auch nicht. Auf einem POSIX-System ist das abhängig von der C-Library. Unter Windows hab ich keine Ahnung, wie das läuft...
Dazu fällt mir noch ein, daß Solaris manchmal scheinbar aus der Reihe tanzt. Bei LC_TIME ist mir das aufgefallen. Obwohl der C Standard eindeutig festlegt, daß die Woche mit Montag beginnt, ist es bei Solaris meist ein Sonntag.

Aber wie auch immer: Wo genau ist das Problem?
Wenn ich setlocale() einsetze, dann übergebe ich immer mehrere Möglichkeiten:
$loc = setlocale( LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu', 'de', 'ge' );
So funktioniert das dann eigentlich immer ganz gut.

Aber man könnte natürlich vorher auch einfach das System nach der korrekten locale fragen.
Zumindest auf einem POSIX-System (also Linux/Unix/OS X/...) sollte dir folgendes die verfügbaren Locales ausgeben:
Code:
<?php system( 'locale -a' ); ?>

Was man da allerdings auf Windows machen kann, weiß ich nicht.
Mit Windows und dessen Systemfunktionen weiß ich nicht viel...
Schätzungsweise wäre die msvcrt.dll für solche Spielchen nötig.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mi 20.06.2007 17:26
Titel

Antworten mit Zitat Zum Seitenanfang

Danke! Ich schreib nen Wrapper um die Date und Time-Funktionen mit ner OOP-Api ähnlich Date() in Javascript. Daher brauch ich ein Universalkürzel, das plattformabhängig die korrekten Parameter setzt.

Da das international funktionieren soll, brauch ich nicht nur die Beispiele aus der PHP-Doku, sondern eben alle möglichen Kürzel für alle möglichen Länder. Deshalb *zwinker*
 
 
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.