Zeilenumbruch im Quelltext bei geparsten Language Variabel

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zeilenumbruch im Quelltext bei geparsten Language Variabel

    Hallo,

    ich habe so n doofes Problem bei meinem Code. Ich will jetzt mit Language Files arbeiten, allerdings wird nach jedem Language-Begriff im HTML Quelltext beim Browser ein Zeilenumbruch gemacht.

    Quellcode

    1. public function parseLanguage($tpl) {
    2. $path = '../configs/german.lang';
    3. if(file_exists($path)) {
    4. $file = file($path);
    5. foreach($file as $value) {
    6. $data = explode(' = ', $value);
    7. $this->assign_var('LANG_'.$data[0], $data[1]);
    8. }
    9. } else {
    10. echo 'Language file doesnt exist!';
    11. }
    12. }
    Alles anzeigen


    Das ist die Funktion damit ein Code (Beispiel: {LANG_LOGIN_ERROR_ONE}) mit der entsprechenden Sprach Variabel ersetzt wird.

    Meine german.lang sieht dann so aus:

    IMAGE_DIR = ../images
    LOGIN_EMPTY_USERNAME = Bitte geben Sie ein Benutzernamen ein.
    LOGIN_EMPTY_PASSWORD = Bitte geben Sie ein Passwort ein.
    LOGIN_WRONG_USER_DATA = Ihre Benutzerdaten waren falsch. Versuchen Sie es erneut.


    im Quelltext sieht das dann so aus:

    Quellcode

    1. <img src="../images
    2. /icons/world.gif" width="16" height="16" border="0" alt="" /> <a href="admin.php?section=main">Übersicht</a><br />[syntax="html"]
    [/syntax]

    Also das ../images ist aus der Sprach Datei und direkt danach ist halt ein Zeilenumbruch was nicht sein sollte...

    Woran kann das liegen? Da bin ich überfragt :(!

    Danke für die Hilfe°!

    MFG Illidan
  • Das ist der Zeilenumbruch, den du in deiner Sprachdatei gemacht hast. Filter es doch einfach raus:

    Quellcode

    1. public function parseLanguage($tpl) {
    2. $path = '../configs/german.lang';
    3. if(file_exists($path)) {
    4. $file = file($path);
    5. foreach($file as $value) {
    6. $data = explode(' = ', $value);
    7. $this->assign_var('LANG_'.$data[0], preg_replace("/\r|\n/s", "", $data[1]));
    8. }
    9. } else {
    10. echo 'Language file doesnt exist!';
    11. }
    12. }
    Alles anzeigen


    d0nut war mal wieder schneller ;(
    MfG dynambee
  • Juhu, nun klappt es. Vielen Dank :)!

    Eine weitere Frage noch: Alle Sprachtexte sind ja in der german.lang Datei. Diese werden ja aber nur bei den Templates angewendet. Wenn ich allerdings im PHP Code etwas zuweisen muss z.B. hier:

    Quellcode

    1. if($count_notices == '0') {
    2. $template->assign_vars(array('notice_reply' => TEXT));
    3. }


    Ich könnte zwar für TEXT jetzt "Es sind keine Notizen vorhanden" hinschreiben, allerdings wollte ich auch gerne so jetzt die Sprachsachen vom PHP Code wie acuh bei den Templates trennen.

    Gibt es da irgendwie noch eine Möglichkeit aus der german.lang die Sprachdaten zu nehmen? Ich hab schonmal ausprobiert das TEXT auch zu einer {LANG_VARAIBLE} wird wie es in den Templates ersetzt wird. Allerdings steht dann auf der Seite nur {LANG_VARIABLE}.

    Ich hoff mal dass, das jemand versteht x)!

    Danke ;)!

    Achja: Frohe Ostern noch!

    EDIT: Übrigens, das Template System hab ich von phpBB2.
  • Mach dir doch einfach eine Funktion dafür:

    Quellcode

    1. function getLanguageContainer($lang = "") {
    2. $path = '../configs/'.$lang.'.lang';
    3. if(file_exists($path)) {
    4. $file = file($path);
    5. $container = array();
    6. foreach($file as $value) {
    7. $data = explode(' = ', $value);
    8. $container[$data[0]] = trim($data[1]);
    9. }
    10. return $container;
    11. } else {
    12. return false;
    13. }
    14. }
    15. $_LANG = getLanguageContainer('german');
    Alles anzeigen


    Auf dein Beispiel angewendet:

    Quellcode

    1. if($count_notices == '0') {
    2. $template->assign_vars(array('notice_reply' => $_LANG['NOTICE_REPLY']));
    3. }


    Ist bestimmt nicht die beste und performanteste Lösung und soll nur als Beispiel dienen!
    MfG dynambee
  • Leider habe ich noch ein weiteres Problem. Alle Sprachtexte sind ja in der german.lang, das Problem ist nur wenn ich zb eine Zeile frei lasse kommt auf der Seite dann folgende Warnung:

    Notice: Undefined offset: 1 in C:\xampp\htdocs\ax_core\configs\template.php on line 21


    Es sagt aus das eine Sache nicht definiert ist, halt die Leere Zeile. Gibt es eine Möglichkeit das ich trotzdem Zeilen frei lassen kann bzw. auch so Kommentar-Like "// Ueberschrift" in die Datei schreibe.

    Wie die Funktion für das Ersetzen der Variabeln aufgebaut ist steht im ersten Post so wie Sprachtext Beispiel.

    Ich hoffe mir kann da noch mal einer helfen. Vielen Dank :)!


    MFG
    Illidan
  • Auch das ist nicht schwer:

    Quellcode

    1. function getLanguageContainer($lang = "") {
    2. $path = '../configs/'.$lang.'.lang';
    3. if(file_exists($path)) {
    4. $file = file($path);
    5. $container = array();
    6. foreach($file as $value) {
    7. if (!empty($value) && (substr($value, 0, 2) != '//')) {
    8. $data = explode(' = ', $value);
    9. $container[$data[0]] = trim($data[1]);
    10. }
    11. }
    12. return $container;
    13. } else {
    14. return false;
    15. }
    16. }
    Alles anzeigen
    MfG dynambee

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von dynambee ()

  • Cool, vielen Dank. Funktioniert eigentlich prima. Nur wundert es mich warum immer noch eine Meldung kommt wenn nur eine Zeile frei ist ohne das was drin steht. Ist dafür nicht auch das !empty(value) da?

    Noch eine Nebenfrage: Ist es besser AND oder && zu benutzen? Habe bisher immer AND also ausgeschrieben hingeschrieben^^, gibts einen großen Unterschied dazwischen ?
  • d0nut schrieb:

    verschieb das trim mal vor die if Abfrage $data = trim($data)
    Richtig, da die leere Zeile ja immer noch einen Zeilenumbruch hat!

    Quellcode

    1. foreach($file as $value) {
    2. $value = trim($value);
    3. if (!empty($value) && (substr($value, 0, 2) != '//')) {
    4. $data = explode(' = ', $value);
    5. $container[$data[0]] = $data[1];
    6. }
    7. }
    MfG dynambee

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von dynambee ()