Eine sehr grundlegende Frage. In der app.yml habe ich fi als Standard-Locale. Aber tut es mehr, als nur Standardwerte für alles und jeden festzulegen?
Und wenn ja, wird ein Benutzer dann alles in dieser Standardsprache, jetzt fi, sehen, bis Allow user locale geändert wird?
Aber was ist mit Set locale from accept language header? Wenn jemand en_US hat, wird dann die englische Version angeboten? Und bedeutet das, dass die Standard-Locale nur ein Vorschlag ist und überschrieben wird, wenn Accept-Language etwas anderes ist?
Und der Grund, warum ich das frage, ist meine neue Website, die stark auf die USA ausgerichtet ist und ein Forum benötigt. Aber ich glaube nicht, dass sie so viel Aufmerksamkeit erregt, dass es sich lohnt, all die Arbeit zu investieren, die die Einrichtung eines Forums erfordert. Daher habe ich über eine Lösung nachgedacht, bei der ich diese US/globalen Besucher zu einer speziell dafür vorgesehenen Kategorie leite.
Aber mein Forum ist ansonsten komplett Finnisch, und wenn Accept-Language die Standard-Locale nicht ändert, wird das nicht funktionieren.
(Und teilweise hoffe ich, dass die Übersetzer-Sache irgendwann funktioniert ).
Ich weiß, das ist keine echte Support-Frage, aber ich versuche, General… zu vermeiden.
Dies ist nichts, worüber ich sehr viel weiß, aber in Ermangelung anderer Antworten bisher…
Ich glaube, dass das Hinzufügen des Standard-Locales zu Ihrer app.yml alles überschreibt, was Sie für default locale in Ihren Website-Einstellungen festgelegt haben (und es auch von der Einstellungsseite entfernt). Aber das wäre nur der Standard, und Sie können die Leute wählen lassen (oder ihre Browser wählen lassen) eine für sie besser geeignete Alternative.
Hoffentlich ist das relevant, wenn nicht, kann dies einfach ein hilfreicher Stoß sein, um zu sehen, ob wir eine sachkundigere Antwort finden können.
Es gibt zwei Zweige der Logik in ApplicationController#with_resolved_locale: angemeldete Benutzer und abgemeldete Benutzer.
Abgemeldete Benutzer (1) setzen die Locale aus der Anfrage und (2) verwenden dann die Site-Einstellung „Standard-Locale“, wenn keine erkannt wurde.
Die Priorität ist ?lang= in der URL, dann der locale-Cookie, dann Accept-Language, wenn jede jeweilige Site-Einstellung aktiviert ist.
Die Logik für angemeldete Benutzer ist einfacher: Benutzereinstellung, dann „Standard-Locale“, wenn die Benutzereinstellung verboten ist.
In allen Fällen wird en verwendet, wenn die aufgelöste Locale vom Discourse-Server entladen wurde. (Dies tritt hauptsächlich während Unit- und Integrationstests auf, wenn ich mich recht erinnere.)
locale = SiteSettings::DefaultsProvider::DEFAULT_LOCALE if !I18n.locale_available?(locale)
Zusammenfassend lässt sich sagen, was es tut:
Es ist die Sprache für anonyme Anfragen ohne Accept-Language-Header.
Insbesondere einschließlich des Kontoregistrierungsprozesses.
Es ist die Sprache, die immer verwendet wird, wenn Sie Benutzern nicht erlaubt haben, ihre eigene Sprache zu wählen, oder der Benutzer keine bevorzugte Locale festgelegt hat.