Jump to content
php.lv forumi

Languages


Trakais-Nex

Recommended Posts

Sveiki !

 

Ir neliela problēma konkrētāk sakot nesaprašana esmu iegājis strupceļā :(

Esmu uztaisijis mājas lapu uz php bāzes ,vis jau būtu forši bet ir viena aizķeršanās ar valodas maiņu.

Mans webs ir sasists pa blokiem ( menu, izskats,un raksti )

Būtu ļoti pateicīgs ja kurš varētu palīdzēt ! Ar kādām funkcijām izsauc doto darbību lai uzspiežot uz valodas maiņas karodziņa piemēram (RU) viss menū un visi raksti no latviešu valodas tiktu aizvietoti ar krievu valodas menu , raksti no foldera languages/ru un protams atpakāļ,nospiežot uz karodziņa LV vīs pārtop latviski !

 

Ceru ka sapratāt ko es gribu :)

Jau iepriekš paldies !

Edited by Trakais-Nex
Link to comment
Share on other sites

Seit teu busss

 

$languages = array('en' => 'English',
			   'lv' => 'Latvian',
			   'ru' => 'Russian');

 if (isset($_GET['lang'])) {

 $lang = $_GET['lang'];

 setcookie('lang', $lang, time()+(3600*24*365));

 header("Location: index.php");

}else if (isset($_COOKIE['lang'])) {
 $lang = $_COOKIE['lang'];
} else {
 $lang = 'en';
}

if (!(in_array($lang, array_keys($languages)))) {
 die("ERROR: Bad Language String Provided!");
}

include "language/{$lang}.php";

 

language folderi teu ira jabut 3 failiem lv.php, ru.php un en.php.

Edited by Darkangel
Link to comment
Share on other sites

Nu man jau gan šķiet, ka nevis jādod kods, bet jāuzzin šobrīdējā tehnika un jāatrod labākais risinājums, turklāt tā, lai arī pats veidotājs saprastu.

 

Nu tad mans jautājums -> tu tos tekstus, menu un visu pārējo, kas tev tur ir, no kurienes velc ārā? Datubāze, faili?

 

Piem es daru apm tā - ar rewrite visi mani linki ir šādi "/lv/..." ( pirmā lieta linkā norāda valodu ). Ar rewrite padodu attiecīgu linku uz attiecīgu failu ( RewriteRule ^/lv/(.*) /lv.php/$1 ). Valodas failā ( piem "lv.php" ) norādu valodas indeksu ( $l=1; ). Datubāzē ir tabula, kur glabājas lietas, kas visās valodās ir vienādas, un otra tabula, kura tiek piesaistīta pirmajai tabulai un valodai ( t2.tid=t1.id AND t2.lang_id='$l' ). Tādejādi nav vajadzīgi nekādi cepumi, sesijas vai vēl hz kas.

Link to comment
Share on other sites

Nu tad mans jautājums -> tu tos tekstus, menu un visu pārējo, kas tev tur ir, no kurienes velc ārā? Datubāze, faili?

 

Pagaidām man viss ir daudz vienkāršām. Jo savu vebu es taisu no 0 nevis gatavs šablons

Uz doto momentu es velku visu ārā no block foldera .

 

Tas izskatās šādi : piemēram:

par mani : my.php

<tr>
<!--Apraksta vieta-->
<? include("block/lv/my_lat.php"); ?>
 </tr>

 

Un šitas ir pats apraksts kas atrodas block folderī

 

my_lat.php

<!--Pats Apraksts-->
<td> Apraksts un trali vali :) </td>

 

Man uz weba nav registracija ,vēl līdz db nēsmu ticis bet nu visus rakstu domāju likt uz db lai rakstus varētu pārvaldīt no weba

 

Un protams pašlaik meklēju vieglākos variantus jo nekāds asais nēsmu,un gribās kautko pašam uztaisīt no 0 nevis ņemt tos pusfabrikātus.

 

Paldies :Darkangel un marcis par atsauksmi mēģināšu uzčinīt un redzēs kas sanāks ! Velreiz paldies :)

Edited by Trakais-Nex
Link to comment
Share on other sites

otra tabula, kura tiek piesaistīta pirmajai tabulai un valodai ( t2.tid=t1.id AND t2.lang_id='$l' ). Tādejādi nav vajadzīgi nekādi cepumi, sesijas vai vēl hz kas.

 

ļoti neoptimāls risinājums, manuprāt. Un tu online to selektē?

 

Man ir gatavs risinājums, ar tabulām+sessijām+failiem. Tabula ir tikai datu glabāšanai, faili tiek ģenerēti no tabulām. Nekādu online selektu, pilnīga automatizācija. Adminā tulkotājs kur vienkārši ieraksta tulkojumu. Šeit nepeistošu, ja detalizēti, daudz jāskaidro :)

Link to comment
Share on other sites

Nē, nu, protams, pamatvārdi, ja tā var teikt, glabājas valodu failos, kurus caur administrāciju var tulkot/mainīt.

Taču, pieņemsim cilvēks izveido jaunu sadaļu, tā tiek saglabāta datubāzē ( tiek iedots id, url utt ), no otras tabulas tiek izvilkts sadaļas nosaukums, attiecīgajai valodai.

 

Kāds tad ir tavs variants? Izveidojot jaunu sadaļu, to pieglabāt failā?

Man šķiet stulbi, pareizi saliekot indeksus, nebremzēs un arī pēc tam novērst kļūdas ir daudz vieglāk, ja lietotājam pieejamo inforāciju ( informāciju, kuru var labot, dzēst utt ) glabā datubāzē.

Un sesijas multivalodu www sistēmās 90% gadījumos man šķiet pilnīgi liekas.

 

Vai varbūt tu nesaprati mani un es tevi?

Link to comment
Share on other sites

ā, nu ja runa iet par sadaļu nosaukumiem un lietām, kuras juzeris jebkurā brīdī var pamainīt, tad jā, šis ir labs risinājums. Es piemēram taisu tajā pašā title_lv, title_ru, bet nu tas kā kuram ērtak.

Edited by NiTrino
Link to comment
Share on other sites

Nu man ērtāk šķiet mans variants, protams, domājot par nākotni.

Jo manā variantā, tabulā, kur tiek glabāts nosaukums multivalodām, valodu skaits var būt neierobežots.

 

 

Seit teu busss

 

$languages = array('en' => 'English',
			   'lv' => 'Latvian',
			   'ru' => 'Russian');

 if (isset($_GET['lang'])) {

 $lang = $_GET['lang'];

 setcookie('lang', $lang, time()+(3600*24*365));

 header("Location: index.php");

}else if (isset($_COOKIE['lang'])) {
 $lang = $_COOKIE['lang'];
} else {
 $lang = 'en';
}

if (!(in_array($lang, array_keys($languages)))) {
 die("ERROR: Bad Language String Provided!");
}

include "language/{$lang}.php";

 

language folderi teu ira jabut 3 failiem lv.php, ru.php un en.php.

 

 

Jā vakar no abiem variantiem smeistaroju un viss oki strādā ! Paldies .

Paldies visiem par atsauksmi ! :)

Edited by Trakais-Nex
Link to comment
Share on other sites

  • 4 months later...

Man arī ir līdzīga problēma.. tikai.. ne viss, šķiet, ir tik vienkārši..

Biju naivi iedomājies, ka izveidojot mājas lapas struktūru latviešu valodā (izvēlnei izmantoju include get.php), valodu izvēli varēs realizēt vienkārši pārtulkojot failus, pārsaucos index_ru.php, foto_ru.php utt... (tas pats ar get_ru.php), BET.... Nekas neštimmē!

Atveru index_ru.php, bet, nospiežot, uz jebkura linka, man ielādējas latviešu valodas saturs....

 

Kas notiek? Kāds zina ieteikt?

Link to comment
Share on other sites

Nu protams, ka viņš ielādēs tā, tev pie visiem linkiem vajag norādīt kko šādu:

echo '<a href="index_'.$cepums_vai_sesija.'.php">test</a>';

Kur zem mainīgā $cepums_vai_sesija, tev ir padots, piemēram cepums ar nosaukumu lv...

Link to comment
Share on other sites

Kkvai paņem šo te, ko tev te augstāk dēva:

  if (isset($_GET['lang'])) {

 $lang = $_GET['lang'];

 setcookie('lang', $lang, time()+(3600*24*365));

 header("Location: index.php");

}else if (isset($_COOKIE['lang'])) {
 $lang = $_COOKIE['lang'];
} else {
 $lang = 'en';
}

Tālāk kkur padod savā lapā

<a href="?lang=lv">Latviešu valoda</a>

<a href="?lang=en">Angļu valoda</a>

Link to comment
Share on other sites

×
×
  • Create New...