1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Problem mit Datumslokalisierung in einem Plugin (date_i18n)

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von h-u-g-o, 29. Oktober 2009.

  1. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Hallo,

    ich verzweifle langsam. Ich kann mir einfach nicht erklären, warum an einer Stelle anstatt des korrekten Datums immer das des aktuellen Tages ausgegeben wird. Schaut euch das bitte mal an: ~Link entfernt~ (siehe Footer!)

    Der Geburtstag wird korrekt ausgegeben:

    Im Tooltip soll das Geburtsdatum ( 3. November 1938 ) stehen, aber sobald ich date_i18n benutze, wird immer das Datum des aktuellen Tages angezeigt.

    Der relevante Code:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das vollständige angepasste Plugin gibt's hier. ~Link entfernt~

    Würde mich über Hilfe sehr freuen, hat mich schon viel Nerven gekostet...

    Liebe Grüße
    Hugo

    PS:

    Wenn ich anstatt
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    schreibe:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    dann wird das korrekte Datum ausgegeben, nur halt nicht so formatiert, wie ich's gern hätte.
     
    #1 h-u-g-o, 29. Oktober 2009
    Zuletzt bearbeitet: 20. November 2009
  2. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.694
    Zustimmungen:
    0
    Hm, interessantes Problem. Auf Anhieb sehe ich da leider auch keinen Fehler. Was spuckt denn strtotime($row->nbdate) aus?! Vielleicht ist das ja schon falsch? Ich würde vermuten, dass date_i18n das aktuelle Datum nimmt, falls es keinen verwertbaren Input bekommt. Und könntest Du nicht gleich mit $row->bdate arbeiten, das ist doch ein Timestamp, oder?
     
  3. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Vielen Dank für deine Antwort, Ammaletu!

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    führt zu folgender Ausgabe:

    Du liegst mit deiner Vermutung also offenbar richtig und da liegt der Hund begraben.

    Ja, $row->bdate ist ein Timestamp, genauer vom Typ date. Damit direkt zu arbeiten hatte ich auch schon versucht. Das führt zu folgenden Ergebnissen:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ->

    Hier ist das Datum noch richtig.

    ---

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ->

    ---

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ->

    ---

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ->

    :cry:
     
    #3 h-u-g-o, 30. Oktober 2009
    Zuletzt bearbeitet: 30. Oktober 2009
  4. cinoa

    cinoa Well-Known Member

    Registriert seit:
    7. Mai 2009
    Beiträge:
    111
    Zustimmungen:
    2
    Hi, sehr schönes PlugIn - und für eine geschlossene kleine Schulcommunity eine tolle Sache - Kompliment!!!

    Habe ich seit gerade auf unserm Schulblog installiert.

    Könntest du mir den Code für folgendes Format in der sidebar übermitteln: (Vorname, Name) feiert am 2. November 2009 seinen 12. Geburtstag

    Habe Verschiedes probiert mit deinem Code in

    Line 458:

    <td align="left"><?php echo $row->first ?>&nbsp;<?php echo $row->last ?> wird <?php echo $row->age + 1, ' am' ?><br /><?php echo $row->bwmd ?></td>

    Ich vermute jedenfalls, dass das die Stelle ist, oder?

    Sehr dankbar dafür ist cinoa
     
    #4 cinoa, 30. Oktober 2009
    Zuletzt bearbeitet: 30. Oktober 2009
  5. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Das Plugin ist nicht von mir, sondern von Edward Knapp. Ich schau's mir mal an.

    [edit]Eigentlich gehört das ja nicht in diesen Thread.

    Wenn der Text wirklich so aussehen soll, dann müsste man zusätzlich eine Unterscheidung nach Geschlecht vornehmen, denn bei einem Mädchen/einer Frau soll ja dann "[...] ihren ... Geburtstag" ausgegeben werden.[/edit]
     
    #5 h-u-g-o, 30. Oktober 2009
    Zuletzt bearbeitet: 30. Oktober 2009
  6. cinoa

    cinoa Well-Known Member

    Registriert seit:
    7. Mai 2009
    Beiträge:
    111
    Zustimmungen:
    2
    sorry, habe ich was missverstanden!
     
  7. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    So, probier's mal damit:

    Zeile 454:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ersetzen durch:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Zeile 455 löschen. (Sternzeichen)

    Zeile 458:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ersetzen durch:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Zeile 459 löschen (Sternzeichen)

    ---

    Falls du nicht die Ausgabe für die nächsten 7 Tage benutzt, sondern die für den aktuellen Monat, musst du stattdessen folgende Änderungen vornehmen:

    Zeile 508:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ersetzen durch:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Zeile 509 löschen. (Sternzeichen)

    Zeile 512:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ersetzen durch:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Zeile 513 löschen. (Sternzeichen)

    Klappt's?
     
    #7 h-u-g-o, 30. Oktober 2009
    Zuletzt bearbeitet: 30. Oktober 2009
  8. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Falls also tatsächlich "seinen" und "ihren" ausgegeben werden soll, müsste man die Tabelle in der Datenbank um eine Spalte ergänzen, in der das Geschlecht gespeichert wird. Dazu bräuchte es dann noch eine kleine Abfrage im Plugin. Ist das unbedingt gewünscht? Oder ist es auch geschlechtsneutral in Ordnung, so wie ich es jetzt vorgeschlagen habe?
     
  9. cinoa

    cinoa Well-Known Member

    Registriert seit:
    7. Mai 2009
    Beiträge:
    111
    Zustimmungen:
    2
    wieder nicht zu fassen dieses forum - ihr seit alle einfach zum knutschen - jedenfalls probier ich das und melde mich, okay?!

    Thanks dude!!

    PS Ob ich das je zurück geben kann als Nichtprogrammierer - und, sag, bekommt ihr eigentlich außer Lobeshymnen auch was anderes für eure Arbeit - es sind ja irgendwie immer dieselben - oder täuscht das ...?!
     
  10. cinoa

    cinoa Well-Known Member

    Registriert seit:
    7. Mai 2009
    Beiträge:
    111
    Zustimmungen:
    2
    stimmt . habe ich gar nicht bedacht, shit - "den" tuts auch - das heißt also geschlechtsneutrale Lösung - sonst ufert das ja aus - mach ich eh alles für die Schule für lau - jedenfalls werde ich eure Hilfe zu gegebener Zeit hervorheben. Ich übernehme deinen Code so wie beschrieben und melde mich dann in jedem Fall.
     
  11. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Hallo Cinoa,

    also ich nehme in den meisten Fällen selbst die geballte Kompetenz dieses Forums in Anspruch und bin froh, wenn ich dann auch mal ab und zu eine kleine Hilfe sein kann.

    Ich hoffe, dass das so klappt, ansonsten melde dich einfach noch mal.

    Liebe Grüße
    Hugo
     
  12. cinoa

    cinoa Well-Known Member

    Registriert seit:
    7. Mai 2009
    Beiträge:
    111
    Zustimmungen:
    2
    sorry, aber das klappt so nicht. Ich glaube ich gehe mal zu dem Entwickler - es sei denn du hast noch eine letzte Idee ... ?!
     
  13. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Na ja, bitte eine etwas konkretere Fehlerbeschreibung.

    Beim Entwickler kannst du wahrscheinlich lang auf Antwort warten.
     
  14. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Sorry, es fehlte (an zwei Stellen) eine geschlossene runde Klammer. Habe sie ergänzt, jetzt klappt's.
     
  15. cinoa

    cinoa Well-Known Member

    Registriert seit:
    7. Mai 2009
    Beiträge:
    111
    Zustimmungen:
    2
    Mit Deinem code hats nicht geklappt, aber hiermit:

    <td align="left"><?php echo $row->first ?>&nbsp;<?php echo $row->last ?> feiert am <?php echo $row->bwmd ?> den <?php echo $row->age + 1,'. Geburtstag' ?></td>

    jetzt muss ich nur noch das Datumsformat hinbekommen - das ist wohl eine etwas heiklere Sache, aber vielleicht muss ich nur einfach alle Passagen ändern, in denen das Format vorkommt, oder ?!

    Danke anyway , ich hab dem Autor eine Mail geschickt, mal sehen was er sagt. Soll ich dich informieren, oder ist dir das nciht so wichtig?
     
  16. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Nimm doch noch mal meinen Code, ich hatte wirklich nur zwei Klammern vergessen! Dann hast du auch das gewünschte Datumsformat!

    Ja, kannst mir gern informieren, falls du Antwort erhälst.
     
  17. cinoa

    cinoa Well-Known Member

    Registriert seit:
    7. Mai 2009
    Beiträge:
    111
    Zustimmungen:
    2
    sehr gerne, promise!

    Schönen Tag noch wo immer du jetzt sitzt - draußen ist goldenes Licht

    PS Habe das Format jetzt hinbekommen:

    <td align="left">• <?php echo $row->first ?>&nbsp;<?php echo $row->last ?><br/> <?php echo date_i18n("j. F Y", strtotime($row->bwmd)) ?><br/><?php echo $row->age + 1,'. Geburtstag' ?></td>

    Kleine Liste - kurz und knapp und sehr funktional - prima Lösung - dies Ding generiert auch noch das Alter - toll
     
    #17 cinoa, 30. Oktober 2009
    Zuletzt bearbeitet: 30. Oktober 2009
  18. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Danke!

    Prima. Anstatt des Aufzählungszeichens solltest du aber vielleicht besser mit Listen arbeiten, also mit <ul><li></li></ul>. Das Alter wurde ja schon von Anfang an generiert.

    Danke, dir auch noch einen schönen Tag!
     
  19. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.694
    Zustimmungen:
    0
    Ok, um dann mal zum eigentlichen Thread zurückzukommen: Soweit ich das gerade gelesen habe, sollten Timestamps zwischen 1901 und 2038 kein Problem sein, auf Windows-Maschinen geht aber wohl nur ab 1970 (bis PHP 5.1.0). Das Problem ist hier denke ich die WordPress-Funktion (Ja, habe gerade mal nachgeschaut -- alle negativen Timestamps, also alles vor 1970, wird fest auf das aktuelle Datum gesetzt), die man dann eventuell durch eine andere Funktion ersetzen müsste.

    Hm, strftime würde gehen, aber dann müsste die Locale des PHP-Prozesses komplett verstellt werden, was vermutlich nicht gehen wird. Was Du machen kannst, ist entweder die date_i18n-Funktion in die functions.php zu kopieren und dort anzupassen (aus wp-includes/funcstions.php kopieren, in der functions.php mit anderem Namen einfügen und den if-Block am Anfang entfernen, bei mir Zeile 90-98). Oder Du lässt Dir in der SQL-Query das Datum sinnvoll formatiert ausgeben und ersetzt den Monat dort mit einer Helperfunktion durch den Monatsnamen in Deutsch.
     
  20. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Deine Hilfe ist ja Gold wert. :D

    Ich habe den Weg über die functions.php gewählt und das funktioniert einwandfrei. Herzlichen Dank! :D
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden