php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 23-04-2022, 19:08
Kayleigh11
 Registrierter Benutzer
Links : Onlinestatus : Kayleigh11 ist offline
Registriert seit: Apr 2022
Beiträge: 2
Kayleigh11 befindet sich auf einem aufstrebenden Ast
Standard time_elapsed_string - auf Deutsch...

Hallo liebe Gemeinde,


ich grüble seit Stunden an dem Problem meine "time_elapsed_string - Funktion" auf die deutsche Sprache umzumodeln,- ich kriege das nicht hin...


Die bekannte Funktion sieht bei mir so aus:
PHP-Code:
public function time_elapsed_string($datetime$full false,  $future false ) {
        
        
$now = new DateTime;
        
$ago = new DateTime($datetime);
        
$diff $now->diff($ago);

        
$diff->floor($diff->7);
        
$diff->-= $diff->7;

        
$string = array(
            
'y' => 'year',
            
'm' => 'month',
            
'w' => 'week',
            
'd' => 'day',
            
'h' => 'hour',
            
'i' => 'minute',
            
's' => 'second',
        );

        foreach (
$string as $k => &$v) {
            if (
$diff->$k) {
                
$v $diff->$k ' ' $v . ($diff->$k 's' '');
            } else {
                unset(
$string[$k]);
            }
        }

        if (!
$full$string array_slice($string01);

        if(
$future)
        {
            return 
$string implode(', '$string) . ' to go' 'to go';
        }
        return 
$string implode(', '$string) . ' ago' 'just now';
    } 
Bei z.B. 1 Tag wird "1 Day ago" ausgegeben, bei 2 Tagen die Mehrzahl "2 Days ago".


Ich brauche die Ausgabe in deutscher Sprache.
Während in englischer Sprache bei Mehrzahl immer nur das 's' an day(s), week(s)......second(s) angefügt wird, ist das Handling sehr einfach.


In deutscher Sprache endet die Mehrzahl aber mal mit 'e' wie bei 'Tag(e)', dann aber wieder mit 'en' wie bei 'Minute(n).
Nun einfach statt dem 's' ein 'en' einzusetzen geht ja nicht,- die Ausgabe würde dann ja 'Minuteen', 'Stundeen' usw. lauten...


Wie kann ich das in deutsch hin kriegen? Ich dachte schon an ein zweites array, aber es gelingt mir einfach nicht.


Wer weiß das?


Danke und Gruß
Mit Zitat antworten
  #2 (permalink)  
Alt 25-04-2022, 10:15
ArneDrews
 Registrierter Benutzer
Links : Onlinestatus : ArneDrews ist offline
Registriert seit: Jan 2016
Beiträge: 44
ArneDrews befindet sich auf einem aufstrebenden Ast
Standard

Das soll kein Schönheitswettbewerb sein, sondern nur als kleine Ansatz dienen:
PHP-Code:
$dtNow = new DateTime();
$dtAgo = new DateTime('23.04.2022 15:04:39');
$dtDiff $dtNow->diff($dtAgo);

// week quick fix
$dtDiff->floor($dtDiff->7);
$dtDiff->-= $dtDiff->7;

$string_parts = [];

if (
$dtDiff->y)
  
$string_parts[] = $dtDiff->. ($dtDiff->' Jahre' 'Jahr');

if (
$dtDiff->m)
  
$string_parts[] = $dtDiff->. ($dtDiff->' Monate' 'Monat');

if (
$dtDiff->w)
  
$string_parts[] = $dtDiff->. ($dtDiff->' Wochen' 'Woche');

if (
$dtDiff->d)
  
$string_parts[] = $dtDiff->. ($dtDiff->' Tage' ' Tag');

if (
$dtDiff->h)
  
$string_parts[] = $dtDiff->. ($dtDiff->' Stunden' 'Stunde');

if (
$dtDiff->i)
  
$string_parts[] = $dtDiff->. ($dtDiff->' Minuten' 'Minute');

if (
$dtDiff->s)
  
$string_parts[] = $dtDiff->. ($dtDiff->' Sekunden' 'Sekunde');


echo 
implode(', '$string_parts) . ($dtDiff->invert ' vergangen' ' entfernt'); 
Code:
1 Tag, 17 Stunden, 8 Minuten, 50 Sekunden vergangen

Etwas kompakter, wenn man denn möchte:
PHP-Code:
$dtNow = new DateTime();
$dtAgo = new DateTime('03.04.2022 15:04:39');
$dtDiff $dtNow->diff($dtAgo);

// week quick fix
$dtDiff->floor($dtDiff->7);
$dtDiff->-= $dtDiff->7;

$date_parts = [
    
'y' => ['Jahr''Jahre']
    , 
'm' => ['Monat''Monate']
    , 
'w' => ['Woche''Wochen']
    , 
'd' => ['Tag''Tage']
    , 
'h' => ['Stunde''Stunden']
    , 
'i' => ['Minute''Minuten']
    , 
's' => ['Sekunde''Sekunden']
  ];

$string_out = [];

foreach (
$dtDiff as $key => $value)
{
  if (
$value && isset($date_parts[$key]))
    
$string_out[] = $value ' ' . ($dtDiff->{$key} > $date_parts[$key][1] : $date_parts[$key][0]);
}

echo 
implode(', '$string_out) . ($dtDiff->invert ' vergangen' ' entfernt'); 

Geändert von ArneDrews (25-04-2022 um 11:23 Uhr) Grund: Fix für die Anzahl der Wochen eingefügt
Mit Zitat antworten
  #3 (permalink)  
Alt 26-04-2022, 17:13
Kayleigh11
 Registrierter Benutzer
Links : Onlinestatus : Kayleigh11 ist offline
Registriert seit: Apr 2022
Beiträge: 2
Kayleigh11 befindet sich auf einem aufstrebenden Ast
Standard

Super,- herzlichen Dank für Deine Mühe.


Deine Idee gibt aber einen ganzen String aus. Also Anzahl jahre, Monate, Wochen... usw.
Angezeigt soll aber nur 1 Kriterium. Also 1 Jahr her, oder 3 Monate her, 5 Tage her etc.
So dachte ich dass dies doch mit der Variante 1 aus Deinem Vorschlag hin kriegen sollte, wenn ich nach dem ersten "if" mit "else if" weitermache.
Oder denke ich schon wiede verkehrt...?
Mit Zitat antworten
  #4 (permalink)  
Alt 26-04-2022, 23:02
ArneDrews
 Registrierter Benutzer
Links : Onlinestatus : ArneDrews ist offline
Registriert seit: Jan 2016
Beiträge: 44
ArneDrews befindet sich auf einem aufstrebenden Ast
Standard

Das wäre noch einfacher
PHP-Code:
$tsNow = (new DateTime())->getTimeStamp();
$tsOther = (new DateTime('03.04.2022 15:04:39'))->getTimeStamp();
$tsDiff $tsNow $tsOther;

$date_parts = [
    
'y' => ['Jahr''Jahre']
    , 
'm' => ['Monat''Monate']
    , 
'w' => ['Woche''Wochen']
    , 
'd' => ['Tag''Tage']
    , 
'h' => ['Stunde''Stunden']
    , 
'i' => ['Minute''Minuten']
    , 
's' => ['Sekunde''Sekunden']
  ];

$index $tsDiff 0;
$suffix $tsDiff ' entfernt' ' vergangen'
Beispiel für die Tage:
PHP-Code:
echo date('d'$tsDiff) . ' ' $date_parts['d'][$index] . $suffix
Code:
24 Tage vergangen
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
elapsed, function, string, time


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
dont know Deutsch?? codwrex Off-Topic Diskussionen 12 29-12-2009 11:36
Informatiker-Deutsch Kropff Off-Topic Diskussionen 30 27-07-2009 12:55
Deutsch Datenbank themonk Projekthilfe 11 22-04-2008 08:30
VS.Php auf deutsch erhältlich kleinehexelili User pages 2 29-03-2007 17:42
Datumsanzeige in Deutsch ? baraber ASP, PERL, CGI, C und alles andere 0 07-10-2006 13:44

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

OnPremise versus Cloud - das richtige System finden
Wir beleuchten in diesem Artikel, die Vor- und Nachteile für Cloud oder OnPremise Systemen. Und warum es definitiv Zeit wird in die Cloud zu wechseln.

09.05.2022 | julia_mjr

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni


 

Aktuelle PHP Scripte

MyPHPlib-Bibliotheksverwaltung

MyPHPlib ist eine Scriptsammlung, mit der die Bibliotheksverwaltung incl. Ausleihe und Recherche gelingt. Die Scriptsammlung wird seit Mitte 2005 entwickelt und ist besonders an den Bedürfnissen von Schulen angepasst.

27.07.2022 RobertG | Kategorie: PHP/ Management
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

01.07.2022 Berni | Kategorie: PHP/ Anzeigenmarkt
NewsLetter Script PHP ansehen NewsLetter Script PHP

NewsLetter Script PHP is a simple email subscriptions newsletters script written in PHP and MySQL. Admin could send news in the letters to a mailing list of subscribed visitors. All the news and subscription form could be placed into a page of your web

28.06.2022 nevenov | Kategorie: PHP/ Mail
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:30 Uhr.