Project

General

Profile

GX-Bug #67343

Fallback für individuelle Sprachen

Added by Marvin Muxfeld 9 months ago. Updated 9 months ago.

Status:
Erledigt
Priority:
Hoch
Assigned To:
Category:
Sprachsystem
Target version:
% Done:

0%

Estimated time:
Steps to reproduce:
Betroffene Versionen:
4.0.0.1
Release Notes Langtext:

Alle Phrasenbegriffe werden für alle Sprachen initialisiert, wobei als Fallback Deutsch oder die erste (Sortierung nach language_id) verfügbare Übersetzung verwendet wird

Story points-Velocity based estimate-

Description

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.


If a new individual language has been created in a shop, there are independent section files for the new language on the server. However, these section files are not updated during an update, so that new language phrases are missing in the individual language. This leads to various error messages and log entries, so that the new language is no longer usable. Therefore we need a fallback to load the missing phrases from a base language (German or English).

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

$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.


Related issues

Copied from GX-Entwicklung - GX-Bug #66424: Fallback für individuelle SprachenErledigt

Actions

History

#1

Updated by Marvin Muxfeld 9 months ago

  • Copied from GX-Bug #66424: Fallback für individuelle Sprachen added
#2

Updated by Marvin Muxfeld 9 months ago

  • Status changed from In Bearbeitung to Testing
  • Assigned To changed from Marvin Muxfeld to Core-Entwickler
#3

Updated by Alexandre Ataides 9 months ago

  • Assigned To changed from Core-Entwickler to Alexandre Ataides
#4

Updated by Alexandre Ataides 9 months ago

  • Status changed from Testing to Erledigt
#5

Updated by Marvin Muxfeld 9 months ago

  • Tags deleted (stable)

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 5 MB)