InfraGuard

Sprache wechseln · Lokalisierung

So ändern Sie die Anzeigesprache der InfraGuard-Konsole — 8 Sprachen, die vom Administrator gewählte aktivierte Teilmenge und die Auflösungsregel Sitzung→Cookie→Profil→Standard der Website.

InfraGuard ist eine Konsole in 8 Sprachen, mit Koreanisch als Standard der Zentrale und Englisch als globaler Rückfallsprache. Dieser Artikel behandelt (1) wie Benutzer die Sprache über den Umschalter in der Kopfzeile wechseln, (2) wie die Anzeigesprache bei jeder Anfrage bestimmt wird und (3) wie ein Administrator festlegt, welche Sprachen im Umschalter erscheinen.

Überblick — wozu es dient

Jede Beschriftung, jeder Menüpunkt und jede Meldung der Konsole läuft über einen Übersetzungsschlüssel (__('menu.security') usw.) statt über fest einprogrammiertes Englisch. Nach einem Sprachwechsel rendert der Server die Oberfläche ab der nächsten Anfrage aus den Übersetzungsdateien dieser Sprache (resources/lang/{locale}/*.php).

Der Katalog der unterstützten Sprachen sind die 8 Einträge unter admin in config/locales.php. Jede Sprache wird stets mit ihrer eigenen nativen Bezeichnung angezeigt, unabhängig von der gerade aktiven Sprache.

Code Native Bezeichnung Kürzel Echte Übersetzung
ko 한국어 KO ✅ Vollständig übersetzt (Standard der Zentrale)
en English EN ✅ Vollständig übersetzt (globale Rückfallsprache)
ja 日本語 JA ⏳ Fällt auf en zurück
zh 中文(简体) ZH ⏳ Fällt auf en zurück
es Español ES ⏳ Fällt auf en zurück
fr Français FR ⏳ Fällt auf en zurück
de Deutsch DE ⏳ Fällt auf en zurück
ru Русский RU ⏳ Fällt auf en zurück

Anfangs sind nur ko und en wirklich übersetzt (priority => ['ko','en'] in config/locales.php). Die übrigen sechs (ja·zh·es·fr·de·ru) haben noch keine Übersetzungsdateien und fallen automatisch auf en zurück (fallback_locale = en in config/app.php). Wer heute ja wählt, sieht nicht übersetzte Texte daher weiterhin auf Englisch — der Umschalter listet alle 8 Sprachen auf, zurück fällt nur der Wortlaut.

Wann Sie es nutzen

Aufbau

Sprachumschalter in der Kopfzeile (auf jedem Bildschirm)

Das Sprach-Dropdown in der Kopfzeile (layouts.partials.locale-switch + ui/locale-dd.js) listet nur die vom Administrator aktivierten Sprachen auf. Jeder Eintrag zeigt die native Bezeichnung sowie ein kurzes Kürzel (z. B. KO, EN); die aktuelle Sprache ist als aktiv gekennzeichnet.

Verwaltung ▸ Lokalisierung (aktivierte Sprachen verwalten)

Auf dem Bildschirm Verwaltung ▸ Lokalisierung (über die Schaltfläche oben rechts erreichbar) können Sie für den Katalog der 8 Sprachen:

Verwendung

1) Über den Umschalter in der Kopfzeile wechseln

  1. Öffnen Sie das Sprach-Dropdown in der Kopfzeile.
  2. Wählen Sie eine Sprache → der Browser navigiert zu GET /lang/{locale}.
  3. Der Server speichert Ihre Wahl und leitet zurück auf die vorherige Seite (redirect()->back()). Die neue Sprache gilt ab dem nächsten Rendern.

Der Endpunkt zum Wechseln sieht so aus:

GET /lang/ko      # zu Koreanisch wechseln
GET /lang/en      # zu Englisch wechseln
GET /lang/ja      # Japanisch (nicht übersetzt → Rückfall auf en)

Was der Server (LocaleController@switch) beim Wechsel tut:

Speicherort Schlüssel Wert Lebensdauer
Sitzung infr_locale gewählter Code für die Sitzung
Sitzung infr_lang gewählter Code für die Sitzung (Abgleich der Profilsprache)
Cookie infr_locale gewählter Code 1 Jahr (bleibt über Besuche hinweg erhalten)
DB users.lang gewählter Code dauerhaft (nur angemeldete Benutzer)

Wechselt ein angemeldeter Benutzer die Sprache, wird die Wahl zusätzlich in users.lang (Profilsprache) gespeichert, sodass die Sprache die nächste Anmeldung übersteht. Die Wahl von Gästen (nicht angemeldet) bleibt nur in Sitzung und Cookie erhalten.

Ein Aufruf von /lang/{locale} mit einem nicht unterstützten (oder vom Administrator deaktivierten) Code wird stillschweigend ignoriert, und die aktuelle Sprache bleibt bestehen — es wird kein Fehler ausgelöst.

2) Wie die Anzeigesprache bestimmt wird (SetLocale)

Die Middleware SetLocale bestimmt die Sprache bei jeder Web-Anfrage (auch auf der Anmeldeseite) nach der folgenden Rangfolge. Ein Kandidat wird nur akzeptiert, wenn er eine derzeit aktivierte Sprache ist.

1. session infr_locale   (in dieser Sitzung ausdrücklich über den Umschalter gewählt)
2. cookie  infr_locale   (dauerhafte Wahl über Besuche hinweg · gilt vor der Sitzung auch auf der Anmeldeseite)
3. session infr_lang     (Profil des angemeldeten Benutzers users.lang → bei der Anmeldung in die Sitzung geladen)
4. Standard der Website  (Locales::primary() = erste Sprache in der aktivierten Liste)

Eine automatische Erkennung über Accept-Language des Browsers findet NICHT statt. Ein Erstbesuch ohne Sitzung, Cookie oder Profilwahl wird deterministisch in der vom Administrator festgelegten Standardsprache der Website ausgeliefert, nicht in der Browsersprache (die Website-Einstellung hat Vorrang). Besucher können sie jederzeit über den Umschalter in der Kopfzeile ändern.

3) Aktivierte Sprachen verwalten (Administrator)

  1. Öffnen Sie Verwaltung ▸ Lokalisierung.
  2. Schalten Sie die anzubietenden Sprachen ein (Umschalter, Sprachwechsel, Profilsprache und die mehrsprachige Bearbeitung im Inventar laufen alle über diese Menge) und die übrigen aus.
  3. Sortieren Sie per Ziehen um — die oberste aktivierte Sprache wird zum Standard.
  4. Speichern Sie. Das Speichern wird als localization.save in infr_audit_log auditiert.

Weniger aktivierte Sprachen schränken das Angebot des Umschalters in der Kopfzeile sofort ein. Zur Absicherung muss mindestens eine Sprache aktiviert bleiben (das Speichern von null Sprachen gibt 422 zurück); bleibt kein gültiger Code übrig, fällt das System auf den vollständigen Katalog zurück, sodass immer mindestens eine garantiert ist.

Datenquellen

Element Ort
Sprachkatalog (8 + Bezeichnungen) config/locales.php → admin
Priorität der echten Übersetzung config/locales.php → priority = ['ko','en']
Rückfallsprache config/app.php → fallback_locale = en
Übersetzungsdateien resources/lang/{locale}/{msg,menu,infra,security,...}.php (in bootstrap/app.php über useLangPath neu gebunden)
Teilmenge der aktivierten Sprachen infr_setting (group=i18n, key=enabled) — CSV
Anzeigereihenfolge infr_setting (group=i18n, key=order) — CSV
Profilsprache users.lang
Wahl in der Sitzung Sitzung infr_locale / infr_lang
Dauerhafte Wahl Cookie infr_locale (1 Jahr)

Die Einstellungen zu aktivierten Sprachen und Reihenfolge liest App\Support\Locales mit einem 60-Sekunden-Cache. Bei einem Datenbankfehler oder fehlender Einstellung fällt er sicher auf ein leeres Array zurück (→ vollständiger Katalog). Nach dem Speichern macht Locales::flush() den Cache sofort ungültig.

-- Wo die aktivierte Menge und die Reihenfolge gespeichert sind (Beispiel)
SELECT `group`, `key`, `value` FROM infr_setting WHERE `group` = 'i18n';
-- group | key     | value
-- i18n  | order   | ko,en,ja,zh,es,fr,de,ru
-- i18n  | enabled | ko,en

Übergabe an das Frontend

Der Server übergibt die aktive Sprache und das Meldungspaket an den Bootstrap der View (z. B. window.__t = @json(__('msg')), window.__locale). Vue-Seiten und Mixins nutzen sie, um Zeichenketten clientseitig zu rendern und Datumsangaben gemäß der aktiven Oberflächensprache zu formatieren.

Zugriff

Aktion Mindeststufe
Sprache wechseln GET /lang/{locale} Gäste erlaubt — keine Anmeldung nötig (funktioniert auch auf der Anmeldeseite)
Aktivierte Sprachen ansehen/speichern Verwaltung ▸ Lokalisierung admin = 10

Fehlerbehebung und FAQ

Die gewünschte Sprache fehlt im Umschalter

Sehr wahrscheinlich hat ein Administrator sie deaktiviert. Schalten Sie sie in Verwaltung ▸ Lokalisierung ein. Umschalter, Sprachwechsel und Profilsprache laufen alle über die aktivierte Menge.

Ich habe die Sprache gewechselt, ein Teil des Textes ist aber weiterhin Englisch

ja·zh·es·fr·de·ru haben noch keine echten Übersetzungsdateien und fallen auf en zurück (anfängliche Strategie). Dass nur die nicht übersetzten Texte auf Englisch erscheinen, ist erwartungsgemäß. ko und en sind vollständig übersetzt.

Der Erstbesuch öffnet sich nicht in meiner Browsersprache

Das ist beabsichtigt. InfraGuard liest Accept-Language nicht; es öffnet sich in der vom Administrator festgelegten Standardsprache der Website (der ersten Sprache in der aktivierten Liste). Sobald Sie wechseln, wird die Wahl in Sitzung und Cookie gespeichert und bei späteren Besuchen beibehalten.

Nach dem Abmelden und erneuten Anmelden wird meine Sprache zurückgesetzt

Ist das Cookie (infr_locale, 1 Jahr) vorhanden, bleibt die Sprache erhalten. Bei angemeldeten Benutzern wird die Wahl zusätzlich in users.lang gespeichert und bei der nächsten Anmeldung als Profilsprache wiederhergestellt. Ohne Cookie und ohne Profil öffnet sich die Oberfläche im Standard der Website.

Was passiert bei einem unbekannten Code wie /lang/xx?

Ein nicht unterstützter Code wird stillschweigend ignoriert, und die aktuelle Sprache bleibt bestehen (kein Fehler). Gültig sind allein die aktivierten Codes unter den 8.

Was, wenn ich alle Sprachen deaktiviere?

Das wird verhindert. Beim Speichern gilt ein Minimum von einer Sprache (das Speichern von null Sprachen gibt 422 zurück). Selbst wenn die Einstellung beschädigt würde, fällt das System auf den vollständigen Katalog zurück, sodass der Umschalter nie leer wird.

Verwandte Themen

언어 · 지역화 화면
언어 · 지역화 화면