Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrsprachiges Projekt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrsprachiges Projekt

    Hallo,

    mein neues Projekt soll mehrsprachig ausgelegt werden.

    Grundsäztlich habe ich schon alles konzepiert, also je eine PHP Datei pro Sprache und dann die einzelnen Sätze oder Wörter in Arrays oder mit getter und setter arbeiten.

    Da ich den Content nicht persönlich übersetzen werde, soll die Variable ziemlich leicht verständlich sein, daher eher ein Array z.B.:

    $TEXT['de']['startseite']['begruessung'] = "Hallo lieber Besucher von meinerSeite.de";

    soweit so gut, dass ist auch alles kein Problem oder seht ihr hierbei welche?

    Jetzt stellt euch mal vor ich möchte Textformatierungen oder links einbauen, dass der Text z.B. so aussehen könnte:

    echo "Hallo <b>lieber Besucher</b> von <a href='meineSeite.de'>meinerSeite.de</a>"

    Wie sollte der Spracharray dann aussehen, denn ich möchte die Übersetzter ja nicht überfordern, da sie wohl kein HTML verstehen.

    Was ich aber noch viel kritischer finde, ist das sich in anderen Sprachen ja der Satzbau und damit der zu verlinkende Teil vll woanders hin rutscht.

    Wie würdet ihr sowas umsetzten, bin für jeden Tipp dankbar


  • #2
    was ist an der formulierung des problems forgeschritten?

    Kommentar


    • #3
      Zitat von $$$ ThiKool $$$ Beitrag anzeigen
      denn ich möchte die Übersetzter ja nicht überfordern, da sie wohl kein HTML verstehen.
      BBCodes und ähnliches verwenden.

      Ich denke, du solltest dir noch ein paar Threads zum Thema im Forum durchlesen. Deine Formulierungen wirken sehr vage.
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        Das Hauptproblem was ich mir für den Übersetzter schwer vorstelle ist sowas:

        $TEXT['de']['startseite']['text1'] ="<a href=''>Hier</a> klicken um fortzufahren ";
        $TEXT['en']['startseite']['text1'] ="Click <a href=''>here</a> to continue ";

        Hierbei ändert sich ja der Satzbau.

        Eine andere, für den Übersetzer leichter lesbare Variante wäre dann sowas hier oder?

        $TEXT['de']['startseite']['text1'] ="%sHier%s klicken um fortzufahren ";
        $TEXT['en']['startseite']['text1'] ="Click %shere%s to continue ";

        klar könnte man dafür auch BBcodes verwenden.

        Wie ist euere Einschätzung dazu?

        Kommentar


        • #5
          Wie gibst du bei %s das href-Attribut mit?
          Das Hauptproblem was ich mir für den Übersetzter schwer vorstelle ist sowas:
          Wer sind denn die Übersetzer? Schonmal nachgefragt wie die sich das vorstellen würden?
          BBCodes und solches Basic-HTML kann sich jeder sehr schnell aneignen ohne total überfordert zu sein.
          Wie werden die Texte gepflegt? Evtl. bietet sich ein wysiwyg-Editor an? http://www.tinymce.com/
          Relax, you're doing fine.
          RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

          Kommentar


          • #6
            Siehe auch:

            https://www.tutorials.de/threads/meh...rojekt.400581/

            Hintergrund: http://www.php.de/php-einsteiger/ann..._Multipostings

            (Nicht, dass das hier noch irgendwer durchsetzen würde, aber ich denke, die Anmerkungen dort sind für die Zukunft ganz nachvollziehbar. )

            Kommentar


            • #7
              Eine CSV Funktion erstellen die Dateien mit folgenden Namen einliest und in ein array einfügt, edition mit Openoffice/Libreoffice Calc (Excel würde ich nicht empfehlen)

              betroffenedatei_de-DE.csv
              'sample_identificator_sentence01','Dies ist der'
              'sample_identificator_sentence02','. Test'

              PHP-Code:
              $arrayvar opentranslation($fileadress$languageident$fallback);

              $value 1;
              echo 
              $arrayvar['sample_identificator_sentence01']."".$value."$arrayvar['sample_identificator_sentence02']."
              Ausgabe: Dies ist der 1. Test

              Sollte irgendwas unklar sein bezüglich des Grundgedankens, gerne nochmal nachhaken, ist halt ein ziemlich komplexes Thema.
              Mehrsprachig bedeutet ja insgesamt:
              - Software übersetzen (CSV+Funktion dafür - editieren mit OO/Libreoffice Calc)
              - Inhalte übersetzen (Übersetzungslagerung in MySQL - editieren mit Administrationsoberfläche + BBCode)

              Kommentar


              • #8
                Du schreibst "also je eine PHP Datei pro Sprache"
                Dein Array sieht aber wie folgt aus:
                Code:
                $TEXT['de']['startseite']['text1'] ="<a href=''>Hier</a> klicken um fortzufahren ";
                $TEXT['en']['startseite']['text1'] ="Click <a href=''>here</a> to continue ";
                Wenn Du je Sprache eine Datei erstellst, müsste es doch wie folgt aussehen:

                deutsch.php
                Code:
                $TEXT['startseite']['text1'] ="<a href=''>Hier</a> klicken um fortzufahren ";
                englisch.php
                Code:
                $TEXT['startseite']['text1'] ="Click <a href=''>here</a> to continue ";

                Kommentar


                • #9


                  also aktuell versuchst du ein Problem zu regeln welches gar nicht ein Problem ist.

                  Ich Arbeite bei einem Publisher und dort sind Übersetzer eingestellt, die Kollegen übersetzen und korrigieren. Jedoch keiner von denen macht das mit einem PHP Array oder setzt irgendwelche BBCodes ein. Es ist auch nicht deren Aufgabe sich mit HTML zu beschäftigen.

                  Die Übersetzung folgt entweder durch ein Word/LaTex dokument(bei langen Texten) oder es wird http://poedit.net/ benutzt.

                  Die Entwickler machen dann den Technischen Krams drauf(verlinken, fett darstellen etc)

                  Einige Freelancer kennen auch Markdown format und BBCode(weil viele auch Wordpress Blogs haben)

                  PHP-Code:
                  $TEXT['de']['startseite']['text1'] ="<a href=''>Hier</a> klicken um fortzufahren ";
                  $TEXT['en']['startseite']['text1'] ="Click <a href=''>here</a> to continue "
                  das wird ein Übersetzer nie tun, das müsstest du dann machen.

                  Übrigens würde ich eher poedit und gettext statt einem PHP Array.
                  ich meine du öffnest ja auch nicht die session datei mit file_get_contents und wendest dann session_decode an um dann den Inhal in ein Array zu speichern. Du nutzt direkt $_SESSION wieso dann auch nicht gleich die PHP Internen funktionen zur Übersetzung nutzen?
                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                  Kommentar


                  • #10
                    Zitat von kaminbausatz Beitrag anzeigen
                    ...
                    Wenn Du je Sprache eine Datei erstellst, müsste es doch wie folgt aussehen:

                    deutsch.php
                    Code:
                    $TEXT['startseite']['text1'] ="<a href=''>Hier</a> klicken um fortzufahren ";
                    ...
                    solltest du mich meinen hast du was übersehen, CSV und nicht PHP.
                    Wenn man also eine Datei hat die in verschiedenen sieht die Geschichte folgendermaßen aus (Softwareübersetzung).

                    $_REQUEST['lang'] COOKIE['lang']

                    datei.php

                    /translationkits/datei_de-DE.csv
                    /translationkits/datei_es-ES.csv
                    /translationkits/datei_en-EN.csv

                    PHP-Code:
                    //Übersetzung laden
                    $language_array language_load_constructor('datei.php'$_REQUEST['lang'], $default_language);

                    //Übersetzung auflösen (Wird nicht mehr gebraucht)
                    unset($language_array);

                    function 
                    language_load_constructor($file,$selectedlanguage,$fallbacklanguage){
                    //GENERIERE DATEIPFAD für Übersezungsdatei
                    //ÜBERPRÜFE ob DATEI existiert
                    //JA = WEITER  ||  NEIN = FALLBACK DATEIPFAD für Übersetzungsdatei generieren und ÜBERPRÜFEN
                    //LESE CSV DATEI ein und GENERIERE Array in VARIABLE
                    //return VARIABLE

                    Diese Methode erspart mir es dort eine zweite oder dritte Dimension zu verwenden zu müssen bei Softwareübersetzungen, Editieren verläuft wie gesagt über einen CSV Editor, ich verwende Libreoffice/Openoffice - man kann sich ja auch selbst was bauen, wäre mir jedoch zu aufwändig.

                    Einzuhalten ist halt eine bestimmte Ordnerstruktur wie z.B. bei Magento oder ähnlichem, mir ist ja der Umfang dieses internationalen Projektes ja unbekannt.

                    Inhalt einer solchen CSV Datei ist halt folgender (Bsp. datei_en-EN.csv):
                    'timeformat','H:i:s',
                    'sentence_example_part0','this is an',
                    'sentence_example_part1','example',

                    Im Array sieht es dann halt so aus, wenn datei_en-EN.csv geladen wird:
                    PHP-Code:
                    echo $language_array['sentence_example_part0']; 
                    Ausgabe: this is an

                    [etwas rauseditiert, im vorherigen Post war doch nur eine Dimension)

                    Es ist recht flexibel und kompakt und erfüllt seinen Zweck.

                    Grüße TheRedox

                    Kommentar

                    Lädt...
                    X