eigener Style/Template - wie Standardtexte verändern?

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

eigener Style/Template - wie Standardtexte verändern?

Post by stm999999999 »

Hallo,

ich bastel mir gerade meinen eigenen Style zusammen. Dabei will ich auch an einigen Stellen Texte wie "xy vollständig lesen" verändern.

Ich habe nun in meinem Style-Verzeichnis eine Datei angelegt lang_de.inc.php:

Code: Select all

<?php # $Id: lang_en.inc.php,v 1.3 2005/05/17 11:43:07 stm Exp $

@define('POSTED_BY', 'wer:');
@define('YOUR_SEARCH_RETURNED_BLAHBLAH', 'Die Suche nach %s ergab folgende %s Treffer:');
@define('AT', 'wann:');
@define('IN', 'wo:');
@define('VIEW_EXTENDED_ENTRY', 'weiter lesen ...');
?>
Dasselbe dann noch in einem UTF-8-Unterverveichnis. Beides hochgeladen - und es ändert sich nix!? Ist das nicht der richtige Weg?

BTW: Im Forum heißt es Themes, im Header aller Seiten hier Templates und im Admin-Bereich Styles. Verwirrend, oder?
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: eigener Style/Template - wie Standardtexte verändern?

Post by garvinhicking »

Hi!

Eine Sprachdatie in den Verzeichnis hilft erstmal nichts, wenn Du die Konstanten nicht auch a.) lädst und b.) verwendest. :)

Du darfst daher nicht bereits benutzte sprachkonstanten verändern, sondern z.B. "stm_POSTED_BY" benutzen. Un in deinen .tpl Dateien musst Du dann {$CONST.stm_POSTED_BY} einsetzen.

Zusätzlich musst Du dann noch dafür sorgen dass die Sprachdateig eladen wird. Dafür legst du eine "config.inc.php" in deinem template verzeichnis an, und machst da per "include 'lang_de.inc.php'" deine Sprachdatei hinzu. Oder Du packst die define()s direkt in diese Datei rein.
BTW: Im Forum heißt es Themes, im Header aller Seiten hier Templates und im Admin-Bereich Styles. Verwirrend, oder?
Ja, da würde eine Vereinheitlichung helfen, leider werfe ich die Begriffe selber auch ständig durcheinander. Andererseits findet so jeder etwas wenn er nach "styles", "themes" oder "templates" sucht. *g*

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Re: eigener Style/Template - wie Standardtexte verändern?

Post by stm999999999 »

Eine Sprachdatie in den Verzeichnis hilft erstmal nichts, wenn Du die Konstanten nicht auch a.) lädst und b.) verwendest. :)
Hm, aha, Ich dachte das ginge ähnlich wie bei den übrigen Template-Dateien. individuelle Dateien einfach im template-Verzeichnis ablegen und gut ist :-) Aber das läßt sich ja machen mit dem "laden".

Du darfst daher nicht bereits benutzte sprachkonstanten verändern, sondern z.B. "stm_POSTED_BY" benutzen. Un in deinen .tpl Dateien musst Du dann {$CONST.stm_POSTED_BY} einsetzen.
Das allerdings liegt mir schon schwerer im Magen. Heißt es doch nichts anderes als daß fast ALLE tpl-Dateien geändert und ins theme gelegt werden müssen, obwohl man eigentlich an diesen garnichts ändern will!

Wenn ich also "nur" was an den Texten ändern will und vielleicht eine Kleinigkeit in index.tpl, dann muß ich dennoch alle in mein theme-Verzeichnis legen und ändern. Und damit schneide ich mir die Möglichkeit ab, von Änderungen im default-Template zu profitieren (das ja wohl für all die tpl-Dateien verwendet wird, die ich nicht in mein theme lege).

Und wenn ich eventuell die lokalisierte Ausgabe eines Plugins ändern will, dann wird das noch haariger :-(

Ich hatte gehofft, dieses Lokalisierungs-System mit Bezeichnern im Code, die dann außerhalb mit echten Werten gefüllt werden, das hätte gerade den Sinn, daß man den Code in Frieden lassen kann und nur extern die Texte ändern muß.

*grummel*

Überschreibt denn nicht eine jüngere Sprachdefinition eine ältere? So wie späteres css das frühere?
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: eigener Style/Template - wie Standardtexte verändern?

Post by garvinhicking »

Hi!
Hm, aha, Ich dachte das ginge ähnlich wie bei den übrigen Template-Dateien. individuelle Dateien einfach im template-Verzeichnis ablegen und gut ist :-) Aber das läßt sich ja machen mit dem "laden".
Leider ist das technisch ein anderes Konzept. Sprachkonstanten heißen halt auch Konstanten, weil man sie nicht nachladen kann ;)
Das allerdings liegt mir schon schwerer im Magen. Heißt es doch nichts anderes als daß fast ALLE tpl-Dateien geändert und ins theme gelegt werden müssen, obwohl man eigentlich an diesen garnichts ändern will!
Du kannst natürlich einfach die Haupt-Sprachdatei anpassen, da spricht nichts gegen ausser dass Du sie nach s9y Updates neu anpassen musst.

Wie oben erwähnt ist es technisch leider nicht möglich bereits standardmäßig gesetzte Konstanten zu überschreiben.

Du könntest die zentrale Sprachdatei auch einfach mit einem PHP include am Anfang editieren und so alle änderungen auslagern...

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Re: eigener Style/Template - wie Standardtexte verändern?

Post by stm999999999 »

Du kannst natürlich einfach die Haupt-Sprachdatei anpassen, da spricht nichts gegen ausser dass Du sie nach s9y Updates neu anpassen musst.
Was für mich schon durchaus mehr als nur "nichts dagegen" ist :-)
Wie oben erwähnt ist es technisch leider nicht möglich bereits standardmäßig gesetzte Konstanten zu überschreiben.

Du könntest die zentrale Sprachdatei auch einfach mit einem PHP include am Anfang editieren und so alle änderungen auslagern...
OK, dann nochmal laaaaaaaangsaaam für Dummies:

"Änderungen auslagern": Heißt das, wenn eine php-Konstante mehrfach belegt wird, dann macht das nix, es wird halt bloß die erste Zuweisung verwendet - ich muß nur "meine" Zuweisung zuerst anbringen. Und dafür soll ich die dann in der normalen lang-Datei vorne includen, richtig?
Ciao, Stephan
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Lösung für individuelle Texte!

Post by stm999999999 »

So, gesagt, getan - und wenn Ihr mir eine einzige Frage positiv beantworten könnt, dann kann das sogar eine allgemeine Lösung werden!

Ich habe (hier beispielhaft in die UTF-8/serendipity_lang_de.inc.php) vorne reingehangen:

Code: Select all

$probelang = dirname(__FILE__) . '/../../templates/stm/UTF-8/my_lang_' . $serendipity['lang'] . '.inc.php';
if (file_exists($probelang)) {
    include $probelang;
}
Und in der nicht-UTF-Datei entsprechend:

Code: Select all

$probelang = dirname(__FILE__) . '/../templates/stm/my_lang_' . $serendipity['lang'] . '.inc.php';
if (file_exists($probelang)) {
    include $probelang;
}
Was ich jetzt wissen müßte: Kann man an dieser Stelle im Code irgendwie auf das Verzeichnis des verwendeten Templates zurgreifen? Ist das in irgendeiner Variable erfragbar? Weil momentan steht mein Template ja hardcoded drin.



Die globale Lösung sähe dann so aus, daß dieser Code in ALLE Standard-Lang-Dateien rein müßte - oder aber sogar zentral an der Stelle, wo diese Standard-Lang-Dateien ihrerseits aufgerufen/included werden, einfach davor setzten.

Dann müßte nur - so wie das ja wohl auch für die Standard-Lang-Dateien gemacht wird - noch sauber nach UTF/nicht-UTF unterschieden werden.


Und rückwärtskompatibel ist das ganze auch - sowohl wenn jemand keine eigene Sprachdatei hat, oder nur in einer nicht benutzen Sprache, oder selbst dann, wenn ein Template nach altem Muster eigene Definitionen mitgebracht hat - das geht alles weiterhin!

(Deshalb habe ich die Datei my_lang... genannt, damit die nicht dem anderen Mechanismus in die Quere kommt)
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Lösung für individuelle Texte!

Post by garvinhicking »

Hi!

Das sieht schonmal gut aus. Du müsstest dort theoretisch schon auf alle serendipity config variablen zugreifen können. Die die Du suchst wäre $serendipity['template'].
Die globale Lösung sähe dann so aus, daß dieser Code in ALLE Standard-Lang-Dateien rein müßte
Nein, das kostet einen File-Lookup für JEDEN s9y request, da das einer der zentarlen Teile ist. So etwas möchte ich definitiv vermeiden und verweise stattdessen auf eigene Sprachkonstanten oder halt manuelle Anpassung der Dateien.

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Re: Lösung für individuelle Texte!

Post by stm999999999 »

Das sieht schonmal gut aus. Du müsstest dort theoretisch schon auf alle serendipity config variablen zugreifen können. Die die Du suchst wäre $serendipity['template'].
OK, so funktioniert es nun wunderbar template-unabhängig! :-)

Code: Select all

$probelang = dirname(__FILE__) . '/../../templates/' . $serendipity['template'] . '/UTF-8/my_lang_' . $serendipity['lang'] . '.inc.php';
if (file_exists($probelang)) {
    include $probelang;
}
Und dann noch jeweils einmal ohne das UTF-8/ und mit einem ../ weniger

Die globale Lösung sähe dann so aus, daß dieser Code in ALLE Standard-Lang-Dateien rein müßte
Nein, das kostet einen File-Lookup für JEDEN s9y request, da das einer der zentarlen Teile ist. So etwas möchte ich definitiv vermeiden und verweise stattdessen auf eigene Sprachkonstanten oder halt manuelle Anpassung der Dateien.
Was genau ist ein File-Lookup? Das "include" oder das "file_exists"? Ersteres findet ja nur statt, wenn wirklich so eine Sprachdatei hinterlegt wurde.

Und wenn letzteres: Ist das wirklich derart problematisch? Ich meine, es werden doch zig Dateien includiert, jedes Plugin hat seine Sprachdatei ... fällt da ein "file_exists" ins Gewicht?

Und alle Alternativ-Vorschläge haben leider so einen gewissen Hack-Beigeschmack. In der lang-Datei selber rumspielen (egal ob man nun per Hand meinen Code oben eingibt oder direkt die Konstanten ändert - beim nächsten Update ist wieder alles weg!) oder eigene Konstanten einbaut.

Letzteres ist für den Nutzer nur schwer möglich und selbst als template-Bauer ist das nicht so dolle: Normalerweise enthält ein Template ja nur die tpl-Dateien, die sich von denen des default-Templates unterscheiden (so habe ich das verstanden). Nun müßte man etliche tpl-Dateien mehr selber bereitstellen (und bei Updates pflegen!), nur weil man dort eine Textausgabe ändern will.


Und ich glaube, daß durchaus ein Interesse besteht, einfach den einen oder anderen Text zu ändern; und zwar sowohl für Template-Entwickler (die ja vielleicht noch in ihren tpl-Dateien eigene Konstanten verwenden könnten) als auch für normale Benutzer, die das nur hochladen und dann nutzen wollen. Denen kann man schon sagen: "Leg eine my_lang_de.inc.php mit Deinen geänderten Texten an" - abr wohl kaum: "Tausche in allen tpl-Dateien die Konstanten gegen eigenes aus." Letzeres bedeutet nebenbei bemerkt auch, daß sie mindestens eine englische fallback-Datei mit den neuen Konstanten noch zusätzlich anlegen müßten!


Fazit:

s.o. wenn das "file_exists" nicht so "teuer" ist wie das "include", dann hoffe ich, das Problem ist doch kein so großes.

Und wenn doch: Vielleicht können meine Argumente ja dennoch überzeugen.


Wobei: Wenn wirklich bereits das "file_exists" so problematisch ist: Eine if-Variablen-Abfrage müßte doch "drin" sein, oder?

Dann folgender Vorschlag:

Im Admin-Bereich unter "Styles" eine generelle Abfrage: "Sollen ggf. vorhandene eigene Texte benutzt werden?"

Und dann in den lang-Datei:

Code: Select all

if ($serendipity["eigeneTexte"]) {

$probelang = dirname(__FILE__) . '/../../templates/' . $serendipity['template'] . '/UTF-8/my_lang_' . $serendipity['lang'] . '.inc.php';
if (file_exists($probelang)) {
    include $probelang;
}

}
Wäre das ein gangbarer Kompromiß?
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Lösung für individuelle Texte!

Post by garvinhicking »

Hi!
Was genau ist ein File-Lookup? Das "include" oder das "file_exists"? Ersteres findet ja nur statt, wenn wirklich so eine Sprachdatei hinterlegt wurde.
Beides kostet im Dateisystem ungefähr gleichviel Zeit.
Und wenn letzteres: Ist das wirklich derart problematisch? Ich meine, es werden doch zig Dateien includiert, jedes Plugin hat seine Sprachdatei ... fällt da ein "file_exists" ins Gewicht?
Die sache ist, dass ich das Framework von s9y so leichtgewichtig wie möglich halten will, so dass man wenn man eigene Plugins benutzt auf Overhead wie Sprachdateien verzichten kann/könnte. Und dort würde ein Filelookup durchaus ins Gewicht fallen; zwar nur mit 1-2%, aber irgendwo summiert sich natürlich alles, daher muss man irgendwo anpassen.

Das jemand die Sprachdateien seines Blogs anfasst ist IMHO ein so spezifisches Ziel, dass es mit einer config.inc.php des Templates durchaus angenehm sein sollte es so zu erledigen, und halt mit der Verwendung eigener Sprachvariablen. Oder halt dem patchen der Sprachdatei.
Und wenn doch: Vielleicht können meine Argumente ja dennoch überzeugen.
Wenn mir genügend Leute zeigen, dass sie das einsetzen (also nicht nur "haben wollen" und liegenlassen ;) dann lasse ich mich gerne überzeugen. Bis dahin gehe ich leider davon aus, dass Du mit dem Wunsch eher allein auf weiter Flur stehst. ;)
Wobei: Wenn wirklich bereits das "file_exists" so problematisch ist: Eine if-Variablen-Abfrage müßte doch "drin" sein, oder?
Nein, denn die Templatekonfiguration ist erst dann verfügbar wenn die Sprachdatei geladen wurde - man kann also in der Sprachdatei keine If-Abfrage einbauen, da der Gegenstand der Abfrage erst ausgelesen wird wenn die Sprachdatei geladen wurde. :)

Man könnte es mit einer hartkodierten Variable in der serendipity_config_local.inc.php lösen...?

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Re: Lösung für individuelle Texte!

Post by stm999999999 »

Was genau ist ein File-Lookup? Das "include" oder das "file_exists"? Ersteres findet ja nur statt, wenn wirklich so eine Sprachdatei hinterlegt wurde.
Beides kostet im Dateisystem ungefähr gleichviel Zeit.
OK, das ist natürlich blöd.

Und wenn letzteres: Ist das wirklich derart problematisch? Ich meine, es werden doch zig Dateien includiert, jedes Plugin hat seine Sprachdatei ... fällt da ein "file_exists" ins Gewicht?
Die sache ist, dass ich das Framework von s9y so leichtgewichtig wie möglich halten will, so dass man wenn man eigene Plugins benutzt auf Overhead wie Sprachdateien verzichten kann/könnte. Und dort würde ein Filelookup durchaus ins Gewicht fallen; zwar nur mit 1-2%, aber irgendwo summiert sich natürlich alles, daher muss man irgendwo anpassen.
Jetzt blicke ich gerade nicht durch: Gerade die plugins nutzen doch alle (für ihre eigenen Ausgaben im Admin-Bereich oder auch im Blog) eigene Sprachdateien!? Also IMO wird doch gerade "exzessiv" von solchen includes gebrauch gemacht!?

Das jemand die Sprachdateien seines Blogs anfasst ist IMHO ein so spezifisches Ziel, dass es mit einer config.inc.php des Templates durchaus angenehm sein sollte es so zu erledigen, und halt mit der Verwendung eigener Sprachvariablen. Oder halt dem patchen der Sprachdatei.
Beides halt nur etwas für jemanden, der am Template rumzubasteln bereits ist und nicht für den normalen User. Und, selbst für den Bastler halt mit dem Problem verbunden, daß er nach jedem Update alles neu machen muß.

Wobei: Wenn wirklich bereits das "file_exists" so problematisch ist: Eine if-Variablen-Abfrage müßte doch "drin" sein, oder?
Nein, denn die Templatekonfiguration ist erst dann verfügbar wenn die Sprachdatei geladen wurde - man kann also in der Sprachdatei keine If-Abfrage einbauen, da der Gegenstand der Abfrage erst ausgelesen wird wenn die Sprachdatei geladen wurde. :)
Hm, dann blicke ich jetzt echt nicht mehr durch das s9y-Framwork durch.

Ich will ja an oberster Stelle der normalen lang-Dateien folgendes einfügen:

Code: Select all

if ($serendipity['eigeneTexte']) { 

$probelang = dirname(__FILE__) . '/../../templates/' . $serendipity['template'] . '/UTF-8/my_lang_' . $serendipity['lang'] . '.inc.php'; 
if (file_exists($probelang)) { 
    include $probelang; 
} 

}
An dieser Stelle ist doch $serendipity['template'] schon belegt, warum nicht ein potentielles $serendipity['eigeneTexte']?

Oder mißverstehen wir uns gerade? Ich meinte nicht eine Konfiguration, wie sie von einem Template-Ersteller in seiner template-config.inc.php gemacht werden kann. Ich meinte etwas, was unabhängig vom Template in s9y eingestellt werden kann, parallel gespeichert zum Namen des Templates. Nur, ich dachte, der Schalter dafür sollte sinnvollerweise auf der Style-Seite angesiedelt werden. Man könnte ihn natürlich auch in der allg. Konfig-Seite unter "Design und Optionen" ablegen.

Man könnte es mit einer hartkodierten Variable in der serendipity_config_local.inc.php lösen...?
Ich kann bei meiner Installation leider nicht reingucken, was da drin steht, die hat derart ungünstige Rechte bei mir ... :-(

-rwx------ 1 nobody ftp serendipity_config_local.inc.php
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Lösung für individuelle Texte!

Post by garvinhicking »

Hi!
Jetzt blicke ich gerade nicht durch: Gerade die plugins nutzen doch alle (für ihre eigenen Ausgaben im Admin-Bereich oder auch im Blog) eigene Sprachdateien!? Also IMO wird doch gerade "exzessiv" von solchen includes gebrauch gemacht!?
Aber die plugins sind individualsache - das laden der sprachen wird im plugin selber vorgenommen. Wenn ihc als Entwickler also so will kann ich mir die includes sparen.

Bei der Sprachsache würden die Daten aber innerhalb des Cores geladen und geprüft, daher hätte ein Entwickler keine Chance das zu umgehen ohne s9y core code editieren zu müssen. Daher möchte ich das eigentlich entwicklern nicht aufbürden mit so einem unnötigen file-lookup leben zu müssen, für einen Fall von Benutzeranpassung die eigentlich selten vorkommt. Zumindest bist Du der erste seit 10.000 Forenpostings der so etwas wünscht - und für dich gibt es ja auch eine IMHO gangbare Lösung, aber alle anderen müssten etwas patchen um davon nicht betroffen zu sein.
Ich will ja an oberster Stelle der normalen lang-Dateien folgendes einfügen:
Richtig, aber die Konfigurationsoptionen des Templates werden erst nach der Sprachdatei geladen. Daher kann $serendipity['eigeneTexte'] nicht in der Template config.inc.php geladen werden. Das ist ja überhaupt erst das Problem warum Du nicht in der Templatedatei Sprachkonstanten setzen kannst die es schon gibt. :)
Oder mißverstehen wir uns gerade? Ich meinte nicht eine Konfiguration, wie sie von einem Template-Ersteller in seiner template-config.inc.php gemacht werden kann. Ich meinte etwas, was unabhängig vom Template in s9y eingestellt werden kann, parallel gespeichert zum Namen des Templates. Nur, ich dachte, der Schalter dafür sollte sinnvollerweise auf der Style-Seite angesiedelt werden. Man könnte ihn natürlich auch in der allg. Konfig-Seite unter "Design und Optionen" ablegen.
Das wäre dann eine weitere Templateeinstellungsoption, auf die ein Templateersteller aber keine Zugriffsmöglichkeit hätte mittels seines Templates. Ich weiß nicht ob das etwas zu starr als Konzept wäre. Was ausser Sprachoptionen würde man damit konfigurieren können dass es sich das ganze verdient hat? Die Mehrheit der Benutzer wäre durch eine Option "Eigene Sprachdateien" IMHO eher verwirrt und würde die s9y Konfiguration nur unnötig komplizieren. Lieber möchte ich s9y konfigoptionen streichen als neue hinzufügen die so unflexibel sind...

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Post by stm999999999 »

OK, erstmal folgendes:

Ich habe mich nun ein wenig mehr in das ganze eingearbeitet, wenn eine wie von mir vorgeschlagene Standardlösung gewünscht wird, dann wäre es wohl besser, nicht in jeder lang-Datei das einzufügen, sondern einfach in der include/lang.inc.php vor den Aufruf der normalen lang-Datei zu setzen. Das könnte dann so aussehen:

Code: Select all

if (!defined('serendipity_LANG_LOADED') || serendipity_LANG_LOADED !== true) {
    $charset = serendipity_getCharset();

    // Try and include template or user-individuall language-extensions - but only if $serendipity['template_own_text'] is set 
	if ($serendipity['template_own_text']) {
		if (!(@include (S9Y_INCLUDE_PATH . 'templates/' . $serendipity['template'] . '/' . $charset .  'my_lang_' . $serendipity['lang'] . '.inc.php'))) {
			@include (S9Y_INCLUDE_PATH . 'templates/' . $serendipity['template'] . '/' . $charset .  'my_lang_en.inc.php');
		}
	}
Ist getestet und funktioniert. Die äußere if-Bedinung wurde so getestet:

Code: Select all

$serendipity_template_own_text = "0";

    // Try and include template or user-individuall language-extensions
	if ($serendipity_template_own_text) {
Ciao, Stephan
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Re: Lösung für individuelle Texte!

Post by stm999999999 »

Aber die plugins sind individualsache - das laden der sprachen wird im plugin selber vorgenommen. Wenn ihc als Entwickler also so will kann ich mir die includes sparen.
OK, verstanden.
lookup leben zu müssen, für einen Fall von Benutzeranpassung die eigentlich selten vorkommt. Zumindest bist Du der erste seit 10.000 Forenpostings der so etwas wünscht - und für dich gibt es ja auch eine IMHO gangbare Lösung, aber alle anderen müssten etwas patchen um davon nicht betroffen zu sein.
Nur auf die Schnelle, weil ich mich daran erinnere:

http://www.s9y.org/forums/viewtopic.php?t=4358

Und die Abhilfe, einfach im entry.tpl die Sprachkonstanten rauszunehmen halte ich für problematisch: Was wenn er eingestellt hat, daß seine Besucher die Sprache durch die Browsereinstellung vorgeben sollen? Bei einer generellen Lösung würde dann wieder auf die default-Werte zurückgesprungen. Bei einem simplen Ersetzen im template wird alles auf englisch angezeigt, nur diese eine Textstelle dann auf deutsch!
Oder mißverstehen wir uns gerade? Ich meinte nicht eine Konfiguration, wie sie von einem Template-Ersteller in seiner template-config.inc.php gemacht werden kann. Ich meinte etwas, was unabhängig vom Template in s9y eingestellt werden kann, parallel gespeichert zum Namen des Templates. Nur, ich dachte, der Schalter dafür sollte sinnvollerweise auf der Style-Seite angesiedelt werden. Man könnte ihn natürlich auch in der allg. Konfig-Seite unter "Design und Optionen" ablegen.
Das wäre dann eine weitere Templateeinstellungsoption, auf die ein Templateersteller aber keine Zugriffsmöglichkeit hätte mittels seines Templates.
Es ist richtig, ein template-Bauer kommt da nicht ran, ohne daß der Nutzer selber aktiv wird. Das ist IMHO aber auch richtig so: Meine Lösung soll audrücklich auch dem Nutzer der ein vorgefertigtes Template oder gar das Standard-Template verwendet, helfen. Er soll unabhängig vom Template-Ersteller eigene Texte erstellen und aktivieren können.

Und wenn ein Template-Bauer diese individuellen Texte benutzt, dann kann er doch problemlos oben anzeigen lassen:

Code: Select all

In diesem Template sind einige der Standard-Texte durch eigene Texte ersetzt worden. Wenn Du diese anstelle der Standardtexte verwenden möchtest, dann schalte bitte oben "individuelle Texte verwenden".

OK, ich finde im Moment keine Möglichkeit, sowas oben anzeigen zu lassen. :-( Aber folgendes läuft bei mir im Moment problemlos:

In der info.txt bei Bedarf hinzufügen:

Code: Select all

IndividualText: Yes
In include/admin/templates.inc.php ab Zeile 170

Code: Select all

<?php echo AUTHOR;       ?>: <?php echo $info['author'];?><br />
<?php echo LAST_UPDATED; ?>: <?php echo $info['date'];  ?><br />
<?php if ( strtolower($info['individualtext']) == 'yes' ) { echo USES_INDIVIDUAL_TEXTS . '<br />';} ?>

In den normalen lang-Dateien

Code: Select all

@define('USES_INDIVIDUAL_TEXTS', 'Dieses Template ersetzt Standardtexte teilweise mit individuellen Texten. Bitte in XX einschalten, wenn gewuenscht.');
Dann müßte halt entweder in der Template-Seite oben so ein Auswahlfeld hin, oder ...
Ich weiß nicht ob das etwas zu starr als Konzept wäre. Was ausser Sprachoptionen würde man damit konfigurieren können dass es sich das ganze verdient hat? Die Mehrheit der Benutzer wäre durch eine Option "Eigene Sprachdateien" IMHO eher verwirrt und würde die s9y Konfiguration nur unnötig komplizieren. Lieber möchte ich s9y konfigoptionen streichen als neue hinzufügen die so unflexibel sind...
... man legt es in Konfiguration/Generelle Einstellungen, da kann man dann auch etwas Erklärungstext unterbringen:

Code: Select all

Individuelle Texte verwenden?
Mit dieser Option können Sie festlegen, ob sie die Standardtexte von s9y durch eventuell vorhandene individuelle Texte ersetzen wollen. Solche individuellen Texte können entweder durch das Template bereitsgestellt werden (in diesem Fall gibt es einen Hinweis in den Template-Informationen) oder durch Sie selber.
Ciao, Stephan
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Re: Lösung für individuelle Texte!

Post by stm999999999 »

garvinhicking wrote: Man könnte es mit einer hartkodierten Variable in der serendipity_config_local.inc.php lösen...?
Mal davon abgesehen, daß ich meine Idee zur Integration immer noch toll finde ;-)

Ja, bitte laß es uns erstmal über so eine Variable machen. Es wäre daher nett, wenn Du vorerst lediglich folgendes machen könntest:

In der include/lang.inc.php gleich am Anfang

Code: Select all

if (!defined('serendipity_LANG_LOADED') || serendipity_LANG_LOADED !== true) {
    $charset = serendipity_getCharset();


    // Try and include preferred language from the configurated setting
    if (@include(S9Y_INCLUDE_PATH . 'lang/' . $charset . 'serendipity_lang_'. $serendipity['lang'] .'.inc.php') ) {
ergänzen um:

Code: Select all

if (!defined('serendipity_LANG_LOADED') || serendipity_LANG_LOADED !== true) {
    $charset = serendipity_getCharset();


    // Try and include template or user-individuell language-extensions - but only if $serendipity['template_individuell_text'] is set - this has to be set in serendipity_config_local.inc.php manually


	if ($serendipity['template_individuell_text']) {
		if (!(@include (S9Y_INCLUDE_PATH . 'templates/' . $serendipity['template'] . '/' . $charset .  'my_lang_' . $serendipity['lang'] . '.inc.php'))) {
			@include (S9Y_INCLUDE_PATH . 'templates/' . $serendipity['template'] . '/my_lang_en.inc.php');
		}
	}



    // Try and include preferred language from the configurated setting
    if (@include(S9Y_INCLUDE_PATH . 'lang/' . $charset . 'serendipity_lang_'. $serendipity['lang'] .'.inc.php') ) {
Danke!

PS: Und ja, ich gucke mir diff mal an ... :-)
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Lösung für individuelle Texte!

Post by garvinhicking »

Hi!

Okay, ich habe das mit einer kleineren Änderung committed, und nutze die "lang_XX.inc.php." Dateien anstelle von "my_lang", um da konsistent mit Plugins zu bleiben?

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Post Reply