Wenn ich es richtig sehe, kann die Sprache nur für alle User eingestellt werden.
Wie kann ich aber die Sprache für einen einzelnen User einstellen, bzw. kann dieser die Sprache selbst wählen bzw. ändern?
Spracheinstellung individuell für User
Re: Spracheinstellung individuell für User
Leider geht das zur Zeit nicht.
Re: Spracheinstellung individuell für User
Gibt es hier einen Plan, ob und wann die Sprache individuell für den angemeldeten User eingestellt werden kann, bzw. der User wählt das selbst bei der Registrierung oder später in seinem Profil?
Re: Spracheinstellung individuell für User
Ich habe eine vorläufigen Workaround für dieses Problem gefunden und getestet. Für mich scheint es zu funktionieren.
Bei den Kontakten habe ich ein zusätzliches Feld mit dem Namen LANGUAGE erstellt und über ein Dropdown die möglichen Sprachen eingetragen: en, de, de-DE
Ans Ende der common.php habe ich folgenden Code angefügt.
Wenn also ein User angemeldet ist und dieses Feld einen gültigen Wert zurück liefert wird die Sprache neu für den User gesetzt. Ist nichts eingetragen, geht es auf die Systemsprache zurück.
Für mich ist das mal ein Kompromiss. Natürlich müssten alle Kommunikationen an den User auch entsprechend angepasst werden.
Bei den Kontakten habe ich ein zusätzliches Feld mit dem Namen LANGUAGE erstellt und über ein Dropdown die möglichen Sprachen eingetragen: en, de, de-DE
Ans Ende der common.php habe ich folgenden Code angefügt.
Code: Alles auswählen
// User Language
if ($gValidLogin) {
// $gLanguageData = new LanguageData($gSettingsManager->getString('system_language'));
if ($gCurrentUser->getValue('LANGUAGE') !== '') {
$gLanguageData = new LanguageData($gCurrentUser->getValue('LANGUAGE'));
$gL10n = new Language($gLanguageData);
}
}
Für mich ist das mal ein Kompromiss. Natürlich müssten alle Kommunikationen an den User auch entsprechend angepasst werden.
Re: Spracheinstellung individuell für User
So jetzt habe ich mich nochmal dran gesetzt um das Ganze ordentlich zu verbessern.
Ich erstelle ein Profilfeld mit dem Namen LANGUAGE und Typ Dropdown-Listenfeld. Das ist notwendig um den internen Namen LANGUAGE zu erzeugen, auf den dann zugegriffen wird.
Um in die Werteliste vernünftige Namen einzutragen habe ich die Datei listLanguages.php erstellt und im adm_plugins Verzeichnis abgelegt. Diese zeigt mir eine Liste aller unterstützten Sprachen, die ich einfach mit Copy/Paste in die Wertliste hinein kopieren kann. Damit stehen dort die gleichen Einträge wie in den Regionaleinstellungen.
Diese Datei sieht so aus:
Danach speichere ich dieses neue Profilfeld und ändere es gleich nochmal. Den zuvor gewählten Namen ändere ich auf SYS_LANGUAGE. Damit wird auch die Bezeichnung dieses Feldes in der gewählten Sprache beim User angezeigt.
Am Ende der common.php ist dann dieser Code notwendig:
Wenn dieses Feld nicht existiert oder der in Wertliste ein Fehler in der Sprache ist, wird die Systemsprache verwendet.
Mir ist bei meinen Tests aufgefallen, dass nach einer Umstellung der Sprache je nach verwendetem Browser das Löschen des Caches not wendig sein kann, damit der User diese Änderung auch sieht.
Ich hoffe, dass sowas ähnliches in zukünftige Admidio Versionen einfließen wird.
Noch eine wichtige Information bzw. ein Tipp: Alle Mails wie z.B. Passwort zurücksetzen aus Einstellungen->Systembenachrichtigungen werden in der Sprache verwendet, die bei der Installation ausgewählt wurde. Sollte sich also eine internationale Verwendung zu erwarten sein, würde ich die Installation in Englisch machen und mit oben beschriebenen den User bei der Registrierung die Sprache auswählen lassen. Mit Englisch kommt prinzipiell mal jeder (eventuell auch mit Hilfe von Google Translate) zurecht. Für die Bedienung, kann sich das dann jeder einstellen wie er baucht.
Vielleicht ist das auch der Grund, warum das bis jetzt vom Admidio Entwickler Team nicht umgesetzt wurde.
Ich erstelle ein Profilfeld mit dem Namen LANGUAGE und Typ Dropdown-Listenfeld. Das ist notwendig um den internen Namen LANGUAGE zu erzeugen, auf den dann zugegriffen wird.
Um in die Werteliste vernünftige Namen einzutragen habe ich die Datei listLanguages.php erstellt und im adm_plugins Verzeichnis abgelegt. Diese zeigt mir eine Liste aller unterstützten Sprachen, die ich einfach mit Copy/Paste in die Wertliste hinein kopieren kann. Damit stehen dort die gleichen Einträge wie in den Regionaleinstellungen.
Diese Datei sieht so aus:
Code: Alles auswählen
<?php
// List of all languages for drop-down list box in profile fields
$rootPath = dirname(__DIR__, 1);
require_once($rootPath . '/adm_program/system/common.php');
foreach($gSupportedLanguages as $language) {
echo $language['name'] . '<br>';
}
?>
Am Ende der common.php ist dann dieser Code notwendig:
Code: Alles auswählen
// User Language
if ($gValidLogin) {
$userLanguage = '';
foreach ($gSupportedLanguages as $languageFromArray) {
if ($languageFromArray['name'] == $gCurrentUser->getValue('LANGUAGE')) {
$userLanguage = $languageFromArray['libs'];
}
}
if ($userLanguage != '') {
$gLanguageData = new LanguageData($userLanguage);
$gL10n = new Language($gLanguageData);
}
}
Mir ist bei meinen Tests aufgefallen, dass nach einer Umstellung der Sprache je nach verwendetem Browser das Löschen des Caches not wendig sein kann, damit der User diese Änderung auch sieht.
Ich hoffe, dass sowas ähnliches in zukünftige Admidio Versionen einfließen wird.
Noch eine wichtige Information bzw. ein Tipp: Alle Mails wie z.B. Passwort zurücksetzen aus Einstellungen->Systembenachrichtigungen werden in der Sprache verwendet, die bei der Installation ausgewählt wurde. Sollte sich also eine internationale Verwendung zu erwarten sein, würde ich die Installation in Englisch machen und mit oben beschriebenen den User bei der Registrierung die Sprache auswählen lassen. Mit Englisch kommt prinzipiell mal jeder (eventuell auch mit Hilfe von Google Translate) zurecht. Für die Bedienung, kann sich das dann jeder einstellen wie er baucht.
Vielleicht ist das auch der Grund, warum das bis jetzt vom Admidio Entwickler Team nicht umgesetzt wurde.
Re: Spracheinstellung individuell für User
Hallo Ralph,
das finde ich einen schönen Workaround um die Funktionalität abzubilden.
Im Standard wünsche ich mir eigentlich eine Möglichkeit benutzerspezifische Einstellungen unabhängig von Profilfeldern zu speichern. Neben der Sprache kann ich mir hier noch viel mehr vorstellen, was man als Benutzer anders hinterlegen möchte, als es der Administrator vor gibt.
Von daher ist die Implementation im Standard dann etwas umfangreicher, weshalb ich es auch noch nicht gemacht habe. In meinem Kopf ist es aber drin
Viele Grüße
Fasse
das finde ich einen schönen Workaround um die Funktionalität abzubilden.
Im Standard wünsche ich mir eigentlich eine Möglichkeit benutzerspezifische Einstellungen unabhängig von Profilfeldern zu speichern. Neben der Sprache kann ich mir hier noch viel mehr vorstellen, was man als Benutzer anders hinterlegen möchte, als es der Administrator vor gibt.
Von daher ist die Implementation im Standard dann etwas umfangreicher, weshalb ich es auch noch nicht gemacht habe. In meinem Kopf ist es aber drin
Viele Grüße
Fasse