Frage Entwurfsmuster für mehrere Sprachen Website?


Sagen wir, ich entwerfe eine Website, auf der wir Englisch, Französisch, Spanisch, Deutsch und Korea haben (ich bin nicht, aber lassen Sie uns so tun, als wäre ich).

Ich kann mich nicht auf Dienste wie google translate verlassen, da die Art der Website nicht für Unterhaltung, sondern für Geschäfte bestimmt ist. Nehmen wir an, ich habe Zugang zu professionellen Übersetzern, die etwas im Kontext einer anderen Sprache übersetzen und mir diesen Text geben können.

Was sind bekannte und einfache Möglichkeiten, Inhalte mit einer Website über mehrere Sprachen zu verteilen?

Es gibt viele Optionen, z. B. separate Seiten, eine Datenbank usw. Aber ich kann nicht wirklich entscheiden, was am besten ist, wie das Konzept skaliert, was zu beachten ist und wie mit fehlenden Übersetzungen umgegangen werden soll.

Gibt es dafür etablierte Praktiken?


9


Ursprung


Antworten:


Das breite Thema, nach dem Sie fragen, heißt "Internationalisierung und Lokalisierung" (oder kurz I18N und L10N). Die wichtige Sache, an die man sich erinnert, ist, dass es ist nicht nur um Nachrichten zu übersetzen. Es gibt viele andere Dinge, die in die Internationalisierung einer Website eingehen.

Die offensichtlichsten Dinge, die Sie benötigen, sind:

  • Eine Zeichencodierung, die für Zeichen in allen Sprachen funktioniert, nicht nur für Englisch (Das bedeutet, dass alles bis auf die Datenbank UTF-Codierung verwenden soll)
  • Eine Möglichkeit, den Benutzer zu repräsentieren Gebietsschema (dh: Java's Gebietsschema Klasse)
  • Ein allgemeines Muster zum Erstellen einer Nachricht im Gebietsschema des Benutzers (z. B. Spring's Nachrichtenquelle

Andere Dinge, die Sie beachten müssen:

  • Sortieren von Strings basierend auf Locale
  • Formatierungsdatum basierend auf dem Gebietsschema
  • Zeigt immer Zeiten in der Zeitzone des Benutzers an
  • Entfernungsmessungen für das Gebietsschema des Benutzers angezeigt (dh: Meilen versus Kilometer?)
  • Layout der Website von rechts nach links für Sprachen wie Hebräisch
  • Denken Sie darüber nach, wie Sie Ihre Nachrichten pluralieren. String message = "Please fix the following error" + (errors.size() > 1 ? "s" : ""); funktioniert einfach nicht in einem internationalisierten Programm.
  • Denken Sie darüber nach, wie Sie Ihre Webseiten auslegen sollen, wenn die Länge des Texts stark variieren kann. Und nehmen Sie niemals an, dass ein Zeichen mehr oder weniger eine bestimmte Breite hat (ein einzelnes Zeichen im Kanji könnte 8 mal breiter sein als ein Kleinbuchstabe). ich')

Die beste Ressource, die ich dafür finden kann, ist die Benutzerhandbuch der ICU-Bibliothek. Wenn Sie Java verwenden, ist dies die zu verwendende Bibliothek.

Hoffentlich ist diese Antwort ein hilfreicher Start!


13



Sehen Sie sich die Empfehlungen von Google an Multi-regionale und mehrsprachige Websites. Hoffe, dass Informationen nützlich sind. Viel Glück.


3



Stimme völlig mit @Michael D und anderen Entwicklern überein, die ihre Antworten gepostet haben. Obwohl die für diese Frage bereits akzeptiert wird, aber ich denke, eine kleine Option wie die Pseudoklasse: lang () kann hilfreich sein beim Erstellen mehrsprachiger Websites. Die Pseudoklasse: lang () ermöglicht es, die Sprache in verschiedenen Dokumenten zu bestimmen.

CSS-Code:



    q: lang (fr) {/ * Zitate für Französisch * /
     Zitate: "\ 00AB" "\ 00BB";
    }

    q: lang (en) {
     Zitate: "\ 201C" "\ 201D"; / * Zitate für Englisch * /
    }


HTML Quelltext:

 <html>
 <body>
 <pre>
     <p>Quote in French: <q lang="fr">То être ou ne pas être</q>.</p>
     <p>Quote in English: <q lang="en">То be or not to be</q>.</p>
 </pre>
 </body>
 </html>

Und die Ausgabe wird so sein:

Quote in French language: << То être ou ne pas être >>.

Quote in English language: "То be or not to be".

Bitte beachten Sie, dass es sich um Dokumente und nicht um einen Text handelt, da sie komplexe Formatierungen durchführen.


2



Wir haben eine Reihe von Dateien auf dem Datenträger, die alle Zeichenfolgen in einem bestimmten Widget / Modul / was auch immer enthalten, und separate Dateien pro Sprache, z.

foo.strings == generic (happens to be US english)
foo.fr.strings == french
foo.fr-CA.strings == canadian french 
foo.en-CA.strings == canadian english

Basierend auf dem Accept-Language-Header des Clients bestimmen wir, welche Sprache er möchte.

Wenn eine bestimmte Sprache zuerst angefordert wird, drücken wir das Dateisystem, um die große Zeichenfolgenzuordnung für diese Sprache aufzubauen, und speichern sie dann im Speicher. Wenn eine bestimmte Zeichenfolge in fr-CA nicht definiert ist, werden wir den Stapel auf fr und dann auf den generischen Stapel hochspringen

Seiten werden dynamisch generiert und die generierte Version jeder URL wird zwischengespeichert, abhängig von den Sprachheadern des Benutzers (unter anderem).

Ich hoffe, das hilft


1