Projekt

Allgemein

Profil

GX-Bug #66424

Von Timo Backhaus vor etwa 4 Jahren aktualisiert

Wenn in einem Shop eine neue individuelle Sprache erstellt worden ist, dann liegen auf dem Server eigenständige Section Dateien für die neue Sprache. Bei einem Update werden diese Section Dateien jedoch nicht aktualisiert, sodass neue Spraachphrasen in der individuelle Sprache fehlen. Dies führt zu diversen Fehlermeldungen und Logeinträgen, wodurch die neue Sprache nicht mehr zu gebrauchen ist. Wir brauchen daher einen Fallback, damit die fehlenden Phrasen aus einer Basissprache (Deutsch oder Englisch) geladen werden. 

 Quick&Dirty Lösung: 
 src/system/core/caching/PhraseCacheBuilder.inc.php:build() 

 ``` php 
 $db = StaticGXCoreLoader::getDatabaseQueryBuilder(); 
        
         $foreignLanguages = $db->select('*') 
                 ->from('languages') 
                 ->where('languages_id > 2') 
                 ->get() 
                 ->result_array();   
        
         if(is_array($foreignLanguages) && count($foreignLanguages) > 0) 
         { 
             $originalPhrases = array(); 
             $query = $db->query("SELECT * FROM language_phrases_cache WHERE language_id=2"); 
             while ($row = $query->unbuffered_row('array')) 
             { 
                 $originalPhrases[$row['section_name'] . '___' . $row['phrase_name']] = $row; 
             } 
                
             foreach($foreignLanguages as $language) 
             {            
                 $foreignPhrases = array(); 
                 $query = $db->query("SELECT * FROM language_phrases_cache WHERE language_id=" . $language['languages_id']); 
                 while ($row = $query->unbuffered_row('array')) 
                 { 
                     $foreignPhrases[$row['section_name'] . '___' . $row['phrase_name']] = $row; 
                 }      
                
                 $diff = array_diff_key($originalPhrases, $foreignPhrases); 
                
                 foreach($diff as $key => $phraseItem) 
                 { 
                     $diff[$key]['language_id'] = $language['languages_id']; 
                 }     
                 $diff = array_values($diff);  
                
                 $db->insert_batch('language_phrases_cache', $diff); 
             } 
         } 
 ``` 

 ## Wichtig: Diese Lösung betrifft nur das Laden der fehlenden Phrasen. Die Funktion Texte anpassen muss noch zusätzlich überarbeitet werden. 

Zurück