www.salzgurken.com
Startseite arrow Beruflich arrow Joomla arrow Joomfish - Komponente für Mehrsprachigkeit
    DeutschEnglish
 

Besucher: 482834
Aktuell ist 1 Gast online
Joomfish - Komponente für Mehrsprachigkeit
26.06.2007
Da ich meine Seite zweisprachig gestalten wollte, habe ich mir eine Komponente dafür gesucht. Am Beliebtesten in der Joomla Gemeinschaft ist hier eindeutig Joomfish (Version 1.7), weshalb ich mich dafür entschied, dass zu testen. Diese Komponente ist nicht dafür gedacht die Seite automatisch zu übersetzen, sondern nur eine Schnittstelle anzubieten, in dem man die übersetzten Texte eintragen kann und dem Besucher der Seite zur Verfügung darzustellen. Da ich von automatischen Übersetzungen sowieso nicht überzeugt bin, war diese Komponente die richtige Strategie für mich.

Das Einbinden ging relativ problemlos und funktionierte sogar mit Joomsef. Der Link wurde dann einfach dargestellt mit einem Unterordner /de/ oder /en/ , also der entsprechenden Sprache. Für das Übersetzen werden im Backend die deutschen Texte angezeigt und darunter erscheint ein Feld, in dem man die englische Version eintragen kann. Damit alle Texte übersetzbar sind, müssen entsprechende XML Felder hinzugefügt werden, allerdings werden standardmäßig die wichtigsten Einstellungen hierfür mitgeliefert.

Für den Besucher gibt es dann die Möglichkeit (über ein entsprechendes Modul) die Sprache auszuwählen.


Probleme mit dem Anker im Link durch Joomsef und Joomfish

Leider gab es Probleme mit den Links innerhalb der Pony Gallery ML (Version 2.4.0). Die Links werden durch Artio Joomsef (Version 1.5.1) Suchmaschinenfreundlich dargestellt. Allerdings wurde der Anker für die Bilder zusammen mit der Variable für die aktuelle Sprache in dem Link falsch angehängt, so dass die Ankerfunktion nicht mehr funktionierte und die Links auch unschön dargestellt wurden. Der Link sah z.B. so aus:

....bild.html#ponyimg&lang=de



Hierfür habe ich also die passende Stelle gesucht, an der die aktuelle Sprache mit der Variablen "lang" angehängt wird. Dies war gar nicht so einfach, da dies an sehr vielen Stellen in unterschiedlichen Dateien gemacht werden könnte, allerdings hat es nur in der folgenden Datei Wirkung gezeigt.

In der Datei \components\com_sef\joomsef.php habe ich in der Funktion "sefRelToAbs" folgenden Ausdruck hinzugefügt.

Alter Codeschnipsel:


        // Add lang if configured to and it is missing.
        if (class_exists('JoomFish')) {
            // Define language if set to.
            if ($sefConfig->alwaysUseLang && strpos($string, 'lang=') === false) {
                $string .= ((strpos($string, '?') !== false) ? '&' : '?');
                $string .= 'lang='.SEFTools::getLangCode();
            }
        }

       
Neuer Codeschnipsel:


         // Add lang if configured to and it is missing.
         if (class_exists('JoomFish')) {
            // Define language if set to.
            if ($sefConfig->alwaysUseLang && strpos($string, 'lang=') === false) {
                $anker = strstr( $string, '#' );
                $string = str_replace($anker, '', $string);
                $string .= ((strpos($string, '?') !== false) ? '&' : '?');
                $string .= 'lang='.SEFTools::getLangCode() . $anker;
            }
        }

    
Die Änderung bewirkt, dass der Anker abgeschnitten wird, bevor der Teil mit der Sprachvariable angehängt wird und direkt danach ans Ende angefügt wird.

Zu finden ist die Komponente unter

http://www.joomfish.net/



Bookmark us

Das Modul musste angepasst werden damit der Text ebenfalls mehrsprachig dargestellt wird, dies habe ich allerdings nicht über joomfish gemacht, sondern über eine Änderung in \modules\mod_bookmarkus.php  Ich habe dort die Stelle für den Anzeigetext gesucht und durch die globale Variable "_BOOKMARK_TEXT" ersetzt. Das sah dann so aus:


if($bus_site) bus_display_link('1',$bus_display_image,$bus_site_def_image,
$bus_site_image,$mosConfig_sitename,$mosConfig_live_site, _BOOKMARK_TEXT);


Dann habe ich in  \language\english.php die Variablendefinition hinzugefügt:

/** modules/mod_bookmarkus.php */
DEFINE('_BOOKMARK_TEXT','Bookmark us');

 
In \language\germani.php entsprechend die deutschen Version.

Zu finden ist die Komponente unter

http://joomlacode.org/gf/project/bookmarkus/frs/






Tags:
View blog reactions

» 1 Kommentar
1Kommentar
am Sunday, 06 January 2008 17:59von Mike Rutz
Ich habe gerade die neue Version von Artio Joomsef installiert (Update Version 2.2.2 von Version 1.5.1) und festgestellt, dass die Entwickler die Änderungen bezüglich des Ankers übernommen haben.  
 
Es ist also nicht mehr nötig selber die Änderungen im Quelltext vorzunehmen.
» Kommentar schreiben
E-Mail (wird nicht veröffentlicht)
Name
Titel
Kommentar
 verbleibende Zeichen
Captcha Image Code neu generieren, falls er unlesbar sein sollte
 

© 2008 Mike Rutz