Frage

Ich baue ein Englisch / Französisch Website und frage mich, ob es eine bewährte Methode für eine solche Aufgabe ist.

  1. Sie die Seite Duplizierung und Französisch und Englisch Ordner mit der entsprechenden Stelle im Innern zu machen.

  2. Mit PHP den Inhalt mit HTML-Tags zu tauschen. z.B. if ($ lang == 'en'):

  3. php Verwenden Sie nur den Inhalt der HTML für beide gleich Tags verlassen zu tauschen. z.B. wenn Aussagen ganz über den Platz. Wäre dies für Effizienz schlecht sein?

Alle anderen Vorschläge würden geschätzt

War es hilfreich?

Lösung

Wir haben einen Rahmen für wenn (falls) unsere Website wird international, die wie folgt funktioniert ...

Ordnerstruktur;

/
  lang/
    english/
      images/
      text/
    dutch/
      images/
      text/

Jeder Text oder Bilder, die Sprache spezifisch sind von der Seite entfernt werden direkt und durch Konstanten ersetzt. zB auf dem Anmeldebildschirm ziehen wir in;

echo TEXT_LOGIN_WELCOME;

, die in /lang/english/text/login.php definiert als;

define('TEXT_LOGIN_WELCOME', 'Welcome, please login:');

aber in /lang/dutch/text/login.php es definiert als:

define('TEXT_LOGIN_WELCOME', 'Welcome, please login (in dutch):'); 

; -)

Jede Sprachdatei definieren ist genau die gleiche wie die Seite mit dem Namen es für verwendet wird, so dass, wenn wir eine öffentlich zugängliche Seite laden, brauchen wir nur, um herauszufinden, welche Sprache der Anwender spricht, und wir können die entsprechenden Sprache definieren Include-Datei .

Das Gute an diesem System ist, dass die alle Sprach info zentralisiert. Wenn Sie eine neue Sprache hinzuzufügen, kopieren Sie einfach die main (Englisch?) Ordner, benennen Sie es, zip die ganze Sache und es zu einem Übersetzungsdienst schicken ihre Magie zu arbeiten. Natürlich ist der Nachteil dieses Systems die Wartung sowohl als Sprachen und Inhalt wachsen ... Wenn jemand irgendwelche gute Ideen in Bezug auf das hat, dann würde ich sie gerne hören!

Btw, wenn Sie am Ende brauchen einen Standort des Benutzers zu erraten durch IP, möchten Sie vielleicht ein href überprüfen <= „http://www.maxmind.com/app/ip-location“ rel = „noreferrer“ > GeoIP .

Andere Tipps

Verwenden Sie ein Template-System. Smarty Template Engine wahrscheinlich eine der bekanntesten PHP diejenigen ist. Nicht nur, dass ein Template-System dient den genauen Zweck Sie erreichen wollen, es macht auch die Aufrechterhaltung Seiten viel leichter durch die Anzeige Code aus dem Inhalt zu trennen (was auch ermöglicht es Ihnen, die gleiche Vorlage für viele verschiedene Inhaltsseiten eines zu verwenden, ähnliche Art).

Als einfachste Art, wie ich Sie empfehlen i18n Internationalisierung Methode & gettext Kataloge (.po-Dateien).
Der berühmte Wordpress Projekt ist es auch verwendet wird.

1 - die gesamte Website Duplizierung wird Sie zwingen, jeden Code touch-up in die 2 Ordner zu wiederholen: - [

2 - Wenn Sie meinen somenting wie

<?php if($lang=='en') { ?>  
  <p>English text</p>  
<? } else { ?>  
  <p>Text français</p>  
<? } ?>

Diese Lösung ist perfekt zwei Sprachen auf der gleichen Seite zu verwalten.
Aber Sie haben noch dupliziert Tags.

3 -. Ändern Sie nur Inhalt es ist wirklich Zufriedenheit
Vielleicht php Compilierung nach unten vermehren von if-Anweisungen wiegen können ... Ich weiß es nicht.
Wie dem auch sei Dokument kann mit diesem Ansatz prägnanter sein:

<?php            
  function interpreter($buffer) {
    $pieces = explode('#', $buffer);

    if (isset($_GET['lang'])) $begin=$_GET['lang'];
    else $begin = 1;  // 1 to display français, 2 to display english

    $tot = count($pieces);          

    for ($i=$begin; $i<$tot; $i+=3) {  // remove one language
    unset($pieces[$i]); }

    foreach ($pieces as $value) {  // recompose the text
    $output .= $value; }

    return $output;
  }

  ob_start("interpreter");      
?>

<a href="?lang=#1#2#">#Français#English#</a>
<p>#English text#Texte français#.</p>

<?php ob_end_flush() ?>

Der Text zwischen ob_start und ob_end_flush NACH Kompilieren von PHP analysiert.
Das Mittel betroffenen Strings kommen zB. von echo-Anweisung, nicht innerhalb von Tags.
Auch Inhalte von PHP kommt gehören betroffen.
Aber keine externen CSS oder Javascript.

Halten Sie die Aufmerksamkeit Begrenzer # noch kein caracter an anderer Stelle verwendet wird.
Vielleicht werden Sie es vorziehen, mit || oder ^^

ersetzen

Natürlich in Zukunft können Sie diese Lösung in 3 Sprachen anpassen oder mehr. Aber wenn Sie die „Dritte Sprachübersetzung #“ in vielen Zeilen einer großen Website einfügen, vielleicht die Lösung von MATW Ihnen passt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top