Spracheinstellung individuell für User

Hast du Vorschläge, was wir an Admidio noch verbessern könnten ? Hier kannst du uns deine Vorstellung an neuen Funktionen mitteilen.
Antworten
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Spracheinstellung individuell für User

Beitrag von RalphW »

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?
Benutzeravatar
fasse
Administrator
Beiträge: 6167
Registriert: 12. Nov 2005, 16:06

Re: Spracheinstellung individuell für User

Beitrag von fasse »

Leider geht das zur Zeit nicht.
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Spracheinstellung individuell für User

Beitrag von RalphW »

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?
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Spracheinstellung individuell für User

Beitrag von RalphW »

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.

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);
	}
} 
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.
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Spracheinstellung individuell für User

Beitrag von RalphW »

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:

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>';
}
?>
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:

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);
	}
}
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.
Benutzeravatar
fasse
Administrator
Beiträge: 6167
Registriert: 12. Nov 2005, 16:06

Re: Spracheinstellung individuell für User

Beitrag von fasse »

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
Antworten