Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigene Phrasengruppen
Was sind Phrasengruppen?
vBulletin ist komplett Sprach-unabhängig, d.h. die PHP-Dateien sowie Templates enthalten zu fast 100% keine hardcodierten Texte sondern lediglich Variablen dafür (Phrasen).
Hierdurch ist es möglich durch simple Änderung der Phrasen bzw. Installation eines entsprechenden Sprach-XMLs eine andere oder zusätzliche Sprache zu betreiben.
Da die Texte sehr, sehr unfangreich sind und verständlicherweise auch nicht an allen Stellen alle Texte benötigt werden, sind diese in verschiedenen, nach Einsatzbereich gruppierten Phrasengruppen zusammengefasst.
Dies dient u.a. einem geringeren Speicherbedarf bei der Ausführung und führt auch zu mehr Übersichtlichkeit.
Wieso brauche ich eigene Phrasengruppen?
Bei einer einfachen Modifikation wird man einfach seine Phrasen in eine bestehende Gruppe einfügen.
Wenn die Modifikation jedoch komplexer ist, eigene Scripte aufweist und hunderte von Phrasen umfasst, führt dies zu einem erheblichen Speicherbedarf wenn man vorhandene Gruppen nutzt - denn diese werden ja auch an anderen Stellen (d.h. im Standard-Code) verwendet.
Wie erstelle ich eine eigene Phrasengruppe?
Dies ist (auf dem System auf dem ein Produkt entwickelt wird, beim Import eines fertigen Produkts mit eigenen Phrasengruppen kümmert sich das Plugin-System um die Details) ein mehrstufiger Prozess der einige Datenbankänderungen erfordert.
Als erstes muss ein Variablenname für die Gruppe gefunden werden. Dieser sollte 15 Zeichen nicht überschreiten und sollte nur Kleinbuchstaben enthalten.
Beispiel: myhack
Die Tabelle language muss um ein weiteres Feld phrasegroup_myhack vom Typ MEDIUMTEXT erweitert werden (nicht NULL)
In Tabelle phrasetype muss ein neuer Datensatz hinzugefügt werden.
Beispiel
fieldname = myhack
title = 'Mein Hack'
product = 'myhackid'
editrows = 3
Wichtig: Falls vBulletin 3.5 verwendet wird, so muss in Spalte phrasetypeid der kleinste noch nicht verwendete Wert unter 1000 eingesetzt werden
Alle Sprachen neu erzeugen
Ab dann steht die Phrasengruppe zur Verfügung und kann wie alle Standard-Gruppen verwendet werden.
Geht das auch einfacher?
Alternativ kann man auch den Hack Phrase Type Manager (http://www.vbulletin-germany.org/modifications.php?do=findrelease&product=ptm) verwenden.
Wie verwende ich Phrasengruppen?
Hierzu schreibt man in das entsprechende Script von den Aufruf von global.php
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Falls mehrere Gruppen verwendet werden, so müssen diese hiere alle mit Komma getrennt aufgeführt werden.
Per Plugin geht nicht?
Auch das ist möglich, wird aber im Regelfall nicht benötigt.
Falls doch:
init_startup
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Hier sollte man jedoch durch entsprechende Bedingungen dafür sorgen dass dies nur ausgeführt wird wenn die Gruppe wirklich benötigt wird, denn ansonsten wird ise immer gelanden.
Nur zu meinem Verständnis... Sofern ich eine neue Phrasengruppe für ein AddOn verwenden möchte, dann müsste ich dieses in der Produktdatei durch folgenden Code bewerkstelligen:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
sowie:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Und das war's für die Produktdatei, verstehe ich das so richtig?
(Und in der entsprechenden php-Datei build_language() benutzen?)
Und das war's für die Produktdatei, verstehe ich das so richtig?
Nein, tust Du nicht ;)
Du exportierst einfach dein Produkt - fertig.
Installations-/Deinstallationscode ist keiner nötig.
Pander23
12.11.2007, 18:55
Mhmm, funktioniert leider nicht. :(
Habe alles nach Anleitung gemacht (änderungen in der DB) und habe dann eine neue Phrase hinzugefügt in der von mir erstellten Phrasengruppe.
Dann habe ich in der attachment.php diesen Code eingetragen bzw. vervollständigt: CODE:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Musste eigentlich nur noch das rote hinzufügen, da steht jetzt meine Phrasengruppe drin.
Dann habe ich weiter unten in einem Script die Phrase aufgerufen und zwar so: $vbphrase[name_der_phrase]. Das ganze klappt aber nich.
Kann es sein das das daran liegt, das die Phrase im Standart Error Code von vB verwendet wird? Das ganze ist nämlich ein "Textfeld" wovor ein CODE:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------steht, vlt muss dann die Phrase woanders geladen werden?
Hoffe mir kann jemand helfen... :)
Mfg
Pander23
Fehlermeldungen gehören in die Phrasengruppe Fehlermeldungen - oder willst du fvielleicht auf einer Seite alle Fehlermeldungs-Texte laden? ;)
Die werden nur einzenl nach Bedarf geladen!
Pander23
12.11.2007, 19:38
Fehlermeldungen gehören in die Phrasengruppe Fehlermeldungen - oder willst du fvielleicht auf einer Seite alle Fehlermeldungs-Texte laden? ;)
Die werden nur einzenl nach Bedarf geladen!
Funktioniert trotzdem nicht. :D
Habe eine Phrase gemacht und diese in die Error Messages Phrasengruppe gepackt bzw. darin erstellt. Leider wird trotzdem der Text des Phrasenaufrufs angezeigt anstatt der Inhalt der Phrase...
Funktioniert trotzdem nicht. :D
Habe eine Phrase gemacht und diese in die Error Messages Phrasengruppe gepackt bzw. darin erstellt. Leider wird trotzdem der Text des Phrasenaufrufs angezeigt anstatt der Inhalt der Phrase...
Machst Du vieleicht einen Fehler bei der Ausgabe der Phrase? Wie z.B. $vbphrase['wasweissich'] anstatt von $vbphrase[wasweissich] im Template?
Dann ist die Gruppe vtll. nicht dem AddOn zugewisen?
Optimalerweise benutzt man dazu den PTM von Andreas/Hoffi.
Pander23
12.11.2007, 21:44
Dann ist die Gruppe vtll. nicht dem AddOn zugewisen?
Optimalerweise benutzt man dazu den PTM von Andreas/Hoffi.
Mhmm, eigentlich ist alles richtig, ist nämlich kein Addon, sondern ein einfacher Zusatz Code der in die attachment.php integriert wurde, ich poste mal den kompletten Code:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------In diese Fehlermeldung soll die Phrase:
Du hast nicht genug Punkte, um diesen Anhang herunterzuladen. Du hast ' . $vbulletin->userinfo['vbpoints'] . ' Punkt(e), benötigst aber ' . $points . '!'));
Dort soll halt der Text durch ne Phrase ersetzt werden, damit Deutsch und Englisch besser zu handhaben ist...
Die Phrase ist korrekt, wie sie sollte im Error Message Phrasentyp, habs nochma mit Screens gepostet:
http://img141.imageshack.us/img141/9259/creditphraseonebe0.png
http://img148.imageshack.us/img148/4889/creditphrasetwobi9.png
Das sollte also stimmen und die Phrase habe ich selbstverständlich korrekt eingefügt und zwar so: $vbphrase[credit_thing]
Ich hasse es wenn was nicht klappt... :rolleyes:
Danke euch schonmal für eure Hilfe!
Mfg
Pander23
Christian
13.11.2007, 12:21
Add-On = vBulletin, das ist falsch.
Das sollte also stimmen und die Phrase habe ich selbstverständlich korrekt eingefügt und zwar so: $vbphrase[credit_thing]
Und genau das ist falsch :)
Korrekt wäre:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Wie bereits früher erwähnt:
Phrasen für Fehlermeldungen werden nie vollständig (in $vbphrase) geladen, sondern jeweils nur die benötigte Phrase.
Surviver
13.11.2007, 13:30
Phrasen für Fehlermeldungen werden nie vollständig (in $vbphrase) geladen, sondern jeweils nur die benötigte Phrase.
... sondern müssen wie in deinem Beispiel gezeigt mit fetch_error() aufgerufen werden :)
Pander23
13.11.2007, 14:12
Ahh, klappt jetzt. :)
Kann mir noch einer sagen wie ich in einer Phrase sowas hier aufrufen kann?
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Danke euch allen, das ihr mir so schnell geholfen habt. :)
Mfg
Pander23
Wenn eine Phrase Variablen enthalten soll, so musst Du in Templates <phrase> verwenden, bzw. in Scripten/Plugin construct_phrase().
In Fehlermeldungen die Variablen einfach als weitere Parameter übergeben.
Pander23
13.11.2007, 15:52
Wenn eine Phrase Variablen enthalten soll, so musst Du in Templates <phrase> verwenden, bzw. in Scripten/Plugin construct_phrase().
In Fehlermeldungen die Variablen einfach als weitere Parameter übergeben.
Toll. :D
Was genau muss ich den eintragen damit der Code ausgeführt wird? Du hast mir das ja schön theoretisch erklärt, nur leider keine Ahnung was ich jetzt damit machen muss. ;)
Sorry, hab´s nicht so mit sowas... :(
Einfach mal Datein durchschaun ;)
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
bzw direkt mal die Funktion anschaun :)
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Pander23
13.11.2007, 18:06
Dank dir ragtek, trotzdem wills leider noch nicht. :D
Sieht bei mir jetzt so aus:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Aber das "$vbulletin->userinfo['credits']" wird immer noch nicht als Zahl ausgegeben bzw. als die Anzahl der Credits wie es früher der Fall war, als ich das noch nicht mit Phrasen hatte...
Mfg
Pander23
Surviver
13.11.2007, 18:19
Inder Phrase musst du dann auch {1} verwenden ;)
Ein heißer Tip wiedermal: doku!
http://www.vbulletin.com/docs/html/language_phrase_syntax
Pander23
13.11.2007, 18:54
Inder Phrase musst du dann auch {1} verwenden ;)
Ah, danke, jetzt funktioniert alles Wunderbar. :D
Doch schwerer sowas als es aussieht... :rolleyes:
Danke euch allen für eure Hilfe!!!
Einen schönen Abend wünsche ich noch. :)
Mfg
Pander23
Eigentlich ist es ganz simpel ;)
Denn wie schon erwähnt: Große Teile des vBulletin Quellcode sind dokumentiert - im Zweifelsfall einfach mal nachscheun was eine Funktion denn nund genau macht anstatt einfach rumzuprobieren :)
Hier sollte man jedoch durch entsprechende Bedingungen dafür sorgen dass dies nur ausgeführt wird wenn die Gruppe wirklich benötigt wird, denn ansonsten wird ise immer gelanden.Hi Andreas,
würde denn diese Abfrage funktionieren? Bin schon seit einer halben Stunde daran, aber es funktioniert ums Verrecken nicht...
HTML:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Wenn ich allerdings dieses Plugin ohne die Abfrage nehme, also in der Form...
HTML:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
dann funktioniert es perfekt. Hast Du da einen Tipp für mich? Danke schon mal vorab :)
Warum nicht so? Schon einmal probiert?
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Warum deine Methode nicht funktioniert, bin ich auch im Moment überfragt. Liegts am falschen Hook?
Schon einmal global_start usw. probiert?
@MikeD
Sieht eigentlich gut aus, die if-Variante ist bei einem Script aber kürzer.
Sicher dass member korrekt ist?
@Cosmo
global_start ist viel zu spät, da sind die Phrasen schon längst geladen - es muss init_startup sein.
Liegts am falschen Hook? Schon einmal global_start usw. probiert?Ne ne, da hat Andreas schon recht, denn das ganze muss ja VOR dem eigentlichen Initialisiert werden (initial startup) und darum halt der Hook init_startup ;)
@MikeD
Sieht eigentlich gut aus, die if-Variante ist bei einem Script aber kürzer. Sicher dass member korrekt ist?Och, sicher bin ich da noch nicht, aber wenn Du es so schön zwischen den Zeilen sagst, dann hakt es garantiert daran. Lass mich mal bitte weiter probieren, denn ich möchte da gerne selbst hinterkommen. Wenns dann nicht klappt, schreie ich nach Dir :D
Nachtrag: Stimmt, denn 'member' ist Quatsch. Es soll ja nur ausgeführt werden wenn die Gruppe wirklich benötigt wird. Also was liegt näher als das ganze per productID abzufragen. Lass mich mal tüfteln :)
Ja, Denkfehler auf meiner Seite. Danke zu euch beiden.
@MikeD
In welchen Bereich deines Forum (URL) soll die Phrasengruppe denn geladen werden?
@MikeD
In welchen Bereich deines Forum (URL) soll die Phrasengruppe denn geladen werden?Es ist AddOn abhängig und wird nur in bestimmten Bereichen einiger Scripte aktiv. Ist aber so nix spezielles, da mich das ganze gestern mal interessiert hat, wie das im einzelnen so funktioniert. Und ich glaub ich hab des Rätsels Lösung gefunden :) Melde mich dazu später.
Powered by vBulletin™ Version 4.1.3 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.