Anmerkung: Dies ist kein Duplikat von PHP date() für eine mehrsprachige Website übersetzen . Ich habe es gelesen!
Es tut mir leid, ich muss erst einmal erklären, wie mein Rahmen funktioniert, damit Sie verstehen können, wo genau mein Problem liegt:
Hier ist, wie mein Php-Code funktioniert (grobe Grundsätze). Nehmen wir als Beispiel jemanden, der die URL sehen möchte http://myweb.com/valid.php
:
- in der Datei
valid.php
der Code enthält die richtige Klassendefinition, dann erstellen Sie ein Objekt und rufen die Funktiondisplay()
die die Seite anzeigt. - in der Datei
valid.php
Wenn das Objekt erstellt wird, analysiert es den Host, und im Host befindet sich die Sprache (http://
us
.myweb.com/
,http://
cn
.myweb.com/
,http://
fr
.myweb.com/
...) und die Standardsprache (falls keine gefunden wurde) ist Englisch - dann lade ich eine zwischengespeicherte Php-Datei, in der die Übersetzungen enthalten sind. Dies ist eine
translation
Objekt, das ich aufrufe$t
kurzum - und von nun an, wann immer ich eine Übersetzung brauche, mache ich einfach Dinge wie
$t->get('my_string')
.
Nehmen wir ein Beispiel mit 2 Sprachdateien:
- 2 Sprachdateien:
cache.us.php
ycache.fr.php
- in
cache.us.php
haben Sie eine Zeile wie diese:$thanks_for_the_fish = "Thanks for the fish"
. - in
cache.fr.php
haben Sie eine Zeile wie diese:$thanks_for_the_fish = "Merci pour le poisson"
. - Ich baue meine Seite auf, füge die richtige Sprachdatei ein und rufe dann
$t->get('thanks_for_the_fish')
und es wird übersetzt.
Jetzt habe ich ein Problem mit der Datumsformatierung. Mit dem kurzen Datumsformat ist das kein Problem:
- in
cache.us.php
:$short_date_format = "m/d/Y, H:i"
. - in
cache.fr.php
:$short_date_format = "d/m/Y à H:i"
.
Aber mit lang Datumsformat, ich arbeite gerade an der französischen Sprache und habe mit etwas wie:
- in
cache.fr.php
:$long_date_format = "%s, %d %s %d"
. - dann alle Tage:
$sunday = "dimanche"
,$monday = "lundi"
und so weiter - dann in meinem Übersetzungscode:
Etwa so (lesen Sie aufmerksam den Kommentar im Code, meine Frage steht darin!)
static private $_TabStrDaysOfWeek = array(
0 => 'sunday',
1 => 'monday',
...,
6 => 'saturday'
);
public function translateDate($date_time)
{
$long_day = $this->tr->get(
$this->_TabStrDaysOfWeek[ $date_time->format('w') ]
);
/*
here's where I'm stuck:
what could be the code to be able to display:
- english:
Monday, 1st September 2006
Tuesday, 2nd September 2006
Wednesday, 3rd September 2006
Thursday, 4th September 2006
- french:
Lundi, 1 septembre 2006
Mardi, 2 septembre 2006
Mercredi, 3 septembre 2006
Jeudi, 4 septembre 2006
- arabian!!:
1 - Don't know
2 - Don't know
3 - Don't know
4 - Don't know
*/
}
... Und ich habe Arabisch gesagt, weil ich es früher oder später brauchen werde, dasselbe gilt für Mandarin-Chinesisch. Alle meine anderen Übersetzungsprobleme sind gelöst, nur dieses nicht!!
Irgendeine Idee?