Jump to content
php.lv forumi

valodas switchoshana.


eregi

Recommended Posts

tātad ir valodas skripts.. pašā index faila augšā tiek izsaugta lang($kategorija,$id); pati funkcija -

	function lang($kategorija,$id)
	{
if(isset($kategorija) && $kategorija==lang && isset($id))
switch($id) 
{
	case 'en': $_SESSION['valoda']="en"; break;
	case 'lv': $_SESSION['valoda']="lv"; break;
	default: $_SESSION['valoda']="lv";
	}
elseif(isset($kategorija) && $kategorija==lang && empty($id))
		{
			header('location');
		}
	}

 

lapai izmantoju rewrite funkciju, tātad jautājums tāds, kā es varu panākt, lai nospiežot uz http://lapa/lang/eng tiktu switchota valoda, un useris atmests atpakaļ uz to lapu, kur viņš iepriekš bija, pievienot ?lang&id=eng neder, kā jau rewraitā..

Edited by eregi
Link to comment
Share on other sites

Tātad gabals no index.php - http://paste.php.lv/6474

gabals no pašas funkcijas - http://paste.php.lv/6475

 

tātad vēlreiz jautājums tāds, ja piemēram esmu http://ip/raksts/muca sadaļā, un vēlos nomainīt valodu, kas būtu jādara, lai pēc valodas maiņas mani atmestu atpakaļ uz - http://ip/raksts/muca ?

 

tā ja nebūtu rewraits lietots, tad varētu linkam pievienot ?lang=eng

Link to comment
Share on other sites

es pieņemsim visu laiku izmantoju mainīgo $_GET['lang'] un pēc tā arī sastādu kverijus, inklūdoju failus utt

 

izmantoju mod_rewrite (mainīgais $_GET['lang'] iet kā pirmais - /lv/bla/bla/bla.html )

 

uz valodas maiņas podziņām izsaucu funkciju, priekš tevi bik pielāgošu:

 

function shitchlang($lang,$key=0)
{
 global $_SERVER;
 $newlang=explode("/",$_SERVER['REQUEST_URI']);
 $newlang[$key]=$lang;
 return implode("/",$newlang);
}

Link to comment
Share on other sites

tak paskties pats $lang ir jaunās valodas simbols (en,lv,ru utt kā tu viņus lieto), $key ir mainīgā, kas definē valodu, atrašānās vieta linkā.

http://paste.php.lv/6475 - šo funciju tev nemaz nevajag. manu funkciju liec šajā vietā <a href="<?=switchlang("en");?>">en</a>

 

un attiecīgi taisi kverijus un inklūdo failus ( include("lang_".$_GET['lang'].".php"); utt ) nekādas sesijas nemaz nav vajadzīgas

Link to comment
Share on other sites

man ir uztaisīts rewrite-cond, ka smuki urla sākumā padod valodu.

 

Urls: http://mans_serveris.lv/lv-lv/paths?a=23&b=c

(lv-lv vietā var rakstīts en-us/en-gb/en-ca un t.t. pēc paša izdomas un vajadzības)

 

# Rewrite with LANG-LANG
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]{2}-[a-z]{2})(/)(.*)$ ./core.php?lang=$1&_engine_request_path=$3 [QSA]

# Rewrite with NO-LANG
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ ./core.php?lang=no_lang&_engine_request_path=$1 [QSA]

 

PHP kodā jābūt attiecīgi handlers, kas pārbauda vai ir tāda valoda un t.t...

Edited by Delfins
Link to comment
Share on other sites

Mārci, Tavam variantam nav nevainas, bet tomēr vēlos palikt pie sava sesiju varianta, tādēļ ceru, ka kāds ieteiks veidu, kā pēc tās funkcijas varētu redirektot uz to lapu, no, kuras mainīja valodu.

 

 

aaa, ++ vai ir iespējams iekš http://paste.php.lv/6488 6 & 7 rindas palaist kādu php funkciju?

Edited by eregi
Link to comment
Share on other sites

nesaprotu priekškam tev sesiju, bet nu ja tik ļoti gribi, tad taisi sesiju pašā sākumā no $_GET['lang']

 

<?
 if($_SESSION['valoda']!=$_GET['lang']){ $_SESSION['valoda']=$_GET['lang']; }
?>

 

linkā met manu funkciju un būs tev gan pareizā saite gan sesija

 

Edited: kļūda kodā

Edited by marcis
Link to comment
Share on other sites

×
×
  • Create New...