Vorschlag: Globale eigene Sprachdatei in ...\sections\mbr_global.lang.inc.php

Thema wurde von Manni_HB, 18. Mai 2012 erstellt.

  1. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Könnten man das Sprachdateien-System nicht dahingehend erweitern, dass man eigene Dateien dort anlegt und diese global im Template zur Verfügung stehen OHNE dass sie expelizit im Kopf der Tpl-Datei angegeben werden müssen?

    Evtl. mit einem Unterordner ..\sections\user\
    Dort könnte man sauber nach Inhalten Dateien anlegen:
    mbr_texte.lang.inc.php
    mbr_icon.lang.inc.php
    mbr_irgendwas.lang.inc.php

    Bis zum Beweis des Gegenteils halte ich dies für eine gute Idee - oder? :)
     
  2. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Ist eine gute Idee, habe ich mir auch schon so gelöst.....
     
  3. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    1. Danke!
    2. Wie ... ist das kompliziert,aufwändig, teuer, ??? :)
     
  4. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Ist eigentlich nicht so schwierig, und, natürlich, sogar updatesicher lösbar...

    Folgenden Code als "user_classes\overloads\LanguageTextManager\pt_LanguageTextManager.inc.php" speichern (und Cache löschen).

    PHP:
    <?php
    /* --------------------------------------------------------------
    pt_LanguageTextManager.inc.php 2012-05-19 Avenger
    Gambio GmbH
    http://www.gambio.de
    Copyright (c) 2012 Gambio GmbH

    Copyright (c) 2012 Avenger, entwicklung@powertemplate.de
    Extend language-manager to also load definitions from global language file(s)

    Released under the GNU General Public License (Version 2)
    [http://www.gnu.org/licenses/gpl-2.0.html]
    --------------------------------------------------------------
    */

    class pt_LanguageTextManager extends pt_LanguageTextManager_parent
    {
        function 
    init_from_files($p_section$p_language_id)
        {
        
    parent::init_from_files($p_section$p_language_id);

            
    $t_sections_path    DIR_FS_CATALOG 'lang/' .$_SESSION['language']. '/sections/';
            
    $t_lang_file glob($t_sections_path.'*all_sections.lang.inc.php');
            if (
    is_array($t_lang_file))
            {
          
    $t_lang_file=$t_lang_file[0];
          
    $t_language_text_content_array = array();
                include(
    $t_lang_file);
          if (
    sizeof($t_language_text_content_array ) > 0)
          {
            
    $multi_level=false;
            foreach (
    $t_language_text_content_array as $key=>$t_lang_array)
            {
              if (
    is_array($t_lang_array))
              {
                
    //Language file is array of arrays, so only match entries for curretn or 'global' 'section!
                
    $multi_level=true;
                if (
    $key==$p_section || $key=='global')
                {
                  
    $this->add_section($p_section$t_lang_array);
                }
              }
              else
              {
                
    $this->add_section($p_section$t_language_text_content_array);
              }
            }
          }
            }
        }
    }
    ?>
    Das funktioniert dann wie folgt:

    Zuerst werden die "normalen" Section-Sprachdateien in "lang/german/sections" geladen.

    Dann wir untersucht, ob es in diesem Verzeichnis Dateien der Form "*all_sections.lang.inc.php" (z.B. "mbr_all_sections.lang.inc.php"), wenn ja, werden auch die Definitionen dieser Datei(en) geladen.

    Diese Dateien können in 2 Varianten definiert werden:

    Einstufig:

    PHP:
    $t_language_text_content_array = array(
      
    'heading_account' => 'Ihre pers&ouml;nliche Seite',
      
    'order_nr' => 'Bestell-Nr.: ',
      
    'order_status' => 'Status: ',
      
    'order_total' => 'Betrag: ',
      
    'text_address' => 'Adressbuch bearbeiten',
      
    'text_all' => ' (S&auml;mtliche anzeigen)',
      
    'text_articles' => 'Artikel: ',
      
    'text_current' => 'Bisherige Bestellungen',
      
    'text_date' => 'Bestelldatum: ',
      
    'text_delete_account' => 'Account l&ouml;schen',
      
    'text_edit' => 'Kontodaten bearbeiten',
      
    'text_goto_cat' => 'Gefunden in dieser Kategorie',
      
    'text_login' => 'Anmelden oder neues Konto erstellen',
      
    'text_newsletter' => 'Newsletter abonnieren oder abbestellen',
      
    'text_notifications' => 'Meine Artikelbenachrichtigungen anzeigen oder &auml;ndern',
      
    'text_oid' => 'Bestellnummer: ',
      
    'text_orders' => 'Meine bisherigen Bestellungen anzeigen',
      
    'text_password' => 'Passwort &auml;ndern',
      
    'text_privacy' => 'Datenschutz',
      
    'text_shipped' => 'Versenden an: ',
      
    'text_status' => 'Bestellstatus: ',
      
    'text_total' => 'Bestellsumme: ',
      
    'text_welcome' => 'Hier ist Ihre pers&ouml;nliche Seite, auf der Sie einen &Uuml;berblick &uuml;ber Ihre get&auml;tigten Bestellungen sowie eine Auflistung Ihrer zuletzt besuchten Artikel finden.<br /><br />Falls Sie ein Konto bei uns haben, k&ouml;nnen Sie hier au&szlig;erdem Ihre pers&ouml;nlichen Daten &auml;ndern.',
      
    'title_account' => 'Ihre pers&ouml;nlichen Einstellungen',
      
    'title_main' => '&Uuml;bersicht',
      
    'title_notification' => 'E-Mail Benachrichtigungen',
      
    'title_orders' => 'Meine Bestellungen',
      
    'title_viewed_products' => 'Ihre zuletzt aufgerufenen Artikel',
      
    'title_welcome' => 'Herzlich willkommen!'
    );
    Bei dieser Struktur, bei der alle eigenen Definitionen in einem einstufigen Array vorhanden sind, werden alle Definitionen dieser Datei bei allen angeforderten "Sections" dazu geladen...

    Mehrstufig:

    PHP:
    $t_language_text_content_array = array(

      
    'account' => array(
            
    'heading_account' => 'Ihre pers&ouml;nliche Seite',
            
    'order_nr' => 'Bestell-Nr.: ',
            
    'order_status' => 'Status: ',
            
    'order_total' => 'Betrag: ',
            
    'text_address' => 'Adressbuch bearbeiten',
            
    'text_all' => ' (S&auml;mtliche anzeigen)',
            
    'text_articles' => 'Artikel: ',
            
    'text_current' => 'Bisherige Bestellungen',
            
    'text_date' => 'Bestelldatum: ',
            
    'text_delete_account' => 'Account l&ouml;schen',
            
    'text_edit' => 'Kontodaten bearbeiten',
            
    'text_goto_cat' => 'Gefunden in dieser Kategorie',
            
    'text_login' => 'Anmelden oder neues Konto erstellen',
            
    'text_newsletter' => 'Newsletter abonnieren oder abbestellen',
            
    'text_notifications' => 'Meine Artikelbenachrichtigungen anzeigen oder &auml;ndern',
            
    'text_oid' => 'Bestellnummer: ',
            
    'text_orders' => 'Meine bisherigen Bestellungen anzeigen',
            
    'text_password' => 'Passwort &auml;ndern',
            
    'text_privacy' => 'Datenschutz',
            
    'text_shipped' => 'Versenden an: ',
            
    'text_status' => 'Bestellstatus: ',
            
    'text_total' => 'Bestellsumme: ',
            
    'text_welcome' => 'Hier ist Ihre pers&ouml;nliche Seite, auf der Sie einen &Uuml;berblick &uuml;ber Ihre get&auml;tigten Bestellungen sowie eine Auflistung Ihrer zuletzt besuchten Artikel finden.<br /><br />Falls Sie ein Konto bei uns haben, k&ouml;nnen Sie hier au&szlig;erdem Ihre pers&ouml;nlichen Daten &auml;ndern.',
            
    'title_account' => 'Ihre pers&ouml;nlichen Einstellungen',
            
    'title_main' => '&Uuml;bersicht',
            
    'title_notification' => 'E-Mail Benachrichtigungen',
            
    'title_orders' => 'Meine Bestellungen',
            
    'title_viewed_products' => 'Ihre zuletzt aufgerufenen Artikel',
            
    'title_welcome' => 'Herzlich willkommen!'
      
    ),
      
    'account_edit' => array(
            
    'csID' => 'Kundennummer:',
            
    'heading_account' => 'Ihre pers&ouml;nliche Daten &auml;ndern',
            
    'text_birthdate' => 'Geburtsdatum:',
            
    'text_email' => 'E-Mail-Adresse:',
            
    'text_fax' => 'Telefaxnummer:',
            
    'text_female' => 'Frau',
            
    'text_firstname' => 'Vorname:',
            
    'text_gender' => 'Anrede:',
            
    'text_lastname' => 'Nachname:',
            
    'text_male' => 'Herr',
            
    'text_must' => '* erforderliche Informationen',
            
    'text_tel' => 'Telefonnummer:',
            
    'text_ustid' => 'USt-IdNr.:',
            
    'title_personal' => 'Ihre pers&ouml;nlichen Daten'
      
    ),
    /*
    Weitere "Section"-Definitionen
    */
      
    'global' => array(
            
    'heading_product_reviews' => 'Rezensionen zu: ',
            
    'heading_reviews' => 'Kundenrezensionen:',
            
    'heading_reviews_write' => 'Was meinen Sie?',
            
    'text_all' => 'Zeige alle Rezensionen',
            
    'text_author' => 'Autor:',
            
    'text_author' => 'Verfasser: ',
            
    'text_bad' => 'SCHLECHT',
            
    'text_date' => 'Datum:',
            
    'text_good' => 'SEHR GUT',
            
    'text_inp_code' => 'Hier eingeben',
            
    'text_input' => 'Ihre Meinung:',
            
    'text_note' => '<span class="strong">ACHTUNG:</span> HTML wird nicht unterst&uuml;tzt!',
            
    'text_product' => 'Artikel:',
            
    'text_rating' => 'Bewertung: ',
            
    'text_rating' => 'Bewertung:',
            
    'text_reviews_link' => 'Zur Rezension',
            
    'text_sec_code' => 'Sicherheitscode',
            
    'text_text' => 'Rezension:',
            
    'title_author' => 'Autor',
            
    'title_date' => 'Datum',
            
    'title_nr' => 'Nr.',
            
    'title_rating' => 'Bewertung'
      
    )
    )
    Hier haben wir einen mehrstufigen Array von Arrays...

    Das habe ich implementiert, um in einer Datei alle meine eigenen Definitionen sectionspezifisch zu speichern, der Index der Unterarrays ist dabei der Section-Name.

    In diesem Modus werden nur die Definitionen für die aktive Section dazu geladen, und(!) die Definitionen der Pseudo-Section 'global'.

    (Kenner der Materie werden feststellen, dass ich damit das Konzept der Smarty-".conf"-Dateien nachgebildet habe.

    Ich hasse es einfach, mit zu vielen Dateien arbeiten zu müssen, und habe das lieber alles schön an einer Stelle versammelt...)

    Da diese eigenen Definitionen als letzte geladen werden, kann man damit natürlich die Standard-Gambio-Definitionen ersetzen.

    Und es können mehrere solcher Dateien existieren, so dass sich da jeder vergnügen kann.
     
  5. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Der Wahnsinn hat einen neuen Namen: AVENGER
    Mehrstufig ist ja einfach nur der MegaGeileOberHammer ... nun kann man endlich das schaurige SprachdateienWirrwar in geordnete Bahnen bringen!!

    DIR EIN GANZ DICKES DANKESCHÖN!!!
     
  6. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Die "...\templates\EyeCandy\module\content.html" lädt wohl keine Sprachdateien - jedenfalls klappt es dort nicht.
    Eine Idee/Vorschlag/Lösung?
     
  7. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Einfach noch ein

    PHP:
    {load_language_text section="content" name="content"}
    an den Anfang packen