Jump to content
GIGN Forum

Php Website Language


RaaapuLis
 Share

Recommended Posts

kr4 iisuamaa pastaastiishu...

vajadziigs ljoti vienkaarsh php skripts, kurš majas lapai ljauj izveleties valodas. Vajadziigaas valodas: eng, lv.

Esmu meginajis daudzus veidus bet nekadigi nevaru salikt skriptu taa lai kopaa tas viss straadaa.

Vajadziigs pats skripts.

tad talak webaa buus jaapadood kkas tads ?lang=eng vai ?lang=lv. Tik daudz vismaz zinu XD

ja nau gruuti buutu labi ja paskaidrotu ko kas dara. :)

Tie kas neko nezin, bet tikai maak dirst rakstiit aizliegts

Edited by RaaapuLis
Link to comment
Share on other sites

Forši, rakstīju garo replay un nospiedu tab un backspace. Nav gluži editplus, kur var šitā rīkoties.

Ir miljons veidu, kā realizēt multilanguage supportu.

Labi, īsumā :

1) vari taisīt manu variantu, kur html templeitos teksti aizstāti ar nemainīgām vērtībām (manā gadījumā <lang m_search> vai tml.). funkcija ņem šo sagatavi un atmiņā apstrādā, ieliekot mana <lang ..> vietā tekstu un iemet attiecīgajā direktorijā (manā gadījumā lang/LV lang/ENG). šis variants atstāj nemainīgu ielādes ātrumu, jo teksti jau ir vietā un sistēmai vairs nekas nav jāgremo.

2) vari ieviest divus failus lang_lv.php lang_en.php, kur katrā no tiem definēt nemainīgos tekstus :

define("LANG_SEARCH", "Meklēt");

utt. iekš lang_en.php, protams anglisko variantu ar to pašu define("LANG_SEARCH", "Search");

un tad pēc usera izvēlētās valodas require`ot vajadzīgo failu.

šie ir tikai divi no variantiem. programmēšana tak ir iespēja izplesties. var izdomāt vēl visu ko.

Link to comment
Share on other sites

Ar define() man nepatīk tas, ka ja mainīgais netiek definēts, tad ...

Pats dodu priekšroku valodas masīvam, taču neizsaucu pašu mainīgo, bet funkciju, krč vieglāk būs saprast:

function lxvar($key){
  global $lxv;
  return (array_key_exists($key,$lxv) && !empty($lxv[$key]))?$lxv[$key]:'LX{'.$key.'}';
}

Tb ar domu, ka arī ja mainīgais masīvā netiks nodefinēts, funkcija atmetīs atpakaļ atslēgu, nevis tukšumu vai warningu. Pēctam vieglāk pašam strādāt.

Link to comment
Share on other sites

Tev te vnk skripts nelīdzēs. Ir tāda lieta kā freimworks. Ņemot vērā to, ka valodas maiņa ir globāla, tad arī šī valodas maiņa ir jāiestrādā sistēmā. Nevar tā vienkārši uzrakstīt skriptu, iemest kaut kādā direktorijā un cerēt, ka viņš Tev mainīs valodas. Tā tas nenotiek.

Link to comment
Share on other sites

xDxDxD nee nu n0r3k vismaz tik daudz jau es saprotu. Neesmu galiigs idinjsh bet nu es saku ka nevajag tur visu skriptu visu rakstiit, domaat pasham vnk ja kaads zin kaut vai kur kaads tuts kas kaut vai mazlietinj paliidzees tad luduzu pasakiet un viss :)

Link to comment
Share on other sites

Redz, kur Tev būs pavisam vienkāršs skriptiņš.

$sLang = $_SESSION["lang"] = empty($_REQUEST["lang"])?"lv":$_REQUEST["lang"];


switch($sLang)
{
    default : $sLang = "lv";
    case "lv":
        define("LANG_LANGUAGE", "latviešu");
        define("LANG_SHIT", "sūds");
        break; 
    case "en":
        define("LANG_LANGUAGE", "english");
        define("LANG_SHIT", "shit");
        break;
}

echo LANG_LANGUAGE." ".LANG_SHIT;

Link to comment
Share on other sites

Precīzi.

Īsumā : lang glabājās sessijā, tapēc pirms tam uzstādam session_start();

ja sessijas lang mainīgais ir tukšs, tb nav uzstādīta valoda, tad defaultā ir lv.

tos defainus vari mest failos lang_lv.php lang_en.php (kā jau minēju iepriekš) un ielādēt ar require(); vai tml.

ja neizmanto templeitus (vlib, smarty, citus) un visu raksti *.php failos un inklūdo tos iekš index php, tad tev tikai tekstu vietā atliek mest definētās vērtības, kā minēts skripta beigās. nevajadzētu rasties problēmām.

Link to comment
Share on other sites

nu taa kopumaa 90% sapratu, bet nu tagad radaas probleemas liekot visu kopaa.

root mape:

index.php

Lang(MAPE)

lv.php

en.php

nu itkaa taa vajadzeetu visam buut, ja?

index.php:

<?
session_start();

$sLang = $_SESSION["lang"] = empty($_REQUEST["lang"])?"lv":$_REQUEST["lang"];


switch($sLang)
{
    default : $sLang = "lv";
    case "lv":
       require('lang/lv.php');
        break; 
    case "en":
        require('lang/en.php');
        break;
}


?>

taalaak webaa padodu:

<a href="?lang=en"><img src="/bildes/eng.gif" border=0></a>
<a href="?lang=lv"><img src="/bildes/lv.gif" border=0></a>

lv.php saturs:

<?php

define("TITLE", "Pārmēmele");

define("NAVsak", "Sākums");
define("NAVfor", "Forums");
define("NAVzie", "Ziedot");


?>

vai kaut kas tur ir pareizs?

---------------------------------------------

liekot to session_start(); rodas uzreis errors

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\index.php:1) in C:\AppServ\www\index.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\index.php:1) in C:\AppServ\www\index.php on line 2

Edited by RaaapuLis
Link to comment
Share on other sites

Tev pirms session_start(); notiek kautkādu datu izvade.

Šis session_start(); jāliek pirms vispār kautkas tiek izvadīts.

Iekš switch() "default" vispār vari vākt ārā.

---

Nedaudz par sevis lietoto metodi:

Strādāju ar mod_rewite un viss tiek padots cau url saiti, bez sesijām vai citām figņām.

/lv/news - jaunumi latviski

/en/news - jaunumi angliski

Rewrite tiek liekts uz attiecīgo failu lv.php, kurā tiek norādīts valodas indeks (priekš datubāzes selektiem), inklūdots valodas fails un inklūdoti arī pārējie sistēmas faili, tur pat arī html templeits ar valodas mainīgajiem.

Link to comment
Share on other sites

mans index.php lai jusm vieglak:

<?

$sLang = $_SESSION["lang"] = empty($_REQUEST["lang"])?"lv":$_REQUEST["lang"];


switch($sLang)
{
    default : $sLang = "lv";
    case "lv":
       require('lang/lv.php');
        break; 
    case "en":
        require('lang/en.php');
        break;
}


?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?=TITLE?></title>
<link rel="stylesheet" type="text/css" href="stili//style.css">
<link rel="bookmark icon" href="/bildes/favicon.png">
<link rel="shortcut icon" href="/bildes/favicon.png">
</head>
<body background="/bildes/bg.jpg" background-repeat="repeat-x">    
    
<table align="center" valign="top" width="890">

<tr><td height="100%" valign="top">
<table style="border-style: solid; border-width:5px; border-color: #996666;" align="center" bgcolor="#b7adad" width="100%">
<tr><td style="border-bottom-style: solid; border-bottom-width:1px; border-bottom-color: #505e57;" colspan="3" align="center" valign="middle">
<table width="100%">

<tr>
<td width="35" align="center" style="border-right-style: solid; border-right-width: 1px; border-right-color: #505e57">
<a href="?lang=en"><img src="/bildes/eng.gif" border=0></a></td>
<td width="35" align="center" style="border-right-style: solid; border-right-width: 1px; border-right-color: #505e57">
<a href="?lang=lv"><img src="/bildes/lv.gif" border=0></a></td>
<td class="error" align="center"><b>   </b></td>
<td align="right">
<table align="right"><tr>
<div id="info">
<b>Laiks:</b> <? print date("H:i:s")?> | 
<b>Datums:  </b><? print date("d.m.Y")?> | 
<?php 
$ip = getenv("REMOTE_ADDR"); 
Echo "<b>IP:</b> " . $ip; 
?> | 
<b>Vārdadienas: </b> 

<? include("inc/include_vardadienas.php");?>
</div>
</tr>
</table>
<td></tr>
</table>
</td></tr>
<tr><td width="150" align="center" valign="top">


<table align="center" height="100%" width="120">
<tr><td height="20" colspan="2" align="center" class="subtitle">Navigācija</td></tr>
<tr><td align="center"><b>?</b></td>
<td align="left"><a href="/"><?=NAVsak?></a></td></tr>
<tr><td align="center"><b>?</b></td>
<td align="left"><a href="/"><?=NAVfor?></a></td></tr>
<tr><td align="center"><b>?</b></td>
<td align="left"><a href="/">1</a></td></tr>
<tr><td align="center"><b>?</b></td>
<td align="left"><a href="/">1</a></td></tr>
<tr><td align="center"><b>?</b></td>
<td align="left"><a href="/">1</a></td></tr>
<tr><td align="center"><b>?</b></td>
<td align="left"><a href="/"><?=NAVzie?></a></td></tr>
</table><br><br>

<table align="center" height="100%" width="120">
<tr><td height="20" colspan="2" align="center" class="subtitle">Draugi</td></tr>
<tr>
<td><div align="center">
<marquee onmouseover="this.setAttribute('scrollamount', 0, 0);" onmouseout="this.setAttribute('scrollamount', 1, 0);" direction=up scrollamount="1" scrolldelay="40">
            <a href="" target="_blank">
            <img src="" alt="" title="[-sB-] ' Klana WEB Lapa" border="0" /></a><br />
            <img height="3" width="81" /><br />
            <a href="" target="_blank">
            <img src="" alt="" title="wreck" border="0" /></a><br />
            <img height="3" width="81" /><br />
            <a href="" target="_blank">
            <img src="" alt="" title="" border="0" /></a><br />
            <img height="3" width="81" /><br />
</marquee></div></td>
</tr>
</table><br><br>

</td>
<td class="news" align="center" valign="top">
<div align="justify"><center><h3>Jaunumi<h3></center>
<table width="100%">
<tr><td align="left"><b>NOSAUKUMS</b> </b></td><td align="right">DATUMS LAIKS</td></tr>
<tr><td colspan="2"><hr><div align="justify">
TEKSTS
<br />
</div></td></tr>
</table><br><br><br></div></td><td width="150" align="center" valign="top">
<table align="center" height="100%">
<tr><td height="20" colspan="2" align="center" class="subtitle">Statistika</td></tr>
<tr><td align="center"><? include("inc/info.php");?></td></tr>
</table>
</td>
</tr>
</table>
</td></tr>
<tr><td height="20" align="center" valign="middle">
<center><font color="white"><b>© - 2008</b></font></center>
</td></tr><tr><td height="20" align="center" valign="middle">
<center><font color="white"><b>Lapu veidoja -- </b></font></center></td></tr>

</table>
</body>
</html>

Link to comment
Share on other sites

Vieglāk būs tā:

session_start();
$languages=array("lv","en");
if(empty($_SESSION['lang']) || !empty($_GET['lang'])){
  if(!empty($_GET['lang']) && in_array($_GET['lang'],$languages)){
    $_SESSION['lang']=$_GET['lang'];
  }elseif(empty($_SESSION['lang'])){
    $_SESSION['lang']="lv";
  }
}
include("lang/".$_SESSION['lang'].".php");

EDIT: Nu nestāsti gan, ka tu pats to visu rakstiji...

Edited by X ID
Link to comment
Share on other sites

session_start();
$languages=array("lv","en");
if(empty($_SESSION['lang']) || !empty($_GET['lang'])){
  if(!empty($_GET['lang']) && in_array($_GET['lang'],$languages)){
    $_SESSION['lang']=$_GET['lang'];
  }elseif(empty($_SESSION['lang'])){
    $_SESSION['lang']="lv";
  }
}
include("lang/".$_SESSION['lang'].".php");

EDIT: Nu nestāsti gan, ka tu pats to visu rakstiji...

šis variants saaka straadaat nezkapeec bet tikuntaa errors ir palicis :/

un kad piem es nomainu valodu viss itkaa nomainaas kam vajag mainiitiem bet kaa kko nospiezhu viss paarveershas atapakalj latviski

Edited by RaaapuLis
Link to comment
Share on other sites

Tapēc, ka tev nesaglabā sesijas mainīgos, bet gan kā parastus mainīgos.

Varbūt lieto cupumus labāk? Tad tas iskatīsies kkā tā:

$languages=array("lv","en");
if(empty($_COOKIE['lang']) || !empty($_GET['lang'])){
  if(!empty($_GET['lang']) && in_array($_GET['lang'],$languages)){
    $_COOKIE['lang']=$_GET['lang'];
  }elseif(empty($_COOKIE['lang'])){
    $_COOKIE['lang']="lv";
  }
  $exp=time()+60*60*24*7*4*12*666; // uzliksim cepumu uz piemēram 666 gadiem
  setcookie("lang",$_COOKIE['lang'],$exp,"/");
}
// vēlreiz pārbaudam vai tiek pieprasīta eksistējoša valoda, jo kā zināms, cepumus var sarakstīt katrs pats
if(!in_array($_COOKIE['lang'],$languages)){
  $_COOKIE['lang']="lv";
}
include("lang/".$_COOKIE['lang'].".php");

Link to comment
Share on other sites

Varbūt lieto cupumus labāk? Tad tas iskatīsies kkā tā:

$languages=array("lv","en");
if(empty($_COOKIE['lang']) || !empty($_GET['lang'])){
  if(!empty($_GET['lang']) && in_array($_GET['lang'],$languages)){
    $_COOKIE['lang']=$_GET['lang'];
  }elseif(empty($_COOKIE['lang'])){
    $_COOKIE['lang']="lv";
  }
  $exp=time()+60*60*24*7*4*12*666; // uzliksim cepumu uz piemēram 666 gadiem
  setcookie("lang",$_COOKIE['lang'],$exp,"/");
}
// vēlreiz pārbaudam vai tiek pieprasīta eksistējoša valoda, jo kā zināms, cepumus var sarakstīt katrs pats
if(!in_array($_COOKIE['lang'],$languages)){
  $_COOKIE['lang']="lv";
}
include("lang/".$_COOKIE['lang'].".php");

nop, arii tas pats errors un nesaglabaajas valoda.

Link to comment
Share on other sites

Šajā gadījumā tev session_start() vajadzēja novākt.

Labāk iekopē to erroru pa jaunu. Un ja arī šis variants nestrādā tad tev kkas ne tā ar servera konfigurācija vai arī tevs brouzeris netur cepumus.

Link to comment
Share on other sites

Tb ar domu, ka arī ja mainīgais masīvā netiks nodefinēts, funkcija atmetīs atpakaļ atslēgu, nevis tukšumu vai warningu. Pēctam vieglāk pašam strādāt.

Ja normāli visu darba procesu organizē, tad nekam nav jāpaliek nedefinētam un lieki nenorij resursus ar nevajadzīgām pārbaudēm.

Link to comment
Share on other sites

Tu man gribi teikt, ka programmējot mājaslapu tu uzreiz katru mainīgo savai valodai nodefinē? Vēl ar define() ir tāda figņa, piemērs:

$lxv=array("level_1"=>"Kruts","level_2"=>"Nekruts");
while(...){
  echo $row->nick.'<br />'.$lxv["level_".$row->level].'<br /><br />';
}

Ar masīvu nav problēmu...

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...