Jump to content
php.lv forumi

Php+mysql Un Vairaakas Valodas (lv, Eng, Ru)


AndrisXXX

Recommended Posts

Dazhi iesaaceeja jautaajumi:

 

Vai vienaa MySQL datubaazee var normaali glabaat tabulas, kuras ir

dazhaadaas valodaas (lv, eng, ru)?

Kas tam ir nepiecieshams?

Vai vienaa tabulaa var buut, piemeeram: 'lauks1' - latviski, 'lauks2' -

krieviski, 'lauks3' - angliski?

 

Kaada ir labaakie veidi, kaa nodroshinaat PHP+MySQL saita daudzvalodiibu

(lv, eng, ru)?

 

Piemeeram, ir saits, kas paardod paartikas produktus. Katram produktam ir

jaabuut:

1) apraksts lv, eng un ru valodaas.

2) piegaadaataaja nosaukums

3) produkta nummurs

 

Vai shaadaa gadiijumaa ir jaaveido 3 tabulas: pirmajaa dati, kas ir

neatkariigi no valodas izveeles (piegaadaataaja nosaukums, produkta numurs,

produkta apraksts defaultajaa valodaa - lv) kaa arii noraades uz produkta

aprakstu eng un produkta aprakstu ru valodaas. Otrajaa tabulaa glabaatos

produkta apraksts angliski un treshajaa - krieviski.

 

Jebshu labaak visu glabaat vienaa tabulaa?

 

 

Veel viens jautaajums: kas buutu jaaieveero, no kaa buutu jaauzmanaas un kaa

eertaak uztaisiit web interfeisa vairaaku valodu iespeeju?

 

 

Plds un luugums nenjemt ljaunaa, ja jautaajumi izklausaas vienkaarshi :)

-Andris

Link to comment
Share on other sites

Vai vienaa MySQL datubaazee var normaali glabaat tabulas, kuras ir

dazhaadaas valodaas (lv, eng, ru)?

Jā, var, tam ir domāts UTF-8

http://darkstar.ist.utl.pt/mysql/doc/en/Ch...et-Unicode.html

 

Kas tam ir nepiecieshams?

laikam jau tikai mazliet pagooglēt un sameklēt realizācijas iespējas.

 

 

Vai vienaa tabulaa var buut, piemeeram: 'lauks1' - latviski, 'lauks2' -

krieviski, 'lauks3' - angliski?

var

 

Kaada ir labaakie veidi, kaa nodroshinaat PHP+MySQL saita daudzvalodiibu

(lv, eng, ru)?

nelaba aizdoma, ka tas ir gaumes jautājums

 

Piemeeram, ir saits, kas paardod paartikas produktus. Katram produktam ir

jaabuut:

1) apraksts lv, eng un ru valodaas.

2) piegaadaataaja nosaukums

3) produkta nummurs

 

Vai shaadaa gadiijumaa ir jaaveido 3 tabulas: pirmajaa dati, kas ir

neatkariigi no valodas izveeles (piegaadaataaja nosaukums, produkta numurs,

produkta apraksts defaultajaa valodaa - lv) kaa arii noraades uz produkta

aprakstu eng un produkta aprakstu ru valodaas. Otrajaa tabulaa glabaatos

produkta apraksts angliski un treshajaa - krieviski.

 

Jebshu labaak visu glabaat vienaa tabulaa?

Kā jau teicu iepriekš, iespējams, ka tas ir gaumes jautājums. Savukārt zem gaumes vajadzētu mācēt paslēpt arī nelielu analīzi, cik daudz tev ir to produktu, cik liels apmeklētāju skaits būs lapai un katrai tās valodai. Ja runa ir par pāris simtiem apmeklētāju dienā, tad var bāzt visu vienā tabulā. Savukārt, ja lapai ir domāts diezgan liels apmeklētāju skaits, tad ir vērts padomāt par optimālākiem risinājumiem.

 

Veel viens jautaajums: kas buutu jaaieveero, no kaa buutu jaauzmanaas un kaa

eertaak uztaisiit web interfeisa vairaaku valodu iespeeju?

 

Tas atkal ir atkarīgs no tā, cik daudz produktu ir jāievada. Ja tie ir 10 produkti, tad vari taisīt, kā vien vēlies. Ja runa iet par samērā palielu produktu katalogu, tad ir arī jāpadomā teiksim par tādu lietu kā datu importēšana. Patiesībā šis jautājums ir tieši atkarīgs no datubāzes struktūras, kādu tu izveido. Ja izveidosi datubāzes struktūru ar 3 tabulām, tad šaubos vai tu taisīsi aprakstu labošanu visām valodām vienā lapā.

 

(esmu tikai strādājis ar daudzvalodu mājas lapu, pats taisījis neesmu, līdz ar to ieteikumi varētu būt ne pārāk precīzi)

Link to comment
Share on other sites

  • 1 month later...

Nu laikam es nemaaku tikalaa visu to mekleet!

 

Alus kaste tam kas uzrakstiis piemeeru !!!

 

MySql -> 1 tabula 3 kolonas, lai butu (eng, lat, russ)

 

php -> rada HXTML kur tas viss nāk ārā.

+3 laucini kuros var pievienot infu DB attiecīgajās kolonās.

Analīzi nevajag, vajag stradajosu risinajumu.

 

Par alu nebija joks!

Link to comment
Share on other sites

mazliet nesapratu par to "php -> rada HXTML kur tas viss nāk ārā.", bet:

lapas <head> daļā liekam

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

tad ir forma, ar piem. <input name="in_eng" /> utt

 

pēc tās iepostēšanas

 

mysql-query("INSERT INTO koptabula SET `in_eng`=' ".isset($_POST['in_eng']?mysql_escape_string(stripslahes($_POST)):'')."',

... ");

 

Un fiss. MySQLā iekšā būs nevis en,ru,lv, bet attiecīgi ķēburi, jo visam jau jābūt iekš UTF-8.

 

Līdzīgā veidā visu izpūšam laukā.

 

Vienīgi, ja gribēsi taisīt meklēšanu, tad vajg MySQL>=4.1.alpha, un man tik un tā neatškir latviešu valodā mazus/lielus burtus.

 

Mans nodoms būtu taisīt atsevišķu tabulu [tulkojumi], ķipa:

PK|raxta/preces id|valodas id|tulkojums

 

Tad kādai precei taisam

"(SELECT * FROM tulkojumi WHERE `preces_id`='123' AND `valodas-id`='ru')

UNION

(SELECT * FROM tulkojumi WHERE `preces_id`='123' AND `valodas-id`='en')"

 

(uzskatīsim, ka pēc defaulta tef visur savadīts en) šādi pēc fetcha tu dabon vai nu vajadzīgu valodu, vai anglisko tulkojumu.

 

Par to saskarnes (pašas lapas tulkojumu). Man variants:

$trans=array(

'Welcome to'=>'Sveicināti',

'shop'=>'veikalā'

...

);

 

foreach($trans as $key->$translation)

{

$trans[$key]=iconv('windows-1257','UTF-8',$translation);

}

 

katrai valodai, izņemot anglisko šādu te ^ failiņu. jābūt pieinstalētam iconv extensionam, lai varētu konvertēt kodējumus.

 

tad ir funkcija:

function tr($index)

{

global $trans;//tekošās valodas tulkojumi

if (!isset($trans[$index])) return $index;

return $trans[$index];

}

 

Jebšu atkal, vai nu izdod tulkojumu, jeb atgriež anglsiko indeksu.

Tad tu echo tr('Welcome to').' '.$siteName.' '.tr('shop');

 

P.S. es alu nedzeru.

Link to comment
Share on other sites

(neliela piebilde, tipo paredzu ka gan jau kaadam noderees )

 

J> uzdevums... ir valodu podzinjas... nu tur LV, RU, EN... un gribeetos lai

J> taas var nospiest jebkuraa weba briidii un

J> navigaacija saglabaajas! tobish lai it kaa serveris sajem valodu, bet lai

J> peec tam aiznavigee turpat kur atradaas pirms tam!

 

A:

 

<code><font color="#000000">

$langs = array( 'lv', 'en', 'ru' );
if ( !empty($_GET['set_lang']) ) {
  $lang = trim( $_GET['set_lang'] );
  if ( in_array( $lang, $langs ) ) {
  setcookie( 'lang', $lang, time()+365*24*3600 );
  $url = 'http://'.$HTTP_HOST.preg_replace('/set_lang=([d]+)/','',$REQUEST_URI);
  Header( 'Location: '.$url );
  }
} 
</font>
</code>

Link to comment
Share on other sites

2 jannis: headeris var nomest $_POST variābļus, ne visiem iet kūkijas. Es taisu tā:

 

function obl($skip='')

{

$sensitive=array('a','b','c','d');//variābļi, kurus pēc iespējas jāsaglabā; valoda vienmēr iet līdzi

if ($skip)

{

$arr=array();

$arr=explode(',',$skip);

$sensitive=array_diff($sensitive,$arr);

}

$skip=$_SERVER['PHP_SELF'].'?valoda='.$_GET['valoda'];

foreach($sensitive as $ind)

{

if (isset($_GET[$ind]))

{

if (g($ind)) $skip.='&'.$ind.'='.g($ind);

}

}

return addslashes($skip);

}

 

tad pēc tam echo '<form method="post" action="'.obl().'">';

vai '<form method="get" action="'.obl('a,b').'">';, ja formā tiks uzlikti virsū jaunie "a" un "b"

Link to comment
Share on other sites

  • 4 months later...

iekš mysql.com ir pateikts še, lūk, ka tur aprakstītās fīčas darbojas tikai no versijas 4.1.1. Ja pareizi saprotu, tad tabulai CHARACTER SET utf8 versijā 4.0.13 nevar uzlikt, ja?

 

bet vai to pašu efektu var panākt, nomainot visu mysql configu uz utf8? vai labāk nečakarēties un likt virsū jaunāku mysql versiju?

Link to comment
Share on other sites

×
×
  • Create New...