Anleitung Globale eigene Sprachdatei definieren - Textvariablen

Thema wurde von Avenger, 19. Mai 2012 erstellt.

  1. 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.
     
  2. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    31.074
    Danke erhalten:
    6.132
    Danke vergeben:
    1.085
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Fragen und Diskussionsbereich:

    (Link nur für registrierte Nutzer sichtbar.)
     
  3. LauterMacher

    LauterMacher Mitglied

    Registriert seit:
    11. Juni 2013
    Beiträge:
    9
    Danke erhalten:
    0
    #3 LauterMacher, 9. August 2013
    Zuletzt bearbeitet: 9. August 2013
    Guten Morgen!

    Nach update auf Service Pack 2.0.13.2 - funktioniert die gute Lösung nicht mehr.
    Gibt es dafür eine Alternative?

    Besten Dank für die Hilfe.
     
  4. 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
    Hast Du mal geschaut, was in Megalettern einen Beitrag über deinem steht? :mad:
     
  5. LauterMacher

    LauterMacher Mitglied

    Registriert seit:
    11. Juni 2013
    Beiträge:
    9
    Danke erhalten:
    0
    Richtig!

    Bin NEU hier im Forum.

    Danke für den Hinweis.