Teil von  SELFPHP
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Datumsangaben in Deutsch anzeigen


Systemvoraussetzung

  • Linux
  • Windows
  • PHP 3
  • PHP 4
  • PHP 5

Datei(en)

germanDate.php, date.php, localInstall.php

Problem

Sie möchten gerne einen Kalender mit den Monatsnamen auf Ihrer Website präsentieren, allerdings sollen deutsche Namen für die Monate genommen werden.


Lösung

Sie könnten jetzt ein Array mit zwölf Index-Einträgen bilden und den jeweiligen Monatsnamen in jedes Arrayelement speichern. Kompliziert wird die Sache aber, wenn Sie z. B. zwölf verschiedene Sprachen auf Ihrer Seite anbieten – das wird zwar selten vorkommen, im Fall des Falles würde aber eine Menge Schreibarbeit auf Sie zukommen.

Einfacher geht es, wenn Sie einfach den Ländercode umstellen und sich den Monatsnamen in deutscher Ausgabe vom System liefern lassen. Dann könnten Sie hundert Sprachen anbieten, der administrative Aufwand wäre dennoch gering.

Zuerst müssen wir herausfinden, auf welchem Betriebssystem (24) das Beispielskript läuft. Da wir nicht jede Windowsversion abfragen wollen, nehmen wir lediglich den gekürzten Teil (WIN) zur Überprüfung. Der Ländercode ist ausnahmsweise zwischen Linux-und Windowsrechnern verschieden.

Haben wir das Betriebssystem erkannt, können wir den Ländercode mit setlocale() (29) neu setzen und erhalten als Rückgabewert den eingestellten Ländercode. Erschrecken Sie nicht, denn er kann von unseren Voreinstellungen (siehe Beispielausgabe) abweichen.

Jetzt benötigen wir lediglich strftime() (34), das mit dem Paramter %B, den Monatsnamen ausgehend von der zuvor gesetzten Ländereinstellung liefern kann.

24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
if (strtoupper(substr(PHP_OS03)) === 'WIN')
    
$localeCode 'ge';
else
    
$localeCode 'de_DE';

$typ setlocale(LC_TIME,$localeCode);

echo 
'Aktueller Ländercode: ' $typ "<br>\n";

for(
$x=1;$x<=12;$x++){
    echo 
strftime("%B",mktime(000$x1date("Y"))). "<br>\n";
}
Beispiel 2.19: germanDate.php


Ausgabe

Aktueller Ländercode: German_Germany.1252
Januar
Februar
März
April
Mai
Juni
Juli
August
September
Oktober
November
Dezember


Wie Sie sehen, ist das keine Hexerei und der Aufwand minimal. Oft ist auf Webseiten auch das aktuelle Datum in der Form „Sonntag, 26. März 2006“ zu sehen. Das sieht schön aus und ziert die Webseite – ob es sinnvoll ist oder nicht, sei hier einfach mal dahingestellt. Eine solche Ausgabe zu erzeugen, sollte für Sie nun eigentlich kein Problem mehr sein – oder doch? Sie können zwar den Monatsnamen in deutscher Schrift ausgeben, aber woher bekommen Sie den Tag?

Es sind die Parameter, die uns helfen. Der Parameter %B bei strftime() hat uns bereits den Monatsnamen geliefert. Da so ein Parameter für die Monate existiert, sollte es auch einen für Tage geben. Dem ist tatsächlich so! Der Parameter %A liefert uns den Tag. Wenn wir jetzt noch ein wenig die Ausgabe formatieren, erhalten wir als Ergebnis das gewünschte Datum.


24:
25:
26:
27:
28:
29:
30:
31:
if (strtoupper(substr(PHP_OS03)) === 'WIN')
    
$localeCode 'ge';
else
    
$localeCode 'de_DE';

setlocale(LC_TIME,$localeCode);

echo 
strftime("%A, %d. %B %Y");  
Beispiel 2.20: date.php


Ausgabe

Sonntag, 26. März 2006

Im folgenden Beispiel sehen Sie eine kleine Auswahl für andere Länder, denn vielleicht möchten Sie den Besuchern Ihrer Webseite einen besonderen Service bieten und ihnen das jeweilige Datum in ihrer Landessprache anzeigen. Bitte bedenken Sie aber, dass die verschiedenen Sprachen je nach Betriebssystem anders deklariert werden müssen (siehe Türkei oder Polen).


01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
if (strtoupper(substr(PHP_OS03)) === ’WIN’)
    
$os ’win’;
else
    
$os ’linux’;
    
$countries = array(’de’,’fr’,’fi’,’it’,’tr’,’hu’,’pl’);
$lc[’win’][’de’] = array(’ge’,’Deutschland’);
$lc[’win’][’fr’] = array(’fr’,’Frankreich’);
$lc[’win’][’fi’] = array(’fi’,’Finnland’);
$lc[’win’][’it’] = array(’it’,’Italien’);
$lc[’win’][’tr’] = array(’turkish’,’Türkei’);
$lc[’win’][’hu’] = array(’hu’,’Ungarn’);
$lc[’win’][’pl’] = array(’polish’,’Polen’);

$lc[’linux’][’de’] = array(’de_DE’,’Deutschland’);
$lc[’linux’][’fr’] = array(’fr_CA’,’Frankreich’);
$lc[’linux’][’fi’] = array(’fi_FI’,’Finnland’);
$lc[’linux’][’it’] = array(’it_IT’,’Italien’);
$lc[’linux’][’tr’] = array(’tr_TR’,’Türkei’);
$lc[’linux’][’hu’] = array(’hu_HU’,’Ungarn’);
$lc[’linux’][’pl’] = array(’pl_PL’,’Polen’);

for(
$x=0;$x<count($countries);$x++)
{
    
setlocale(LC_TIME$lc[$os][$countries[$x]][0]);
    echo 
strftime(%A, %%%Yin ’) . $lc[$os][$countries[$x]][1];
    echo 
<br>;
}


Ausgabe

Sonntag, 26 März 2006, in Deutschland
dimanche, 26 mars 2006, in Frankreich
sunnuntai, 26 maaliskuu 2006, in Finnland
domenica, 26 marzo 2006, in Italien
Pazar, 26 Mart 2006, in Türkei
vasárnap, 26 március 2006, in Ungarn
niedziela, 26 marzec 2006, in Polen

Unter Linux haben Sie die Möglichkeit, sich alle unterstützten Ländercodes anzeigen zu lassen. Das folgende kleine Skript listet Ihnen alle Ländercodes auf. Dabei wird die Ausgabe nicht direkt erzeugt, sondern mit ob_start() (24) gepuffert.

Der Shell-Befehl (25) fragt hier die Ländercodes ab, und der Inhalt der Ausgabe wird dann mit ob_get_contents() (26) in die Variable gespeichert. Zum Schluss müssen wir lediglich den Inhalt (ein Array!) ausgeben (29).

Die Ausgabe wurde hier in einer Tabelle dargestellt, entspricht also nicht der Ausgabe im Browser (dort sollten Sie den Quelltext öffnen, um die Ausgabe besser sehen zu können).


24:
25:
26:
27:
28:
29:
ob_start();
system('locale -a'); 
$lc ob_get_contents();
ob_end_clean();

print_r($lc);
Beispiel 2.21: localInstall.php


Ausgabe formatiert

af_ZA
ar_AE
ar_BH
ar_DZ
ar_EG
ar_IN
ar_IQ
ar_JO
ar_KW
ar_LB
ar_LY
ar_MA
ar_OM
ar_QA
ar_SA
ar_SD
ar_SY
ar_TN
ar_YE
be_BY
bg_BG
bokmal
bokmål
br_FR
bs_BA
ca_ES
ca_ES@euro
catalan
croatian
cs_CZ
cy_GB
czech
da_DK
danish
dansk
ga_IE@euro
ko_KR
ko_KR.euckr
ko_KR.utf8
korean
korean.euc
kw_GB
lithuanian
lt_LT
lv_LV
mi_NZ
mk_MK
mr_IN.utf8
ms_MY
mt_MT
nb_NO
nb_NO.ISO88591
nl_BE
nl_BE@euro
de_AT
de_AT@euro
de_BE
de_BE@euro
de_CH
de_DE
de_DE.utf8
de_DE@euro
de_LU
de_LU@euro
deutsch
dutch
eesti
el_GR
el_GR.utf8
en_AU
en_BW
en_CA
en_DK
en_GB.utf8
en_HK
en_IE
en_IE@euro
en_IN
en_NZ
en_PH
en_SG
en_US
en_US.utf8
en_ZA
en_ZW
es_AR
es_BO
es_CL
es_CO
nl_NL
nl_NL@euro
nn_NO
oc_FR
pl_PL
polish
portuguese
pt_BR
pt_PT
pt_PT@euro
ro_RO
romanian
ru_RU
ru_RU.koi8r
ru_RU.utf8
ru_UA
russian
sk_SK
sl_SI
es_CR
es_DO
es_EC
es_ES
es_ES@euro
es_GT
es_HN
es_MX
es_NI
es_PA
es_PE
es_PR
es_PY
es_SV
es_US
en_GB
es_UY
es_VE
estonian
et_EE
eu_ES
eu_ES@euro
fa_IR.utf8
fi_FI
fi_FI@euro
finnish
fo_FO
fr_BE
fr_BE@euro
fr_CA
fr_CH
fr_FR
fr_FR.utf8
fr_FR@euro
fr_LU
slovak
slovene
slovenian
spanish
sq_AL
sr_YU
sr_YU@cyrillic
sv_FI
sv_FI@euro
sv_SE
swedish
ta_IN
te_IN
tg_TJ
th_TH
no_NO
norwegian
nynorsk
thai
fr_LU@euro
français
french
galego
galician
german
gl_ES
gl_ES@euro
greek
gv_GB
he_IL
hebrew
hi_IN.utf8
hr_HR
hrvatski
hu_HU
hungarian
icelandic
id_ID
is_IS
it_CH
it_IT
it_IT@euro
italian
iw_IL
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
japanese.sjis
ka_GE
kl_GL
ga_IE
tl_PH
tr_TR
turkish
uk_UA
ur_PK
uz_UZ
vi_VN.utf8
wa_BE
wa_BE@euro
yi_US
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.utf8
zh_TW
zh_TW.euctw
zh_TW.utf8


 


Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!

Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.


 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner LeaseWeb Germany GmbH
Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


DM Solutions
Microsoft Deutschland GmbH
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt