kostenloser Webspace werbefrei: lima-city


Webseite Mehrsprachig machen

lima-cityForumDie eigene HomepageHomepage Allgemein

  1. Autor dieses Themas

    marvinkleinmusic

    Kostenloser Webspace von marvinkleinmusic

    marvinkleinmusic hat kostenlosen Webspace.

    Hallo Zusammen,

    Ich suche derzeit einen weg meine Webseite in 2 Sprachen anzubieten, Deutsch und Englisch.
    Doch wie lässt sich das einfach realisieren, ohne die gesammte Page 2 mal hochzuladen, nur mit anderen Inhalt?

    Die Datenbankinhalte werde ich wohl nochmal in eine extra Datenbank übersetzen müssen aber der Rest?


    Hat vielleicht jemand von euch einen Tipp für mich?

    Liebe Grüße,
    Marvin
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Würde als Cookie sowas wie "lang" = "de" oder "en" nutzten, den man auf der Webseite ändern kann.
    Dann die komplette Webseite so programmieren das er entweder von einer Datenbank oder eine PHP Datei die jeweiligen Sätze ausliest
  4. Hallo,

    kommt da bissle drauf an wie die Struktur der Seite momentan ist
    (z.B. wie wird Content nach geladen...) allgemein wäre der einfachste und für
    den Benutzer freundlichste weg die sprache über die Seiten url in dieser Form
    domain.tld/de/demo.html als get wert mit zu liefern
    (über htaccess ließ sich das so darstellen )
    und dann anhand des get wertes für die statischen teile (Navigation,...) der seite eine lang conf Datei zu laden die die Werte enthält

    Bei den Werten aus der Datenbank wirst auf jeden fall nicht um die ergänzung
    der Tabellen kommen da irgendwo müssen die übersetzungen ja bleiben wenn sie nicht
    jedesmal neu generiert werden ^^


    Gruß
    VA / Akashia
  5. willstdueswissen

    Kostenloser Webspace von willstdueswissen

    willstdueswissen hat kostenlosen Webspace.

    Na man könnte es wie andere große cms machen:

    /language/de.php
    class language {
       $dis = "Beschreibung der Seite";
       $submit = "absenden";
       $languag ="deutsch";
    }


    /language/en.php
    class language {
        $dis = "Discription of the Site";
        $submit = "submit";
        $language = "english";
    }



    Dann das:

    Würde als Cookie sowas wie "lang" = "de" oder "en" nutzten, den man auf der Webseite ändern kann.


    Und dann so etwas:
    include_once "$language.php";

    MfG willstdueswissen
  6. willstdueswissen schrieb:
    Na man könnte es wie andere große cms machen:

    /language/de.php
    class language {
       $dis = "Beschreibung der Seite";
       $submit = "absenden";
       $languag ="deutsch";
    }


    /language/en.php
    class language {
        $dis = "Discription of the Site";
        $submit = "submit";
        $language = "english";
    }



    Dann das:

    Würde als Cookie sowas wie "lang" = "de" oder "en" nutzten, den man auf der Webseite ändern kann.


    Und dann so etwas:
    include_once "$language.php";

    MfG willstdueswissen


    Ich finde diese Variante weniger Elegant... zumal sie erfordert, dass ein Sprachwechsel ein kompletten Page-Reload braucht. Es gibt eine Elegantere Variante, das sind soganannte Language-XMLs. du erstellst diese XMLs, machst ein Token, welches Einen Inhalt repräsentiert und kannst dann deinen Inhalt dahinter klemmen. Der Vorteil dieser Methode ist, du hast alle Sprachen in einer XML drin, die du auslieferst und kannst dann ohne Seiten-Reload anhand der IDs deiner Spans oder welche Elemente auch immer, deine Seite über JavaScript mit der jeweilig gewünschten Sprache befüllen lassen
  7. c*********n

    Ich weiss nicht genau wie es Woltlab gelöst hat - wird aber wahrscheinlich wie oben beschrieben sein - aber dort fügt man nur sog. "Sprachvariablen" an. Dann hast du ne de.xml und eine eng.xml dort fügst du den Text/Wörter einfach immer rein und die werden dort ausgelesen. Wie das genau realisiert ist weiss ich leider nicht.
    Wäre schön, wenn es jemand wüsste.
  8. Autor dieses Themas

    marvinkleinmusic

    Kostenloser Webspace von marvinkleinmusic

    marvinkleinmusic hat kostenlosen Webspace.

    Hallo Zusammen!

    Vielen dank für eure zahlreichen Antworten!

    Mir erscheint die Methode von sebulon am Sinnvollsten, mit PHP ist es vielleicht einfacher allerdings habe ich immer Probleme mit dem Design wenn ich irgendwas include.

    @sebulon hast du vielleicht einige hilfreiche Tipps wie ich das per XML am besten umsetzen kann? :)


    Liebe Grüße
  9. ein Vorschlag wäre, wo du auch mit <pre> formatierte Blöcke setzen kannst:

    <lang>
      <global>
        <welcome>
          <de>Herzlich Willkommen</de>
          <en>Welcome</en>
        </welcome>
        <furtherInformation>
           <de>Für weitere Informationen lesen Sie nach...</de>
           <en>For any further information continue reading...</en>
        </furtherInformation>
      </global>
      <register>
        <username>
          <de>Benutzername</de>
          <en>username</en>
        </username>
      <register>
      <disclaimer>
         [...]
      <disclaimer>
    </lang>


    so könnte dein XML-Dokument aufgebaut sein, da kansnt du dir auch einen Editor schrieben, wo du prüfst, für welche tokens du noch keine vollständige Übersetzung hast...

    und in der Seite machst du es einfach so:
    <span id="username" class="lang register">


    und über jquery ist es ganz einfach:
    //sobald die Seite geladen ist, werden die Tokens gefüllt, die bis dahin leer waren:
    $(document).ready(function() {
    //... andere Anweisungen von dir...
    
    //funktionsaufruf für die Übersetzung mit Browser-Language:
    xml_translate_page(navigator.language);
    
    });
    
    
    function xml_translate_page(lang_selektor)
    {
      var lang = "";
      switch(lang_selektor)
      {
        case "de-DE":
        case "de-CH":
        case "de-AT":
          lang="de";
          break;
        case "en-US":
        case "en-GB":
        case "en-UK":
        default:
          lang="en";
      }
    
      var translatable_objects = $("lang");
     
    
    }


    und in dem beispiel mit der translatable objects steppst du einfach deine lang-XML-Durch, die du geladen hast...


    PS: man könnte das XMl auch etwas Standardkonformer machen...

    <lang>
      <global>
        <token id="welcome">
          <de>Herzlich Willkommen</de>
          <en>Welcome</en>
        </token>
        <token id="furtherInformation">
           <de>Für weitere Informationen lesen Sie nach...</de>
           <en>For any further information continue reading...</en>
        </token>
      </global>
      <register>
        <token id="username">
          <de>Benutzername</de>
          <en>username</en>
        </token>
      <register>
      <disclaimer>
         [...]
      <disclaimer>
    </lang>


    musst du schauen, wie du angenehmer mit dem XML umgehen kannst...

    Beitrag zuletzt geändert: 3.9.2014 10:17:29 von sebulon
  10. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    @sebulon: wenn du schon XML nutzt, dann kannst du auch gleich mit XSLT die HTML-Seite daraus bauen, das ist deutlich einfacher als irgendwie mit JavaScript usw zu basteln.

    Die Frage ist aber: warum XML? Mit JavaScript lassen sich andere Formate einfacher nutzen. Eventuell wäre sowas wie »handlebars.js« dafür interessant … die sprachabhängigen Texte würdest du dann beispielsweise als JSON speichern können.
  11. Ja, wenn dann gleich templating-Engine...

    Warum kein XSLT? Weil ich damit auf Arbeit shcon Probleme hatte und es seitdem nichtm ehr mag, weil es mich sehr viel zeit gekostet hat, das an die Anforderungen eines Projektes anzupassen...
  12. Autor dieses Themas

    marvinkleinmusic

    Kostenloser Webspace von marvinkleinmusic

    marvinkleinmusic hat kostenlosen Webspace.

    Hallo sebulon!

    Ich habe jetzt eine XML Datei (lang.xml) erstellt und alle übersetzungen reingepackt.

    Sofern ich das richtig verstanden habe, muss das so aussehen:
    <lang>
    	<titles>
    		<token id="title_1">
    				<de>Herzlich Willkommen!</de>
    				<en>Warm welcome!</en>
    		</token>
    		
    		<token id="title_2">
    				<de>Gratis? Wirklich?</de>
    				<en>Free? Really?</en>
    		</token>
    		
    		<token id="title_3">
    				<de>Was ist Magic Piano?</de>
    				<en>What is Magic Piano?</en>
    		</token>
    		
    		<token id="title_4">
    				<de>Über Smule</de>
    				<en>About Smule</en>
    		</token>
    		
    		<token id="title_5">
    				<de>Unser Team</de>
    				<en>Our team</en>
    		</token>
    		
    		<token id="title_6">
    				<de>Haben Sie eine Frage bezüglich dieser Webseite oder dem YouTube Kanal?</de>
    				<en>Any questions ? Feel free to</en>
    		</token>
    		
    		<token id="title_7">
    				<de>Kontaktieren Sie uns</de>
    				<en>Contact us</en>
    		</token>
    		
    	</titles>
    
    	<descriptions>
    		<token id="description_1">
    				<de>Hier findet ihr aktuelle Nachrichten die den YouTube-Kanal betreffen, sowie viele meiner Videos als gratis Audiofile.</de>
    				<en>On this website you can find news about my channel and a lot of music files from my videos that you can download for free.</en>
    		</token>
    		
    		<token id="description_2">
    				<de>Ja, alle hier auffindbaren Audiodateien stehen kostenfrei zur Verfügung, damit möglichst viele die Musik genießen können.</de>
    				<en>Yes, I provide you the best homemade music at all, just for free ! This website doesn't contain any paid file, so feel free to enjoy it.</en>
    		</token>
    		
    		<token id="description_3">
    				<de>Magic Piano ist die App über die ich meine Musik produziere. Sie bietet weit mehr als 1.000 Songs als Pianostück. Du kannst die App hier für iOS & Android herunterladen.</de>
    				<en>Magic Piano is an awesome free app available to download for Android and iOS devices. You can play thousands of songs and do magnificent performances as you can see in my videos.</en>
    		</token>
    		
    		<token id="description_4">
    				<de>Smule Entwickelt zahlreiche Mobile Apps, die es jedem Menschen ermöglichen sollen, ein Instrument zu spielen und zwar ohne jegliche musikalische Vorerfahrung. Ihre Apps sind für iOS sowie für Android erhältlich.</de>
    				<en>Smule has invented the creative idea for connecting the world through music via their amazing musical apps, which most of them are for free in the Appstore and Google Play.</en>
    		</token>
    		
    		<token id="description_5">
    				<de>Marvin Klein ist für die Videoproduktion, sowie der Verwaltung dieser Webseite zuständig.</de>
    				<en>Marvin Klein is the website manager and the video performances maker.</en>
    		</token>
    		
    		<token id="description_6">
    				<de>Paul Burk ist ein Programmierer, der zahlreichen Funktionen dieser Seite Entwickelt hat.</de>
    				<en>Paul Burk is a developer who helped in this website. He joined the team in 2012.</en>
    		</token>
    		
    		<token id="description_7">
    				<de>Feres Henteti ist der Ersteller unserer YouTube Kanal Intros. Er entwirft diese seit November 2013.</de>
    				<en>Feres Henteti is the intros creator and designer for our videos since november 2013.</en>
    		</token>
    		
    		<token id="keyword_1">
    				<de>Administrator</de>
    				<en>Administrator</en>
    		</token>
    		
    		<token id="keyword_2">
    				<de>Viedobearbeitung</de>
    				<en>Video editing</en>
    		</token>
    	</descriptions>
    	
    	<footercontent>
    		<token id="link_1">
    				<de>Impressum</de>
    				<en>Contact</en>
    		</token>
    		
    		<token id="link_2">
    				<de>FAQ, Datenschutz & Disclaimer</de>
    				<en>FAQ & Privacy Policy</en>
    		</token>
    		
    		<token id="link_3">
    				<de>YouTube Freunde</de>
    				<en>YouTube friends</en>
    		</token>
    		
    		<token id="link_4">
    				<de>Partner</de>
    				<en>Partners</en>
    		</token>
    		
    		<token id="link_5">
    				<de>Besuchercounter</de>
    				<en>Guestcounter</en>
    		</token>
    		
    	</footercontent>
    	
    </lang>


    Gleichzeitig habe ich auch eine weitere Datei zum testen erstellt und dort bereits JQUERY eingebunden und ein Span erstellt.
    <span id="title_1" class="lang titles"></span>


    Aber wie bekomme ich jetzt den Inhalt mit der Javascript Funktion auf die Seite?

    Oder habe ich etwas falsch gemacht?


    Liebe Grüße
  13. Schau mal, im Internet gibt es zahlreiche Anleitungen:

    http://marco.seaside-graphics.de/programmierung/jquery/jquery-xml-dateien-einlesen-und-ausgeben

    Der hat da ein ähnlich strukturiertes XML-Dokument, das JS mit jquery kannst du fast 1 zu 1 so übernehmen und nur noch anpassen...

    PS: um die untergruppe zu strukturieren, dafür hast du ja eine 2. Klasse drin, wonach du filtern kannst, um auf anhieb in den richtigen Baum zu wechseln. Diese Segmentierung nach Bereichen macht vor allem sinn, wenn man mehrere Module noch reinschreibt und die irgendwann entfernt und neue rein, damit man weiß, was wo hin gehört...

    Beitrag zuletzt geändert: 3.9.2014 14:23:08 von sebulon
  14. nabend ihr,

    die Lösung mit Javascript und xml
    ist ja an sich eine gute Sache allerdings
    sollte man hierbei nicht vergessen das
    dies nicht ohne alternativen weg ohne Javascript
    Sinnvoll ist... macht keinen so guten Eindruck
    wenn bei ausgeschaltetem Javascript nix mehr geht


    Gruß
    VA / Akashia
  15. Insbesondere bei dynamischen Inhalten die aus der Datenbank geladen werden macht der Umweg über XML in meinen Augen wenig Sinn (wenn man PHP verwendet).

    Beispiel:
    Page Load: index.php mit den neuesten deutschen Blogbeiträgen
    Javascript übersetzt nach "de"
    Benutzer wechselt Sprache auf "en"
    Javascript übersetzt nach "en", dabei kann es dann Probleme mit den Blogbeiträgen geben:
    a) Blogbeiträge sind im englischen gar nicht vorhanden
    b) das Nachladen der Blogbeiträge per XML wurde nicht implementiert

    Wenn man eine Single-page Web Application (SPA) nutzt, wäre es sicherlich eine Überlegung sämtliche Daten via API nachladen zu können. Dazu sollte man jeglichen Inhalt in einer beliebigen Sprache nachladen können. Das kann allerdings trotzdem dazu führen, dass z.B. der Blogbeitrag im englischen gar nicht existiert. Bei einer Übersetzung mit Javascript muss dann relativ viel zusätzliche Logik implementiert werden.

    Grundsätzlich würde ich daher - insbesondere im Kontext von kleineren Webseiten - empfehlen es auf eine simple Art zu lösen. Das ist nicht so fehleranfällig und zielführender.
    Beispiel mit dem Slim Framework:
    Verzeichnis /de/ und /en/ erstellen, in beide die index.php legen in der Slim initialisiert wird. Zusätzlich eine Variable $language mit dem Wert des Verzeichnisnamen setzen.
    Die restliche Anwendung so aufbauen, dass bei Datenbankabfragen etc. z.B. die $language Variable automatisch mit übergeben wird, oder alternativ kann man auch einfach $language abhängige Models, Templates etc. laden.
  16. ja, es ist immer super, wenn man sich irgendwelcher frameworks bedient...

    man sollte auch ein Konzept haben für seine Seite... wenn ich eine lang XML einsetze, dann sollten die Inhalt natürlich da sein... und die Bloginhalte kann man sich auch als json-Objekte ziehen, sobald die rienkommen, nur macht es keinen sinn, UI-elemente Permanent neu zu laden, die ich eh da habe...

    und Probleme hatte ich mit meinen XML-lösungen bisher nie... wenn man sich 2-3 Gedanken macht...
  17. c*********n

    Ich hab mich zu dem Thema mal einbisschen erkundigt und zu folgendem gekommen.
    Wieso benutzt man nicht, parse_ini_file() ?
    Weiss zwar nicht wie gut oder schlecht die Lösung ist, aber es wäre mir die "vernünftigste" und einfachste Variante.
    Das ganze wird als Datei gespeichert, was so aussehen könnte:
    [adminarea]
    login = 'Einloggen'
    logout = 'Ausloggen'


    Das ganze wird dann mittels PHP eingefügt und ausgelesen:
    $lang = parse_ini_file("de.ini", TRUE);
    echo $lang['adminarea']['login']; // Gibt Einloggen aus

    Wobei man hier natürlich jeweils die entsprechende Datei/Sprache als GET Parameter übergeben müsste.

    Beitrag zuletzt geändert: 3.10.2014 21:11:41 von cannadesign
  18. Das ist letztendlich nur ein weiteres Textformat...

    Ich würde die unterschiedlichen Ansätze vergleichen und dann den wählen, bei dem man zum Abrufen der übersetzten Texte und zum Verfassen der Texte möglichst wenig Code/Text schreiben muss. Das Beispiel von cannadesign zeigt es sehr gut: Statt "Einloggen" muss man $lang["adminarea"]["login"] schreiben, das ist wesentlich länger und man muss einen ähnlichen Text (Variablenname und Inhalt) an mehreren Stellen schreiben...

    Meine Lösung wäre eine Kombination aus

    1. der Speicherung aller Inhalte in der Datenbank und einer Tabelle cnt(cntid,lang,txt) mit den Inhalten in allen Sprachen und
    2. einer der Lösungen mit Text/XML/PHP Dateien, um die Texte, die von der Webseite automatisch platziert werden, zu übersetzen. Ich würde vermutlich ein "headerloses" INI-Format bevorzugen, JSON oder "normales" INI ist allerdings auch leicht zu parsen.

    Der Grund ist einfach: Eine Text/XML/PHP Datei muss komplett in den Speicher geladen werden -- deshalb sollte sie nur einen Bruchteil der Texte enthalten, während eine Datenbank "on-demand" abgefragt werden kann.

    Statt den Client die rohe Sprachdatei verarbeiten zu lassen, würde ich eine PHP-Gegenstelle verwenden, die dann nur den Teil zurückgibt, der gerade vom Client gefordert wird. Damit kann falls nötig auch transparent zwischen Datenbank und Text/XML/PHP unterschieden werden. Allerdings bin ich ein Java Script Kritiker und daher von der "Sprachänderung ohne Reload" bzw. dem Clientseitigen Nachladen von Texten nicht wirklich überzeugt. Ich kenne nur wenige Fälle, wo Java Script einen echten Mehrwert bietet (teilweise löbliches Beispiel ist die Google-Bildersuche: "Endloses Scrollen" ermöglicht es viel mehr Ergebnisse in kurzer Zeit zu betrachten; das Verhalten eines "Mittleren Mausklicks auf ein Bild" produziert in meiner Konfiguration jedoch ein ziemlich verwirrendes Ergebnis).

    Die bereits angesprochenen negativen Erfahrungen mit XSLT kann ich übrigens teilweise bestätigen: Ich verwende XSLT nur sehr selten und dann nur in möglichst einfachen Fällen, weil es ansonsten oft viel weniger Kopfzerbrechen bereitet, ein Programm zu schreiben, welches die XML Daten parst, verarbeitet und wieder als XML ausgibt, als sich durch kryptisches XSLT zu kämpfen -- auch wenn man womöglich mit 1/4 des Codes auskommt, benötigt man doch doppelt so lange, diesen zu schreiben.
  19. mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    akashia schrieb:
    nabend ihr,

    die Lösung mit Javascript und xml
    ist ja an sich eine gute Sache allerdings
    sollte man hierbei nicht vergessen das
    dies nicht ohne alternativen weg ohne Javascript
    Sinnvoll ist... macht keinen so guten Eindruck
    wenn bei ausgeschaltetem Javascript nix mehr geht


    Gruß
    VA / Akashia


    Mal abgesehen von der Frage, ob JS deaktiviert ist oder nicht wäre für mich auch noch entscheidend, was denn eigentlich der Google Bot sieht/liesst.

    Du schreibst zwar
    mit PHP ist es vielleicht einfacher allerdings habe ich immer Probleme mit dem Design wenn ich irgendwas include.

    aber dann musst du eben zunächst mal den Grundaufbau deiner Website in Ordnung bringen.
  20. c*******k

    Hallo,

    ich habe die ganzen Beiträge jetzt nur mal kurz überflogen und deshalb entschuldigt bitte wenn es eine Dopplung gibt.
    Es gibt auch eine sehr einfache Möglichkeit. Der tolle Onkel Google hat da mal wieder was zu bieten: Die Google Translation API. Du kannst einfach mal im Internet suchen,nach der richtengen Webseite dafür. Einfach die Sprachen auswählen, Layout und den Code dann auf deiner Webseite einfügen und FERTIG. Sobald dann jemand einer andere Sprache haben will, übersetzt Google dann für dich die Webseite.

    Ich hoffe es hilft,
    ClassBook
  21. c*********n

    classbook schrieb:
    Hallo,

    ich habe die ganzen Beiträge jetzt nur mal kurz überflogen und deshalb entschuldigt bitte wenn es eine Dopplung gibt.
    Es gibt auch eine sehr einfache Möglichkeit. Der tolle Onkel Google hat da mal wieder was zu bieten: Die Google Translation API. Du kannst einfach mal im Internet suchen,nach der richtengen Webseite dafür. Einfach die Sprachen auswählen, Layout und den Code dann auf deiner Webseite einfügen und FERTIG. Sobald dann jemand einer andere Sprache haben will, übersetzt Google dann für dich die Webseite.

    Ich hoffe es hilft,
    ClassBook

    Nya, die Überstzung von Google ist ja aber bekanntlicherweise ziemlich grottig. ;) Von Daher würde ich davon abraten und selber Übersetzungen schreiben.
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!