Mehrsprachige Website

Tekl
Jr. Bludit
Posts: 1
Joined: Sat Apr 04, 2020 10:19 pm

Hallo,

hat jemand Ahnung, wie man mit Bludit eine mehrsprachige Seite umsetzt, wo man einfach zwischen den Sprachen umschalten kann? Klar, ich könnte mehrere Instanzen von Bludit installieren oder mit Sprachunterordnern arbeiten, aber dann wären die entsprechenden Sprachversionen nicht miteinander verknüpft. Ein entsprechendes Plug-in konnte ich nicht finden.

Danke für eure Hilfe.

Beste Grüße

Tekl
User avatar
Edi
Site Admin
Posts: 3121
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Has thanked: 54 times
Been thanked: 77 times
Contact:

Tekl wrote: Sat Apr 04, 2020 10:30 pm hat jemand Ahnung, wie man mit Bludit eine mehrsprachige Seite umsetzt, wo man einfach zwischen den Sprachen umschalten kann?
Es scheint, dass derzeit ein Plugin am Enstehen ist:

viewtopic.php?f=14&t=1723
Klar, ich könnte mehrere Instanzen von Bludit installieren oder mit Sprachunterordnern arbeiten, aber dann wären die entsprechenden Sprachversionen nicht miteinander verknüpft.
Ja, verschiedene Installationen wäre eine Möglichkeit.

Eine andere wäre die Verwendung von Kategorien und einer manuell eingerichteten Navigation mit if-Bedingungen.
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
User avatar
Torsten_Kelsch
Legend Bludit
Posts: 263
Joined: Thu Aug 27, 2015 10:24 pm
Location: Germany
Has thanked: 4 times
Been thanked: 2 times
Contact:

Interessant, ich habe momentan auch die Anforderung, eine zweisprachige Website mit Bludit zu bauen. Wenn ich das gut umgesetzt bekomme, werde ich meine Lösung hier bekanntgeben.

Meine Idee ist, per PHP abzufragen, auf welcher Seite die/der Besucher/in gerade ist und dann bei Klick auf den Sprach-Button zur genau entsprechenden fremdsprachigen bzw. deutschen Seite zu leiten.
Last edited by Torsten_Kelsch on Wed Feb 24, 2021 10:41 am, edited 1 time in total.
On Error GoTo Bed
User avatar
Torsten_Kelsch
Legend Bludit
Posts: 263
Joined: Thu Aug 27, 2015 10:24 pm
Location: Germany
Has thanked: 4 times
Been thanked: 2 times
Contact:

Torsten_Kelsch wrote: Tue Apr 07, 2020 7:28 pm Meine Idee ist, per PHP abzufragen, auf welcher Seite die/der Besucher/in gerade ist und dann bei Klick auf den Sprach-Button zur genau entsprechenden fremdsprachigen bzw. deutschen Seite zu leiten.
Ist mir zu aufwändig. Ich habe jetzt eine Subdomain für den englischen Bereich eingerichtet. Die Sprachnavigation leitet dann einfach auf die englische Homepage.

Auf diese Weise benötige ich zwar eine zweite Bludit-Installation, aber Bludit ist ja schlank, schnell hochgeladen und flott eingerichtet.
On Error GoTo Bed
User avatar
jlandt
Master Bludit
Posts: 73
Joined: Mon Feb 22, 2021 10:56 am
Location: Berlin
Has thanked: 2 times
Been thanked: 10 times
Contact:

Hatte ich mir jetzt ebenfalls Gedanken drüber gemacht... Das besagte Plugin hatte ich getestet. Hmmm.... ja.... Ist sicher noch ausbaufähig. Wenn das softwareseitig gelöst/umsesetzt wird, greift das mitunter ziemlich weit ein. Das betrifft ebenfalls viele Plugins. Vermutlich muss das per API umgesetzt werden... samt globaler defaults. Das kann/muss dann wiederum jeder Plugin/Themeentwickler nutzen.

Anderer Gedanke... auch Hinsichtlich Vermeidung unnötiger Redundanzen... ist eine Lösung per Docker+Reverse Proxy o.ä. Richtet sich an alle mit docker Kenntnissen und auch Möglichkeiten des Hostings. Spiegelt man Sites bedeutet das je nach Szenario auch Mehraufwand aus Betriebssicht (Updates, Konfigurationsaufwand, Backups, Monitoring, ...)

Beispiel:

Drei docker Container...
- reverse proxy der die Sprachversion anhand der Url identifiziert
(www.domain.de/de/* ; www.domain.de/en/*)
- bludit container mit gemounteten content dir 'de'
- bludit container mit gemounteten content dir 'en'

... Für die App selbst wird nur ein Mal das docker image erstellt. Beide container nutzen das image. Halt nur mit unterschiedlichen content dirs. Eine weitere Skalierbarkeit (weitere Sprachen) ist somit auch gegeben.

Ist erstmal nur ne Idee.
Gruss, Jürgen
johannesh19
Ssr. Bludit
Posts: 14
Joined: Fri Mar 12, 2021 5:05 pm
Has thanked: 1 time

Eine Quick-and-Dirty-Lösung:
  • Jede Seite für jede Sprache von Hand einzeln anlegen, mit Namen bzw. URLs, die genau einem bestimmten Muster folgen.
    Beispiel: de-ueber, en-ueber, fr-ueber, de-kontakt, en-kontakt, fr-kontakt
  • In der index.php des Themes abfragen, wie (im obigen Beispiel) die ersten zwei Buchstaben des Seitennamens lauten, und im Menü nur Seiten anzeigen, die mit den gleichen zwei Buchstaben anfangen (und damit die anderen Sprachen ausfiltern).
    Beispiel: de-ueber, en-ueber, fr-ueber, de-kontakt, en-kontakt, fr-kontakt
  • Zwischen den Sprachen umschalten durch Links auf sich selbst, gekürzt um die ersten zwei Buchstaben, die durch die entsprechenden Buchstaben anderer Sprachen ersetzt sind.
    Beispiel: Auf Seite de-ueber -> __-ueber -> Links setzen auf en-ueber und fr-ueber
Das ist mit relativ wenig Programmierung machbar, erfordert aber große Disziplin beim Pflegen der Seite. Aber für eine Seite, die nur einmal angelegt und dann kaum noch verändert wird, wäre das schnell machbar.
User avatar
Torsten_Kelsch
Legend Bludit
Posts: 263
Joined: Thu Aug 27, 2015 10:24 pm
Location: Germany
Has thanked: 4 times
Been thanked: 2 times
Contact:

johannesh19 wrote: Fri Mar 12, 2021 6:09 pm Eine Quick-and-Dirty-Lösung:
  • Jede Seite für jede Sprache von Hand einzeln anlegen, mit Namen bzw. URLs, die genau einem bestimmten Muster folgen.
    Beispiel: de-ueber, en-ueber, fr-ueber, de-kontakt, en-kontakt, fr-kontakt
[…]
Gute Idee, aber dann könnte man den Seiten doch auch gleich deutsche und fremdsprachliche Namen/URLs geben, also etwa start/home, ueber/about usw. Allerdings müsste man dann natürlich alle Navigationen ganz von Hand bauen, was aber im Fall, dass nicht ständig neue Seiten hinzukommen sollen, egal wäre. Bei einem Blog wäre das so natürlich nicht machbar, zugegeben.
On Error GoTo Bed
User avatar
jlandt
Master Bludit
Posts: 73
Joined: Mon Feb 22, 2021 10:56 am
Location: Berlin
Has thanked: 2 times
Been thanked: 10 times
Contact:

Das Thema geht mir erneut durch den Kopf. Verschiedene Überlegungen als auch Ansätze kenne ich bereits von anderen CMS. Vielleicht wäre eine tabellarische Übersicht auch hilfreich in der die Ansätze mit den Vor- und Nachteilen ersichtlich wäre. Generell ist das komplexer und muss von verschiedenen Aspekten her betrachtet werden. Nicht nur was das reine Rendering auch und gerade unter SEO Aspekte betrifft als auch Betrieb (Update, Backup/Restore, Persistierungen).

Zwei Beispiele...

Beispiel 1:

Eine einfache Form/Möglichkeit (ungetestet) für reine Kurztexte ist ggf. auch das Anlegen eines 'Custom Fields'. Im Artikel-Editor hätte man somit die Möglichkeit gleich alle Übersetzungen in einer Form eingeben zu können. Alle Sprachvarianten würden ebenfalls an der selben DocId 'hängen'. Im Theme könnte das jeweilige Feld (z.B. in Abhängigkeit von header Infos) gerendert werden.

Aus SEO Sicht ist das eher Kontraproduktiv, weil jede Sprachvariante auch den entsprechenden Titel hätte. Dieser wiederum ist Bestandteil der Url.... Dazu kommen noch unterschiedliche Title bzw. andere Image Attribute wenn Fotos verwendet werden etc.

Es wäre auch nur ein Theme sinnvoll da man sich ansonsten in X IF Bedingungen innerhalb des Themes verläuft... Das man sicher auch per Plugin lösen könnte das eine Art Mapping realisiert (Sprache X verwendet Theme Y)

Beispiel 2:

Duplizierung per Docker. Ist leicht zu realisieren.... erweiterbar etc. Für Updates ließe sich 'watchtower' einsetzen. Vieles kann man dann mittels Docker Volume Mounts realisieren. Z.b das alles Container (Sprachen) ein und das selbe Theme Verzeichnis nutzen. Das Selbe dann auch mit den anderen Komponenten (Content-Subdirs, Plugins). Es ließen sich aber auch gleich separate Themes verwenden. Weiterhin könnten auch gleich unterschiedliche Configs gemounted/persistiert werden...

Nachteil ist halt, dass man sich in jede Sprache extra einloggen müsste um den Content zu editieren. OK, man könnte einen Service schaffen der per Bludit API EINE Form bietet die dann wiederum jeweils den Call zur entsprechenden Sprache (Container) durchführt. Das wäre somit eine halbautomatische Lösung da das Login mittels API Key erfolgt.

Ganz vorn hängt ein Proxy der dann an Hand einer Subdomain (de.mydomain.tld) oder ein Pfad (www.mydomain.tld/de/) an Hand vom header (Browser-Language) gleich zur jeweiligen Sprache switched. Zusätzlich gibt es noch ein Plugin das eine z.B. Drop-Down LIste in einer Navi zum manuellen Switchen anbietet. Vorteil ist, dass man den Core schlank hält und gleichzeitig eine Art Load-Balancing nutzen würde, da User unterschiedliche Container je nach Sprache verwenden würden. Ansonsten hätte man wieder EINEN Service der irgendwie ALLES handeln muss. Und somit wäre man dann wieder bei..... anderen CMS... die im Laufe der Zeit zu Monstern mutiert sind. Namen lasse ich da mal weg. ;-)

Die Trennung bzw. Aufteilung auf separate Service hat somit Vor- und Nachteile. Dabei spielen noch Überlegungen eine Rolle wie Aufwendig es ist, falls eine Sprache hinzukommt. Müssen dann alle 1000 Artikel 'angefasst' werden? Sind weitere Umbauten nötig?

Fazit:

Lösung hängt vom Szenario, den Möglichkeiten als auch von den Ansprüchen/Anforderungen ab. Ist einem SEO nicht so wichtig ist es sicher egal, ob nur der Haupttext übersetzt aber nicht die Urls, Img-Alt Tags etc.
Gruss, Jürgen
User avatar
jlandt
Master Bludit
Posts: 73
Joined: Mon Feb 22, 2021 10:56 am
Location: Berlin
Has thanked: 2 times
Been thanked: 10 times
Contact:

Noch als (hoffentlich) kurze Ergänzung.

Einige DB basierte CMS nutzen u.a. auch jeweils für jede Sprachvariante eine eigene DB Tabelle. Ob es bei Bludit dann ein separat gemountetes Content Dir ist und man den Weg über Subdirs gehen würde/sollte..... Und, ob alles voll automatisch gehen muss oder per Configs auf die man selbst jederzeit Einfluss hätte....

Die Frage nach Deployments wurde noch nicht gestellt...
Die Frage nach Zugriffsrechten bezüglich eingesetzter Online-Redakteure ebenfalls nicht...
Gruss, Jürgen
User avatar
jlandt
Master Bludit
Posts: 73
Joined: Mon Feb 22, 2021 10:56 am
Location: Berlin
Has thanked: 2 times
Been thanked: 10 times
Contact:

Wenn ich's machen würde

... würde ich vermutlich eine docker-compose.yml mit folgenden Containern erstellen:

- reverse Proxy Container (mit Caddy; einfache extern gemountete Config)
- Bludit-Container für DE
- Bludit-Container für EN
- Bludit-Container für XX
- watchtower Container (Updated alle Sprach-Container falls neues Bludit-Image)

Mounts vermutlich so:
- Content : Sprach subdir wird jeweils entsprechend in den entsprechenden Sprach-Container gemounted
- Theme : ein Theme Ordner für alle Sprach-Container
- Plugins : ein Plugin Ordner für alle Sprach-Container
- Config : ein Verzeichnis in dem alle Configs enthalten sind (mit lang Kürzel) gemounted als jeweilige Config innerhalb des entsprechenden Containers

... Dann kann man sich immer noch überlegen ob man ein per cron gesteuertes Backup Skript verwendet, Git webhooks mit einsetzt, alles per gemounteten remote Dateisystem verwaltet.... whatever
Gruss, Jürgen
Post Reply