Zweisprachigkeit

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
Micel
Posts: 17
Joined: Tue 19. Jun 2007, 13:27

Zweisprachigkeit

Post by Micel »

Hallo,
kann mir jemand schreiben wie der Webmaster die Webpräsenz

http://mohr.styleventure.de/

bezüglich der Zweisprachigkeit gelöst hat.

Es scheinen zwei Home Kategorien vorzuliegen de_home und en_home

Wie kriegt man das hin?

Vielen Dank
Pappnase

Post by Pappnase »

hallo

so wie es aussieht hat er die variante hier verwendet.

http://www.phpwcms.de/forum/viewtopic.php?t=3278
Micel
Posts: 17
Joined: Tue 19. Jun 2007, 13:27

Post by Micel »

Hallo Pappnase
vielen Dank
Nur wo finden ich die Datei " default template"

Vielen Dank
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop »

Mhhh, wie kommst du darauf, dass dieses Script verwendet wurde?

Für diese einfache Umschaltung braucht es kein externes Script.

Code: Select all

root          (root)
+ de_home     (Home)    (ID=1)
++ de_erste   (Erste)
++ de_zweite  (Zweite)
++ de_dritte  (Dritte))
++ ........
+ en_home     (Home)    (ID=2)
++ en_first   (First)
++ en_second  (Second)
++ en_third   (Third)
++ ........
In home (hier root) einen Artikel anlegen und weiterleiten nach index.php?de_home

Der Rest wird durch die direkte Umschaltung gemacht, du arbeitest logischerweise mit zwei Vorlagen.

DE:
-----------------
{NAV_LIST_UL:FP,1,,act_path,active}

EN:
-----------------
{NAV_LIST_UL:FP,2,,act_path,active}

Gruß Knut
Last edited by flip-flop on Fri 13. Jul 2007, 19:12, edited 2 times in total.
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Micel
Posts: 17
Joined: Tue 19. Jun 2007, 13:27

Danke Flip Flop ...

Post by Micel »

... aber wie bekomme ich es hin, dass en und de auf dem gleichen Level wie Root ist

Danke
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Post by update »

"... sprach: es gibt kein anderes root neben mir..."
Odr :?:

EDIT

"... sprach: es gibt keine andere Rute neben mir..."
Oder :?:

:oops:
Last edited by update on Fri 13. Jul 2007, 20:02, edited 1 time in total.
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop »

O ha, verschrieben, ist an der Korrektur vorbeigelaufen. :oops: :oops:

Nun schau noch einmal hin.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

hallo,

falls es jemanden interessiert, ich hab hier ein kleines skript (was bestimmt sehr suboptimal ist, aber funktioniert!).

Ausgangssituation war, jemand englischsprachiges kommt über die suchmaschine auf die seite und wenn er auf englisch schalten will, dann landet er auf der startseite und muss erst wieder zum artikel finden. also habe ich für die wichtigen oberkategorien verknüpfungen erstellt.

teste es hier: http:__www.powertechnik.com/aid=3.phtml (auf englisch schalten)

bewerkstelligt habe ich es so:

datei frontend_init/language_switch.php

Code: Select all

<?php
$lang[0]['lang']  = "de";
$lang[0]['id']    = "1";
$lang[0]['alias'] = "powertechnik"; //startseite deutsch
$lang[1]['lang']  = "en";
$lang[1]['id']    = "29";
$lang[1]['alias'] = "powertechnik_en"; //startseite englisch

// verknüpfung der IDS der korrospondierenden Strukturebenen
// um den language switch zu erleichtern
$lang[0]['link'] = array(
								 	 			 "1", //startseite
												 "4", //produkte
												 "13", //lautsprechersysteme
												  "15", //PA
													"16", //EM
													"18", //WF
													"19", //G
													"20", //spezial
											 "12" // Kontakt
												);
												
$lang[1]['link'] = array(
								 	 			 "29", //startseite
								 	 			 "31", //produkte
												 "32",  // lautsprechersysteme
												  "33", //PA
													"34", //EM
													"35", //WF
													"36", //G
													"37", //spezial
												 "53" // Kontakt
												);

if(isset($LEVEL_ID[1]) && $LEVEL_ID[1] == $lang[1]['id']){
setcookie("setlang",$lang[1]['lang'],0,"/");
}else{
 setcookie("setlang",$lang[0]['lang'],0,"/");
}

?>
datei frontend_render/language_switch.php

Code: Select all

<?php

//print_r($LEVEL_ID[1]);

//print_r($GLOBALS);

if( ! (strpos($content["all"],'{LANG_SWITCH}')===false)) { 

//in frontend_init werden die sprachen und dieverse übersetzungen definiert!


 /*// -----------------------------------------------------------------------------
// suche die korrospondierende ID für die entsprechenden cat ID
	  # prüfen welche sprache / struktebene aktuell ist
		1# die aktuelle cat_id im aktuellen lang array suchen und den key merken
		2# wird kein definierter key gefunden, wird geprüft ob im LEVEL_ID ein Key forhanden ist, der definiert wurde,
		  also eine ebene höher gehen, dafür ist die funktion array_vergleich da.
			
		3# sollte überhauptnix greifen, dann ebene 0 = startseite
*/

	$link_arr_key = 0;
	//echo $content["cat_id"];
	function array_vergleich($a,$b) {
		 $keys = array_intersect($a,$b);
		 $key = array_search(end($keys),$b);
		 return $key;
		
		}


	 foreach($lang as $key => $value){
	  //print_r(array_vergleich($LEVEL_ID,$value['link']));
	 	$link_id = $content["cat_id"];
		//echo $key."->";
		#1
		if (!array_search($link_id,$value['link'])=== false){
		 $link_arr_key = array_search($link_id,$value['link']);
		 //echo "definiert!";
     break;
		#2
		}elseif(array_vergleich($LEVEL_ID,$value['link'])){
		 //$link_arr_key = (array_search(end($LEVEL_ID),$value['link']));
		 $link_arr_key = array_vergleich($LEVEL_ID,$value['link']);
		 break;
		 //echo "ebene hoch definiert!";
		#3
		}else{
		//echo "nix - default";
		 $link_arr_key = 0;

		} 
		 

   }
 // -----------------------------------------------------------------------------		
   $lang_switch  = "";
	 foreach($lang as $key => $value){
	 
	  if(isset($LEVEL_ID[1]) && $LEVEL_ID[1] == $value['id']){
				
		 $lang_switch .= '<img src="img/famfamfam/flag_icons/png/'.$value['lang'].'.png" alt="'.$value['lang'].'" class="active_lang" />';
		
		}else{

		
	  $lang_switch .= '<a href="index.php?id='.$value['link'][$link_arr_key].',0,0,1,0,0">';
		$lang_switch .= '<img src="img/famfamfam/flag_icons/png/'.$value['lang'].'.png" alt="'.$value['lang'].'" class="inactive_lang" />';
		$lang_switch .= '</a>';
   }
	 
	 
  }
   $lang_switch = '<div class="lang_switch">'.$lang_switch.'</div>';
   $content["all"] = str_replace('{LANG_SWITCH}', $lang_switch, $content["all"]); 
}

?>
{LANG_SWITCH} ins template schreiben, um die flaggen darzustellen (kann sein, das du die englandflagge der famfamfam icons in en.png umbennen musst, weil die mit gb.png ausgezeichnet ist)

hier noch das css für die flaggen:

Code: Select all

	
	.lang_switch img {
	 border:0 none transparent;
	 /* border:1px solid red; */
	 margin-left:5px;
	 width:16px;
	 height:11px;
	}
.lang_switch img.active_lang {
	 filter:alpha(opacity=50);
   -moz-opacity:0.5;
   opacity: 0.5; 
	}
	.lang_switch {
	 text-align:right;
	}

Noch kurz, In der 1. Datei werden die Referenzen zu den Seiten festgelegt und das Cookie der aktuellen sprache gesetzt.
Hier müssen die ganzen Array Variablen angepasst werden!
In der 2. Datei wird das Replacementtag ersetzt und mit dem Link zur anderssprachigen korrospondierenden Strukturebene versehen.

Ich hoffe das ist nachvollziehbar und funktioniert im besten falle gleich ;-)
Vielleicht hab ich auch was vergessen - bin grad in eile :oops:

grüße
marcus
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Post by Jensensen »

wenn marcus nich mal wieder mitm php knüller reingegrätscht hätte, würd ich getz erst ma qoten:
claus wrote:"... sprach: es gibt kein anderes root neben mir..."
Odr :?:
respekt, klasse, sofort merken.... :wink:

greetz

PS: und getz muss ich erst ma checken, ob ich marcus' post raffe... :?:
wie kommt man nur auf sone ideen bzw. kriegt dat dann auch noch hin in php :?: :shock:

PS#2: endlich sommer (wird muckelig warm inne bude) --> schönes WE an ALLEEEEEEE!
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

you make me a little bit erröten :oops:
ich improvisiere php "nur" hehe

grüße
marcus
Micel
Posts: 17
Joined: Tue 19. Jun 2007, 13:27

Post by Micel »

Hallo und DANKE an alle.
Habe mit dem Skript von Oliver

Code: Select all

[PHP] 
if(!$GLOBALS['aktion'][0]) { 

   switch( strtolower( substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 ) ) ) { 
      case 'de':   header('Location: '.$GLOBALS['phpwcms']['site'].$GLOBALS['phpwcms']['root'].'index.php?de'); 
               exit(); 
               break; 
      default:   header('Location: '.$GLOBALS['phpwcms']['site'].$GLOBALS['phpwcms']['root'].'index.php?en'); 
               exit();       
   } 

} 
[/PHP] 
probiert die zweisprachigkeit hinzubekommen - scheint zu funktionieren aber:
Wie schaffe ich es, dass nur die Navigatiion der jeweiligen Sprache sichtbar ist???

DANKE
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop »

Wie was Zweisprachigkeit hinbekommen?
Du brauchst kein Skript dazu. So etwas kommt u.U. später wenn spezielle Anforderungen erfüllt werden sollen.

Fange doch erst einmal einfach an, hier die Lösung auf dem Silbertablett: http://www.phpwcms.de/forum/viewtopic.php?p=89231#89231
Wie schaffe ich es, dass nur die Navigatiion der jeweiligen Sprache sichtbar ist???
Die Antwort steht im obigen post.
Du brauchst logischerweise für jede Sprache eine eigene Vorlage die dann an die entsprechende Kategorie gebunden wird.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Post Reply