Welcome, Guest. Please login or register.
Did you miss your activation email?
May 25, 2012, 06:07:24 AM

Login with username, password and session length
Search:     Advanced search
Wollen Sie dem WebsiteBaker Team beitreten?
Nähere Informationen finden Sie unter hier und auf unserer neuen Webseite.
155477 Posts in 21708 Topics by 7734 Members
Latest Member: rofroodoOvego
* Home Help Search Login Register
Pages: [1] 2 3   Go Down
Print
Author Topic: Umschaltung der gleichen Seite, zwischen mehreren Sprachen  (Read 8316 times)
Blueeyes007

Offline Offline

Posts: 13



« on: February 06, 2009, 11:19:56 AM »

Hallo,

bin neu hier und konnte leider im Forum keine Antwort auf mein Problem finden.

Wenn ich eine mehrsprachige Seite erstelle (nach Anleitung), so wie hier mehrfach zu lesen ist, kommt der Besucher beim Anwählen einer anderen Sprache immer wieder zuerst auf der jeweiligen Startseite dieser Sprache heraus.

Struktur (s.Bild im Anhang)

Jetzt meine Frage, wie kann ich es erreichen, dass der Besucher genau die gleiche Seite (impressum), aber dann auf englisch (Imprint) oder so, direkt angezeigt bekommt? Ohne den Umweg über die jeweilige Startseite. Vielleicht sehe ich ja auch den Wald vor lauter Bäumen nicht sad

Hoffe, ich konnte die Frage verständlich stellen und es kann mir jemand weiterhelfen? Vilenn Dank Im Voraus für Eure Mühe...

Grüsse

Steve

« Last Edit: February 09, 2009, 09:38:34 PM by Blueeyes007 » Logged

Gruß Steve

Alles kann, nichts muss...
Blueeyes007

Offline Offline

Posts: 13



« Reply #1 on: February 08, 2009, 03:16:14 PM »

Hallo Forum,

scheint wohl doch schwieriger zu sein.... sad

Habe mir mit PHP selber eine Lösung erarbeitet, die zwar leider nicht allgemeingültig ist, aber für meinen jetzigen Zweck genügt.

Bei Interesse kurz mailen....

Trotzdem vielen Dank fürs Anschauen.

Grüsse

Steve
Logged

Gruß Steve

Alles kann, nichts muss...
chabar2000

Offline Offline

Posts: 152


« Reply #2 on: February 08, 2009, 04:00:55 PM »

Hallo, Steve,

wäre sehr interessiert an Deiner Lösung!
Grüße
Karl
Logged
Blueeyes007

Offline Offline

Posts: 13



« Reply #3 on: February 09, 2009, 08:51:55 PM »

Hallo Karl,

wie gesagt meine Lösung ist nicht allgemeingültig  sad

Die 1. Voraussetzung ist die genaue Seitenstruktur einzuhalten (s. Oben im Anhang!),d.h. mit DE, EN und FR als Hauptebene.

Die jeweiligen Unterseiten (Bsp. Impressum) der einzelnen Sprachen müssen alle den gleichen Menutitel haben, weil dieser für die Speicherung der Seite zuständig ist (....pages/de/impressum.php;...pages/en/impressum.php). Deshalb muss der Menu-Aufruf mit showmenu2() nicht mit [MENU_TITLE], sondern mit [PAGE_TITLE] erfolgen. Klingt komisch, is aber so  grin

Menu ab 2. Ebene einblenden:
Code:
show_menu2(1, SM2_ROOT+1, SM2_START+1, SM2_TRIM|SM2_PRETTY, '[li][ac][page_title]</a>', '</li>', '[ul]', '</ul>', false, false);

Jetzt nur noch mit folgendem PHP-Code den Link der gerade angezeigten Page auslesen und den Teil des Strings, der für die jeweilige Sprache zuständig ist (....pages/de/inpressum.php), gegen die anderen Sprachen (en und fr) austauschen. Den folgenden PHP-Code habe ich im oberen Bereich der Template-Index.php platziert.

Austausch der Sprache:
Code:
<?php  // Abfrage und Austausch der jeweiligen Landeskennung
    
if (stristr ($page_link"/de/")) {
        
$pagelink_de $page_link;
        
$pagelink_en str_replace("/de/""/en/"$page_link);
        
$pagelink_fr str_replace("/de/""/fr/"$page_link);
        } elseif (
stristr ($page_link"/en/")) {
        
$pagelink_de str_replace("/en/""/de/"$page_link);
        
$pagelink_en $page_link;
        
$pagelink_fr str_replace("/en/""/fr/"$page_link);
        } elseif (
stristr ($page_link"/fr/")) {
        
$pagelink_de str_replace("/fr/""/de/"$page_link);
        
$pagelink_en str_replace("/fr/""/en/"$page_link);
        
$pagelink_fr $page_link;
        };
?>

Drunter kommt jetzt das Sprachen-Menu mit den Flaggen, das allerdings manuell einprogrammiert ist.

Sprach-Menu:
Code:
<div id="menu-top">
    <ul>
 
    <li><a href="<?php echo $pagelink_de?>"><img src="<?php echo TEMPLATE_DIR?>/images/flaggen/DE.gif" alt="Deutsch" title="Deutsch" width="34" height="25"  style="border: 0px;" /></a></li>   
    <li><a href="<?php echo $pagelink_en?>"><img src="<?php echo TEMPLATE_DIR?>/images/flaggen/EN.gif" alt="English" title="English" width="34" height="25"  style="border: 0px;" /></a></li>   
    <li><a href="<?php echo $pagelink_fr?>"><img src="<?php echo TEMPLATE_DIR?>/images/flaggen/FR.gif" alt="Fran&ccedil;ais" title="Fran&ccedil;ais" width="34" height="25"  style="border: 0px;" /></a></li> 

    </ul>
</div><!--menu-top-->

Die Pfade für die Flaggensymbole müssen natürlich dementsprechend auf Dein System angeglichen werden. Habe aber mit Absicht das "Template"-Verzeichnis benutzt, damit der Kunde die Flaggen nicht aus Versehen löschen kann.




Hoffe konnte Dir weiterhelfen.

Gruss

Steve


« Last Edit: February 09, 2009, 09:28:49 PM by Blueeyes007 » Logged

Gruß Steve

Alles kann, nichts muss...
chabar2000

Offline Offline

Posts: 152


« Reply #4 on: February 10, 2009, 09:07:57 AM »

Toll, danke Dir! Werde mich "asap" damit befassen.
Grüße, Karl
Logged
chio
WebsiteBaker Org e.V.

Offline Offline

Posts: 2264


« Reply #5 on: February 10, 2009, 09:34:05 AM »

Das ist eine SEHR schlaue Lösung!

Mich fragen öfter mal Kunden, ob das geht (direkter Aufruf der entsprechenden Seite), mein Standpunkt:
Es klingt zwar verlockend, aber in Praxis sehe ich keinen Vorteil darin. Normalerweise kommen die Leute schon über die Sprache rein, die sie gewählt haben und wollen nicht die Übesetzung überprüfen. Wer zb Google verwendet, wird ohnehin auf Seiten in seiner Sprache gebracht.

Hier bei dieser Lösung gibt es das Problem, dass ich nur sehr kurze Titel vergeben kann und von daher in Suchmaschinen benachteiligt bin.

Eine weitere Möglichkeit:
Immer dafür sorgen, dass die englische Seite die nächstfolgende Page_id hat wie die Deutsche usw. Dann kann man direkt über die Page_id zugreifen.
Das erfordert aber viel Planung und Disziplin, und bei einem Fehlgriff muss man durch clonen/löschen die Reihenfolge wieder herstellen. Und einem Kunden kann man auch nicht klar machen.
Logged

*weg*
doc
Guest
« Reply #6 on: February 10, 2009, 09:56:42 AM »

Hallo,

denke das ganze könnte über ein Codesnippet realisiert werden, unter der Annahme, dass die Sprachdateien über Containerpages realisiert werden. Sprich eine Struktur wie:

Code:
EN
  - Home (page_id = 1, Pos = 1)
  - Page x (page_id = 10, Pos = 2)
DE
  - Startseite (page_id = 4, Pos 1)
  - Page Y (page_id = 2, Pos 2)

Das Codesnippet müsste dann folgende erledigen:
1. die Position der aktiven Seite aus der DB ermitteln (über page_id)
2. die Links zu den verschiedenen Sprachdateien dann ausgehend von der Position der aktuellen Seite ermitteln
3. das Snippet im Template aufrufen (erzeugt dann Flaggensymbol mit den Link zu den Sprachdateien der gerade angezeigten Seite)

Nur so ne Idee, sollte aber machbar sein. Könnte wohl auch mit ein paar show_menu2 Aufrufen realisiert werden. Mittels show_menu die URL zu allen Menüpunkten einer Containerseite ausgeben (ob_start) und dann in ein Array einlesen. Das ganze auch für die anderen Sprachseiten. Dann schauen, an welcher Arrayposition die aktuelle URL steht.

Gruss Christian
« Last Edit: February 10, 2009, 10:06:07 AM by doc » Logged
chio
WebsiteBaker Org e.V.

Offline Offline

Posts: 2264


« Reply #7 on: February 10, 2009, 11:26:17 AM »

Hallo Doc,
das wird aber ziemlich verzwickt, wenn die Seiten verschachtelt sind. Da muss man schon fast Show_menu nachbauen.

Eine sehr brachiale möglichkeit würde mir noch einfallen:
Über Showmenu2 ALLE Seiten einer Sprache ausgeben lassen, aber nur die page_ids (siehe SM" -> "Stemap")
in der form: 12,19,3,67...... und irgendwo speichern.
Dasselbe in anderen Sprachen

In Arrays verwandeln, Position der jetzigen Seite suchen, in korrellierendem array neue page_id herausholen.
Nur so ein Ansatz
Logged

*weg*
doc
Guest
« Reply #8 on: February 10, 2009, 12:41:41 PM »

Hallo chio,

denke nicht dass das verzwickt ist. Grobes vorgehen wäre:

Voarbeiten:
Zu jeder Containerseite die page_id herausfinden (z.B. /en/, page_id = 12, /de/, page_id = xx etc.). Ist nur einmal notwendig, ändert sich ja nicht mehr.

URLS für alle sichtbaren Seiten der aktuellen Sprache:
1. aus der aktuellen URL den Sprachteil extrahieren (z.B. /en/, /de/, /nl/)
2. Output buffer starten
3. mit show_menu2 die URLs der aktuellen Containerseite ausgeben (z.B. /en/ => page_id = 12)
4. mit show_menu2 nur eine Liste der URLs ohne Formatierung ausgeben lassen
5. String in Array konvertieren (z.B. anhand eines definierten Trennzeichens "#-#")
6. PHP Array Funktion nutzen um die Position der URL der aktuellen Seiten zu finden

URLs für alle sichtbaren Seiten der anderen Sprachen:
Die Punkte 2-5 für die anderen Containerseiten wiederholen (also /de/ => page_id = xx)
Die URLs zu den Sprachdateien der aktuellen Seiten wären dann $url_de[Position], $url_en[Position], $url_nl[Position]

Sollte mit ein paar PHP Zeilen und show_menu2 machbar sein.

Vorteil. Keine Anpassung notwendig, wenn neue Seiten hinzugefügt werden (ausser neue Sprache). Einziges Manko, mann muss die Position der Seiten für alle Sprachen übernehmen (sollte aber bei 98% der Fälle der Fall sein, man will ja nicht für DE eine andere Menüstruktur als für EN etc.).

Gruss Christian
« Last Edit: February 10, 2009, 12:54:00 PM by doc » Logged
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #9 on: May 31, 2009, 09:18:09 PM »

Mag sein, dass die Language Matrix ein kleiner Overkill ist, bildet sie doch eine gute Idee - da man "nur" ins Admin Tool muß, um die Zuordnung voruinehmen.

Die Auswahl (Zuordnung) funktioniert dort nicht so gut, stimmt - ich kam auch nicht dahinter. Aber die Idee ist gut.
Möglicherweise wird jemand auf die Drag&Drop funktionalität von jQ zurückgreifen, wenn es einmal im Core (oder anderweitig, hauptsache fester) innerhalb von WB verankert ist.

Die obige Lösung mag gut sein - doch ich würde es persönlich begrüßen, wenn all die Ideen die in letzter Zeit in dieser Richtung investiert wurden (von all den Codern) in einem netten Admin Tool resultieren würden.

Immerhin ist die Multilanguage Funktion eine wichtige Sache.

Viele Grüße,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #10 on: May 31, 2009, 09:25:53 PM »

Hallo,

jetzt hammer schon den 2. Thread dazu. Wo steckt denn die Funktion switchLanguage drinne?

Gruss
Dietmar

P.S Habe ich zu spät gesehen. Zip gezogen
« Last Edit: May 31, 2009, 09:27:38 PM by Luisehahne » Logged

We are human beings - and nobody is perfect at all.
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #11 on: May 31, 2009, 09:57:38 PM »

Du hast mich erwischt tongue

Aber nicht ganz.

Denn: manchmal hat man in der einen Seite mehr Kinder als in der anderen und so geht die Rechnung nicht wirklich auf.

Beispiel:
EN.php (container für englishsprachigen Seiten)
 - Home
 - Test
   - Sub 1 - My Books
   - Sub 2 - My Music
   - Sub 3 - My Clothes
   - Sub 4 - My Hobbies

DE.php (container für deutschsprachige Seiten)
 - Startseite
 - Guckst Du
   - Sub 1 - Meine Bücher
   - Sub 2 - Meine Hobbys
Leider habe ich hier im deutschen "Nachwuchs" nur zwei Seiten.
Du siehst was passiert.

Und es kommt oft vor, dass man in der einen Sprache mehr Unterseiten hat als in der anderen. (Ist ja nicht überall so ordentlich wie hier in der Doku -[offtopic] hat eben dann Nachteile bei der Aktualisierung derselben; nicht böse gemeint, aber das ist ein Faktor [/offtopic])

Aber ich gebe zu, so wie Du es beschreibst, ist es die (bis dato) einfachste Methode.

Gruß,
Stefek


Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #12 on: May 31, 2009, 10:06:06 PM »

Hallo,

Bezugnehmend auf die wunderbare Idee mit Switchlanguage musste ich meine Gehirnzellen strapazieren. Die Idee ist gut und jetzt kommt wieder der Vorschlag für ein zusätzliches Feld in der Tabelle wb_sections war es glaube ich. Es war doch mal der Vorschlag für ein TagModul. So würden wir doch 2 Fliegen mit einer Klappe schlagen.

Bin sowieso dabei eine Liste zu erstellen was mir so im Test mit der WB 2.8 auffällt. Wenn meine ELogik stimmt (d.h. nicht, dass ich sie nicht wieder ändere) können auch die anderssprachigen mit englischen Begriffen klarkommen.

Zur Zeit bevorzuge ich die Matrix. Ist zwar sehr aufwendig, aber sehr effektiv. Lässt sich bestimmt von der Bedienung her noch vereinfachen. Bin ja schon fleissig dabei, dies Modul anzupassen. Vielleicht greife ich den Gedanken der Tags auf, füge per Installation das Tag Feld in die wb_sections hinzu und setze die Tags über ein Admintool,  bis vielleicht mal die Entschedung gefällt wird die sections.php anzupassen, was die Bearbeitung vereinfacht. Hm mal weiter nachdenken. Ich verfolge jedenfalls sehr aufmerksam diese Diskussionen. Dies gibt mir immer Anregungen. Ich glaube so geht es auf jeden Fall Chrstian auch.

Gruss
Dietmar



Logged

We are human beings - and nobody is perfect at all.
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #13 on: May 31, 2009, 10:07:27 PM »

In Deinem Beispiel macht man einfach die "EN.php" zur Masterseite, dann wird beim Umschalten auf die Deutsche Seite automatisch auf DE.php gesprungen, da es den Index dort nicht gibt. DE.php und EN.php am besten mit Seitentyp Link erstellen.
Mich meinst Du nicht, oder?
Mein obiges Beispiel bezieht sich auf die untersciedliche Position der Kinder My Hobbies/Meine Hobbys.

Gruß,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #14 on: May 31, 2009, 10:11:31 PM »

Hallo Christian,

wenn ic hden switche so richtig verstehe, muss man aber doch das Gegenstüc kder anderen Sprache wissen um umschalten zu können oder?

Gruss
Dietmar
Logged

We are human beings - and nobody is perfect at all.
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #15 on: May 31, 2009, 10:21:44 PM »

Mir kam gerade noch eine Idee. Wenn ich jetzt hingehen und den Seitentiel als Tag nehme und dort 2 Begriffe durch einen Separator getrennt eingebe, kann ich auch verscheidene Begriffe nehmen.

z.B.

Impressum,Imprint für die deutsche Seite
Imprint,Impressum für die englische Seite

Also immer die Sprache als erstes die aktuell ist. Das Ausfiltern des ersten Suchbegriffes ist ja wohl kein Problem für uns. Was meint ihr, wäre das erstmal eine Lösung? Und erfordert kein Admintool und kein Eingriff ins Core. Lässtsich alles über das Modul steuern. Es stimmt dann natürlich der PAGE_TITLE nicht mehr, wenn man diesen benutzt so wie ich.

Gruss
Dietmar
Logged

We are human beings - and nobody is perfect at all.
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #16 on: May 31, 2009, 10:30:44 PM »

Carramba, Doc.
Habs gleich mal live getestet grin
http://www.ebpa-tour-kiel.com/pages/start/de/ebpa-tour-kiel.php

Soweit sogut, aber warum habe ich eine skandi Flagge da, obwohl ich englich eingegeben habe tongue

Gruß,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #17 on: May 31, 2009, 10:32:30 PM »

Hallo Christian,

Es ist eben wege nder Position dei an gleicher Stelle sein muss. So ich mache jetzt z.B. meine WDSNET mehrsprachenfähig, und sehe da grosse Probleme. Aber du hast ja schon gesagt, dann sollte man leiber auf Matrix zurückgreifen.

Ich wollte nur eine Lösung vorschlagen, auf der man nicht auf die Position achten muss. Oder bist du der Meinung, dass könnte so ncht funktionieren. Wir sprechen jetzt nicht über deinen switcher., der kann nciht anders funktionieren.

Was spricht dagegen ei nweiteres Field zu Tabelle hinzuzufügen. Das Core braucht es nicht, aber die Entwicklung eines Tagcloudes könnte damit vorangetrieben werden.

Ich weiss, es fällt mir schwer mich klar auszudrücken.

Gruss
Dietmar
Logged

We are human beings - and nobody is perfect at all.
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #18 on: May 31, 2009, 10:42:56 PM »

Hallo Christian,

Klar wäre das die bessere Lösung dies über die Seitenverwaltung zu händeln. Aber erst sucht man ja nach einer Lösung die nicht das Core verändert. Ich werde mit Matthias darüber sprechen.

Werde dann in den nächsten Tagen sowas über ein Admintool verwirklichen.

Jetzt habe wirklich zuviele Baustellen.

Gruss
Dietmar
Logged

We are human beings - and nobody is perfect at all.
doc
Guest
« Reply #19 on: May 31, 2009, 10:44:32 PM »

Hi,

Quote from: Luisehahne
Werde dann in den nächsten Tagen sowas über ein Admintool verwirklichen.
Bitte nicht noch ein weiteres Admin-Tool, sondern gleich dahin, wohin es gehört, in die Seitenverwaltung  wink

Gruss Christian
Logged
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #20 on: May 31, 2009, 10:47:45 PM »

Hallo Christian,

Du weisst doch wie schwer Matthias manchmal zu überzeugen ist.  evil

Gruss
Dietmar

Logged

We are human beings - and nobody is perfect at all.
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #21 on: May 31, 2009, 10:52:23 PM »

Hallo Christian.

Habe mich mit Deinem Snipelle jetzt angefreundet.
(Siehe obigen Link).

Eine Idee hätte ich noch:
wenn man in dem Aufruf auswählen könnte, dass keine Text, oder keine Bilder ausgegeben werden.
Und dass man den Output zumindest ein wenig nach seiner Laune gestalten kann.

Doch ich bin im Moment soweit zufrieden damit.
Und zugegeben, hie wäre die Matrix ein Overkill.

Gruß,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Ronja

Offline Offline

Posts: 66



« Reply #22 on: June 01, 2009, 09:21:59 AM »

Hi Doc,

das Teil ist klasse und easy zu handeln.
ABER: gleiches Problem wie überall, wenn ich auf der "Suche" bin, kann ich nicht zwischen den Sprachen umschalten.
Ok, es ist kaum zu glauben, dass jemand ausgerechnet bei "Suche" die Sprache wechselt, aber es könnte ja immerhin sein und ist ein Manko!

Liebe Grüße
Ronja
Logged

I love WB!
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #23 on: June 01, 2009, 05:05:46 PM »

Hallo,

wer kann denn jetzt mal mir helfen, komme einfach nicht dahinter. Möchte gerne auf dei schnelle feststellen wieviel Seitensprachen gestezt sind. Hatte dazu folgende query Anweisung

Code:
$query = "select  language, count(*) as tlanguage FROM ".TABLE_PREFIX."pages GROUP BY 'language' ";

Zeigt mir nur einen Datensatz an, obwohl es 2 sein müssten.

Gruss
Dietmar
Logged

We are human beings - and nobody is perfect at all.
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #24 on: June 01, 2009, 05:20:57 PM »

Hallo,

habs gerade selber gefunden, language darf nicht in Anfürhungszeichen stehen

Gruss
Dietmar
Logged

We are human beings - and nobody is perfect at all.
Pages: [1] 2 3   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!