i18n bei Plugins (Rechteverwaltung)

Gesperrt
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

i18n bei Plugins (Rechteverwaltung)

Beitrag von Oldperl »

Problem:
Die Einträge für Plugins in der Rechteverwaltung (Administration->Benutzer->Bereiche) sollen in der config.plugin.php, mit der i18n-Funktion übersetzt, in das Array $lngAct eingetragen werden. Dies funktioniert aber bis in die CVS-Version (4.6.17) nicht.
Es werden immer die zu übersetzenden Texte angezeigt.
Beispiel:

Code: Alles auswählen

$lngAct["meinplugin"]["meinplugin"] = i18n("my plugin", "meinplugin");
Dieses ist der Eintrag in der config.plugin.php im Verzeichnis plugins/meinplugin/includes. Im locale-Verzeichnis gibt es eine mo-Datei mit Inhalt "my plugin = Mein Plugin". In der Rechteverwaltung wird aber trotzdem "my plugin" angezeigt. (kann man auch beim JAX-Kalender nachvollziehen).

Grund:
In der Datei main.php wird die includes/startup.php aufgerufen, in der die gettextdomains der Plugins gesetzt werden.

Code: Alles auswählen

/* Include the plugin configuration */
$handle = opendir($cfg['path']['contenido'] . $cfg["path"]['plugins'] );

while ($plugin = readdir($handle))
{
	$configfile = $cfg['path']['contenido'] . $cfg["path"]['plugins'] . $plugin . "/includes/config.plugin.php";
	$localedir = $cfg['path']['contenido'] . $cfg["path"]['plugins'] . $plugin . "/locale/";

	if (is_dir($cfg['path']['contenido'] . $cfg["path"]['plugins'] . $plugin ))
	{
    	if (file_exists($localedir) && $plugin != "..")
    	{
    		i18nRegisterDomain($plugin, $localedir);
    	}
    	if (file_exists($configfile))
    	{
    		include_once($configfile);
    	}
	}
}
danach wird die Funktion

Code: Alles auswählen

i18nInit($cfg["path"]["contenido"].$cfg["path"]["locale"], $belang);
in main.php aufgerufen und anschließend die Datei includes/cfg_language_de.inc.php, in der nochmals die gettextdomains der Plugins gesetzt werden (am Ende der Datei).

Das funktioniert so nicht, da das 2. Setzen wirkungslos ist und durch die Init-Funktion nach dem 1. Setzen das Einlesen des Arrays $lngAct per Plugindomain nicht mehr möglich ist.

Lösungsansatz:
Zur momentanen Abhilfe reicht es das 1. Setzen der gettextdomains der Plugins in startup.php auszukommentieren. Danach gehen die Übersetzungen für $lngAct.

Für die weitere Entwicklung wäre mein Vorschlag zu überlegen die gettext-Bindungen in eine neue Datei zentral auszulagern und diese dann in main.php oder in startup.php zu includen.

Gruß aus Franken

Ortwin
Zuletzt geändert von Oldperl am Mo 5. Mär 2007, 19:46, insgesamt 1-mal geändert.
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Verschoben.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: i18n bei Plugins (Rechteverwaltung)

Beitrag von Dodger77 »

Oldperl hat geschrieben:Dies funktioniert aber bis in die CVS-Version (6.8.17) nicht.
In Zukunft besser Copy&Paste nutzen. :wink:
Soll wohl 4.6.17 heißen.
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: i18n bei Plugins (Rechteverwaltung)

Beitrag von Oldperl »

Dodger77 hat geschrieben:
Oldperl hat geschrieben:Dies funktioniert aber bis in die CVS-Version (6.8.17) nicht.
In Zukunft besser Copy&Paste nutzen. :wink:
Soll wohl 4.6.17 heißen.
Ja Master *aufKnierutsch* :oops:

Habs geändert :D

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Beitrag von Oldperl »

Also meine Lösung von oben hat nun ein anderes Problem zur Folge. Da in der startup.php auser den gettextdomains der plugins ja auch die config.plugin.php ausgelesen werden, existieren die Einträge im $cfg-array im Frontend z.B. für die Datenbanktabellen der Plugins nicht.

Ich werde mal versuchsweise die Includierung der functions.i18n.php und den Aufruf der init-Funktion in die startup.php legen und dafür den doppelten Aufruf in der cfg_language_de.inc.php auskommentieren.

Wofür wird diese Datei eigentlich benutzt? Wird noch nicht alles in Contenido über mo-Dateien übersetzt?


Gruß aus dem nächtlichen Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Wofür wird diese Datei eigentlich benutzt? Wird noch nicht alles in Contenido über mo-Dateien übersetzt?
Nein, leider nicht. Das sind in den meisten Fällen die Einträge, die nur in der DB bei den actions vorkommen und nirgends im Quelltext als i18n("...") erfasst werden. Die Übersetzung wird dann bei Administration -> Benutzer bzw. Gruppen und dort der Punkt "Bereiche" verwendet.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Gibt es hier Neuigkeiten?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus »

Gibt es hier schon was neues? Ich sitze gerade an einem Plugin füpr 4.6.15 und habe mir testweise das hello_world-Plugin installiert.

Dort wird der String im oberen rechten Navi-Frame auch nicht übersetzt.

In der Übersetzung wurde "Defined in config_plugin.php" gegen "Definiert in der config_plugin.php" übersetzt, aber beim Modul wird es einfach nicht deutsch angezeigt.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
Gesperrt