Verwenden Sie standardmäßig eine andere Sprache als "Standard"


7

Wir erstellen derzeit eine ziemlich große Website, die zunächst auf Schwedisch, später jedoch in anderen Sprachen veröffentlicht wird. Aus diesem Grund haben wir alles auf Englisch gebaut und dann alles ins Schwedische übersetzt. Für die Veröffentlichung sollte nur Schwedisch zugänglich sein. Hier beginnt das Problem.

-Wir wollen / können aus verschiedenen Gründen keine Sprach-URL-Präfixe verwenden (PURL-Konflikte, Hässlichkeit, werden nicht benötigt, sobald die Site in mehr als einer Sprache verfügbar ist)

-Wir können Schwedisch nicht als Standardsprache verwenden, da dadurch alle Übersetzungen beschädigt werden (String-Übersetzungen betrachten dann Schwedisch als Originalsprache). Da alles von Feldern, Beschriftungen, Inhaltstypen, Hilfetexten usw. ursprünglich in Englisch ist, ist dies keine Option.

-Wir können die Browsererkennung verwenden, aber das ist nicht wirklich narrensicher und deckt nicht alle Fälle ab. Viele Benutzer in Schweden verwenden Englisch als Browsersprache.

-Wir könnten den IP-Standort als Ergänzung zu den oben genannten verwenden, aber es ist auch nicht narrensicher.

Was wir wirklich brauchen würden, ist Schwedisch als Standardsprache zu verwenden, aber irgendwie Englisch als Ursprungssprache. Ist das irgendwie möglich?


Haben Sie eine bessere Lösung (vielleicht ein Modul?) Als die Implementierung gefunden hook_language_negotiation_info()?
Isaac

Antworten:


6

Drupal 7?

Die Sprachaushandlung ist erweiterbar. Sie müssen lediglich hook_language_negotiation_info () implementieren . Dort können Sie tun, was Sie wollen, wie vorerst immer schwedisch. Es sieht auch so aus, als könnten Sie sich auf die Sprachen beschränken, in die Sie wechseln können. Ich bin mir jedoch nicht sicher, wie das genau funktioniert.

Sie sind sich nicht sicher, was Sie tun sollen, wenn Sie weitere Sprachen hinzufügen, aber Sie können beispielsweise andere Verhandlungsrückrufe in Ihrem und Fallback auf Schwedisch aufrufen, wenn es sich nicht um eine der Sprachen handelt, die angezeigt werden sollen.


Hmm .. ok, Sie sagen also, wir können Englisch als Standardsprache verwenden (standardmäßig meine ich, dass es in admin / config / regional / language / Übersicht als "Standard" festgelegt wird) und trotzdem alle Besucher zur schwedischen Version zwingen, obwohl können wir uns nicht auf eine der Standardmethoden "Erkennung und Auswahl" verlassen?
Adam Gerthel

Mit dem oben verlinkten Hook können Sie Ihre eigenen "Erkennungs- und Auswahl" -Methoden erstellen, in denen Sie standardmäßig jede gewünschte Sprache zurückgeben können. Ich habe das nicht selbst gemacht, aber es sollte funktionieren.
Berdir

Es ist auch möglich, die Implementierung einer Sprachaushandlung, die von einem anderen Modul durchgeführt wird, mit hook_language_negotiation_info_alter () zu ändern .
Kiamlaluno

2

Diese Frage ist alt, aber ich denke, dass diese Antwort für jemanden immer noch nützlich sein könnte. Ein Modul mit dieser Funktionalität ist jetzt vorhanden. Sie finden es hier: https://drupal.org/project/fallback_language_negotation

Ich bin Entwickler, aber ich kenne nicht genug Drupal, um Module zu schreiben und Hooks zu implementieren. Ich brauchte diese Funktionalität dringend, konnte sie aber nicht alleine machen.

Dieses Modul ist auch sehr einfach, daher ist es für Anfänger gut zu verstehen, wie man Module schreibt.


0

Möglicherweise fehlen Ihnen einige Informationen (möglicherweise in 3 Jahren keine Rolle mehr), aber für mich scheint dies unkompliziert zu sein: Verwenden Sie die URL-Erkennung und konfigurieren Sie den Detektor für die Verwendung von Domains. Legen Sie dann die Domain Ihrer Site für Schwedisch und ein Präfix für Englisch fest . Auf diese Weise wird immer standardmäßig Schwedisch verwendet, da es mit Ihrer Domain übereinstimmt, und niemals Englisch, da Präfixe keine Rolle spielen (Sie müssen jedoch entweder Präfix oder Domain in die Sprachkonfiguration eingeben).

Eine Alternative könnte darin bestehen, den URL-Sprachverhandler im Kern zu ändern. Dies kann über hook_language_negotiation_info_alter () erfolgen . Es scheint sehr wenig Dokumentation dazu zu geben, aber ich habe es mit Erfolg verwendet, um eine ähnliche Logik in einem benutzerdefinierten Modul zu implementieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.