Seite 1 von 1

Dev: Nervige Meldung "Module translation not found:"

Verfasst: Sa 1. Mär 2014, 12:46
von Oldperl
Hi @all,

in der 4.9 (aktuell 4.9.3) gibt jeder mit der mi18n-Funktion zu übersetzende Text bei fehlender Übersetzung die Meldung "Module translation not found:" vor dem zu übersetzenden Text aus. Leider kann man diese Meldung nicht abschalten.
Während der Entwicklung von Modulen kann diese zusätzliche Meldung rechte nervig sein, zumal wenn man on the fly gleich auch noch das Design mit integriert und nicht gleich jeden String übersetzen will.
Da ich nicht mit Übersetzungsplatzhaltern arbeite und mir persönlich ausreicht wenn der original Text angezeigt wird habe ich mir dafür eine kleine Funktion gebastelt. So ist auch kein Eingriff im Core notwendig (Update-sicher). Diese kann man in jedem Modul In- und Output mit einbauen.

Code: Alles auswählen

if(!function_exists("dce_mi18n")) {
    /**
     * wrapper for mi18n function not returning
     * message "translation not found"
     * 
     * @param string $sText string to translate
     * @return string translated string or if not present given string
     */
    function dce_mi18n($sText) {
        $sTranslated = mi18n($sText);
        if(strstr($sTranslated, "Module translation not found:") === FALSE) {
            return $sTranslated;
        }
        return $sText;
    }
}
Ob man diese Meldung unbedingt braucht, und wenn ja wofür, kann ich nicht beurteilen. Es wäre aber schön wenn sie in zukünftigen Versionen, zum Beispiel per getEffectiveSetting(), abschaltbar wäre.

Gruß aus Franken

Ortwin

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Sa 1. Mär 2014, 13:54
von Faar
Besonders nervt es auch, wenn Doppelpunkte und andere Zeichen nicht in die Übersetzung aufgenommen werden können. Wer schon mal was in Chinesisch übersetzt hat, weiß, dass dort die Punkte, Doppelpunkte und Kommas und andere Zeichen teils ganz anders gesetzt werden als in deutschen Sätzen. Man muss daher auch die Satzzeichen und manche andere Dinge mit dem Zusammenhang übersetzen, oder mit $s markieren.

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Do 4. Dez 2014, 12:24
von rethus
Ich möchte mich hier auch mal dafür aussprechen, dass dieses nervige Verhalten im Contenido-CORE anders geregelt wird.

Ich finde es absolut ausreichend, wenn diese Meldung (dass keine Übersetzung vorhandene ist) im BACKEND zu sehen ist, NICHT aber im FrontEnd.
Im Backend würde ich mir dann auch eher eine kleine Farbige Box (wie die roten Fehlerboxen) oben auf der Seite wünschen, die dies anzeigt und listet (welche Übersetzungen fehlen), anstatt das gesamte Layout durch diese Messages zu zerschießen.

Damit bleib es dann beim Entwickler das zu sehen, und etwas dagegen zu tun. Tut er nichts, wird halt der orginaltext in mi18n() ausgegeben.

Bitte nehmt das als Wish für den CORE auf.

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Di 6. Jan 2015, 16:18
von rethus
Meine Lösung & Vorschlag für künftige Releases:

includes/functions.i18n.php (http://api.contenido.org/con493/source- ... ml#399-439)

function mi18n($key) an entsprechender Stelle folgendermaßen abändern (Achtung, ungetestet!!!, denke aber die Idee wird deutlich):

Code: Alles auswählen


function mi18n($key) {
[...]
    // consider key as untranslated if translation has length 0
    // Don't trim translation, so that a string can be translated as ' '!
    if (0 === strlen($translation)) {
        $translation = $key;
        $mod_load =  new cApiModule($cCurrentModule);
        $module_name= $mod_load->getField('alias');
        cWarning('Module translation [Module: '.$module_name.' ]not found for: $key ' );
    }
[...]
}
Zu bedenken ist hier, das dadurch die Logs total zugemüllt werden.


Eine wohl bessere Variante wäre wie von mir oben angegeben, dass bei Aufruf des Moduls über das Backend, eine Info ausgegeben wird.
Die jedoch am einfachsten umzusetzende Lösung ist, nur im Backend den Hinweis auf die fehlende Übersetzung (wie gehabt direkt an Ort und Stelle, und nicht in einer auffälligen Box auf der Seite) zu positioneieren:

Code: Alles auswählen


function mi18n($key) {
[...]
     // consider key as untranslated if translation has length 0
    // Don't trim translation, so that a string can be translated as ' '!
    if (0 === strlen($translation)) {
        $translation = $key;
        if(Registry::isBackendEditMode();) $translation = 'Module translation not found: ' .$translation; 
    }
[...]
}

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Do 8. Jan 2015, 10:01
von frederic.schneider_4fb
Ich möchte Euch für die Diskussion und die zahlreichen Ideen danken. Ich habe das eben intern diskutiert: Wir nehmen sehr gerne den Vorschlag auf, die Meldung zukünftig via einer getEffectiveSetting()-Funktion deaktivierbar zu machen. Das Ticket hierzu findet Ihr unter: https://issues.contenido.org/browse/CON-2012. Wir haben die Funktion allerdings noch keiner Version zugeordnet.

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Do 22. Jan 2015, 10:02
von frederic.schneider_4fb
In CONTENIDO 4.9.7 wird es diese von mir am 8. Januar angekündigte Einstellung neu geben. Sie ist standardmäßig aktiviert, sodass es sich für die normale Anwendung nichts ändern wird. Wem diese Anzeige jedoch stört, kann sie dann zukünftig in den Systemeinstellungen deaktivieren!

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Do 22. Jan 2015, 17:22
von McHubi
Danke! :D

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Fr 23. Jan 2015, 09:08
von rethus
Super.
Kannst du noch kurz sagen, wie der Parameter in den Mandanteneinstellungen heißen wird? Dann können künftig "suchende" hier auf einen Blick fündig werden.
Im Ticket steht dies auch nicht, soweit ich das gesehen habe.

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Di 27. Jan 2015, 10:39
von frederic.schneider_4fb
Die entsprechende Implementierung lautet:

Code: Alles auswählen

getEffectiveSetting('debug', 'module_translation_message', 'true')
Sprich: Typ "debug", Name "module_translation_message", standardmäßig (falls nicht gesetzt) auf "true" (aktiv). Deaktiviert lautet der Wert dann "false". Ab CONTENIDO 4.9.7 zu finden unter Administration -> System -> System-Konfiguration, Abschnitt "Entwicklung", ganz unten (vgl. Screenshot), als auch unter Administration -> System -> Experteneinstellungen.

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Di 27. Jan 2015, 10:57
von rethus
perfekt.

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Di 27. Jan 2015, 15:21
von Oldperl
Vielen Dank für die zeitnahe Umsetzung im Core.

Gruß aus Franken

Ortwin

Re: Dev: Nervige Meldung "Module translation not found:"

Verfasst: Do 5. Feb 2015, 14:36
von procon
Sehr cool - danke! :!: