php Text ersetzen

  • Hallo, ich möchte mir meine private Wetterstation bauen.
    Als Datenquelle nutze ich Yahoo, da alles gut dokumentiert ist. Bis auf eins. Die Wetterbeschreibungen kommen auf Englisch, diese möchte ich ins Deutsche übersetzt haben.
    Der Umfang des Wortschatzes ist überschaubar, so soll z.B. aus Snow ->Schnee werden.
    Ich habe schon mit einer festen Übersetzung probiert, erhalte aber immer eine Fehlermeldung.

    $forecast[4]['text'] = "Snow";
    $forecast[4]['text'] = substr_replace("$forecast[4]['text']","Test");

    $forecast[4]['text'] ist die Variable die ich an HTML übergebe. Das funktioniert. Der darin enthaltene engl. Text soll ins deutsche gewandelt werden. Am besten alles in diesem Script.

    Warum funktioniert mein Versuch nicht. Wie kann man dies richtig machen?
    Danke

    Einmal editiert, zuletzt von stefan-dd (27. Februar 2016 um 15:09)

  • [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]

    Code
    $forecast[4]['text'] = substr_replace("$forecast[4]['text']","Test");

    [/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Warum ist das Array-Element in Quotes ??[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Einfachste Version:[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]

    Code
    $forecast[4]['text'] = substr_replace($forecast[4]['text'],"Test");

    [/font][/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Und wenn es unbedingt Quotes sein muessen:[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]

    Code
    $forecast[4]['text'] = substr_replace("{$forecast[4]['text']}","Test");

    [/font]


    [/font]

  • Ich würde das so machen, dass du dir ein Array mit den Worten anlegst die gefunden und ersetzt werden sollen, und dann suchst und ersetzt du einfach den Text jeweils...
    Also in etwa wie folgt:

    ...weiß leider nicht genau was bei dir in $forecast drin steht, also simuliere ich das jetzt nur

    Alternativ könntest du aber auch google-translate.php verwenden

    :angel:

  • Das funktioniert leider nicht. Die Fehlermeldung im Anhang wird ausgegeben.
    Eine andere Möglichkeit wäre noch anhand einer variablen Ziffer einen Text zuzuordnen.
    Wie kann ich das realisieren?
    z.B. 1 -> sonnig
    2 -> bedeckt....

    Code
    substr_replace() expects at least 3 parameters, 2 given
    
    
    File: /var/www/shc/shc/data/commands/web/wetterpage.class.php 
    Line: 31 
    Code: 2 
    Stack: 
    #0 @ Line: 0RWF\Error\Error->handlePhpError(2, 'substr_replace() expects at least 3 parameters, 2 given', '/var/www/shc/shc/data/commands/web/wetterpage.class.php', 31, Array(13))#1 /var/www/shc/shc/data/commands/web/wetterpage.class.php @ Line: 31substr_replace('['text']...', 'Test...')#2 lib/request/commands/pagecommand.class.php @ Line: 45SHC\Command\Web\wetterPage->processData()#3 lib/request/abstractcommand.class.php @ Line: 77RWF\Request\Commands\PageCommand->executeCommand()#4 lib/request/requesthandler.class.php @ Line: 184RWF\Request\AbstractCommand->execute(RWF\Request\HttpRequest, RWF\Request\HttpResponse)#5 lib/request/requesthandler.class.php @ Line: 133RWF\Request\RequestHandler->handleWebRequest('page...', 'wetter...')#6 lib/request/requesthandler.class.php @ Line: 91RWF\Request\RequestHandler->__construct('page...', 'wetter...')#7 /var/www/shc/index.php @ Line: 25RWF\Request\RequestHandler::handleRequest()#8 {main}
  • Tell: Funktioniert dann aber nur wenn das Index in $english mit dem in $german übereinstimmt.

    Beispiel:

    Desweiteren beachtet es nicht dass das zu ersetzende Wort alleine stehen muss => Wortgrenze
    Beispiel:

    PHP
    $text    = "Today Snow and tomorrow Cloudy with Rain. After that again Snowing" ;[/php]
    Ausgabe:
    [code]Today Schnee and tomorrow Regen with Bewoelkt. After that again Schneeing
  • > Funktioniert dann aber nur wenn das Index in $english mit dem in $german übereinstimmt.
    Na logisch, wie soll die Funktion denn das sonst zuordnen?

    > Desweiteren beachtet es nicht dass das zu ersetzende Wort alleine stehen muss => Wortgrenze
    Wenn die Woerter geschickt angeordnet sind, funktioniert es ganz gut:

    Aber es ist klar, einfache Woerter oder Wortkombinationen zu uebersetzen hat irgendwo eine Grenze.
    Wahrscheinlich bringt erst ein Testbetrieb zu Tage ob diese Vorgehensweise die Anforderungen erfuellt.

    Ich nehme an, dass in Wetterberichten immer wieder aehnliche Saetze oder Satzteile vorkommen. Wenn
    das tatsaechlich der Fall ist, kommt man mit der Zeit zu recht guten Uebersezungen.

    Einmal editiert, zuletzt von Tell (28. Februar 2016 um 23:53)

  • Ich denke meine Variante gefällt mit besser, da das auch keine 1:1 Übereinstimmung des Index benötigt und auch "word boundary" unterstützt:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!