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

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

Vorteile eines flexiblen ERP Systems
Vorteile eines flexiblen ERP SystemsEin flexibles ERP System bietet in allen Unternehmensbereichen die Grundlage für eine erfolgreiche Verwaltung, Organisation und Planung aller Prozesse.

01.12.2021 | Berni


 

Aktuelle PHP Scripte

Homepagetools 2022

Kostenloses Gästebuch und Homepagetools für die eigene Homepage. Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.

29.04.2022 freepler | Kategorie: PHP/ Gaestebuch
SF-Shopsystem V1.0

Hier haben wir ein einzigartiges Shopsystem in PHP. Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich. Ausführliche Beschreibung weiter unten.

28.04.2022 Speedcrawler | Kategorie: PHP/ Shops
Anzeigen Markt mit PayPal Bezahl System

Anzeigen Markt Script mit PayPal Bezahl System Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal seine Anzeigen zu schalten, je nach seinem Guthaben.

27.04.2022 Webace_de | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:43 Uhr.