Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> własny system językowy
e4you
post 1.04.2004, 21:43:42
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 10.03.2004
Skąd: K-ce

Ostrzeżenie: (50%)
XXX--


Witam,

Nie lubie prośić o pomoc a zwłaszcza zwązaną z php i MySQL. ale nie wiem jak to rozgryść.

Więc

mam skrypt językowy który zmienia mi zawartośc strony na podstawie parametru lang w adresie

np : ?adres=test&lang=pl

i w/w adresie strona ma być w języku polskim itp...

Wszystko ma być wyciągane z mysql a nie z pliku , z pliku to proste. nie trzeba nic tlumaczyć

moja struktura bazy wyglada tak :

[sql:1:dd1d5d7401]

#
# Table structure for table 'lg'
#

CREATE TABLE lg (
wartosc text NOT NULL,
pl text NOT NULL,
de text NOT NULL
);

#
# Dumping data for table 'lg'
#
INSERT INTO lg VALUES ( '$lang001', 'Ty ', 'Du');
[/sql:1:dd1d5d7401]


Chciał bym zrobić ze skrypt sie nie wykona ale wyswetli w postaci takiej

[php:1:dd1d5d7401]<?php

$lang001 = 'Ty';
lub
$lang001 = 'Du';

?>[/php:1:dd1d5d7401]


w zależności od wersji jezykowej

ja mialem cos takiego :

[php:1:dd1d5d7401]<?php

$db = mysql_connect("localhost", "root", "roqogo+2");
mysql_select_db("lang", $db);
$pol = mysql_query ("SELECT * FROM lg WHERE $lang = '$lang'");
while($w = mysql_fetch_array($pol))
{
$wartosc= $w["wartosc"];
$pl= $w["pl"];
$de= $w["de"];
eval("$wartosc = '$lang';");
}

echo "test jezykowy :<br>";
echo "$lang001";

?>[/php:1:dd1d5d7401]

moze jakie propozycje ?
Go to the top of the page
+Quote Post
maulus
post 1.04.2004, 22:00:59
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 15.12.2003

Ostrzeżenie: (0%)
-----


hm nie łapie o co ci chodzi chcesz wyświetlić konkretną wersję językową strony??


--------------------
gg:5216061
Warsztat: Win XP HE | Apache - 2.0.49 | PHP - 5 RC | MySQL - 4.0.18 | Narzędzia: WinSyntax
Artykyłu v0.2beta[b]lllllllllllllllllllllllll 100%
Go to the top of the page
+Quote Post
e4you
post 1.04.2004, 22:09:30
Post #3





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 10.03.2004
Skąd: K-ce

Ostrzeżenie: (50%)
XXX--


tak,,

ale dzięki juz zrobilem


[php:1:c4890b157b]

<?
$db = mysql_connect("localhost", "root", "roqogo+2");
mysql_select_db("lang", $db);
$pol = mysql_query ("SELECT * FROM lg");
while($w = mysql_fetch_array($pol))
{
$wartosc= $w["wartosc"];
$j= $w["$lang"];

$c = "$wartosc = '$j';";
eval($c);
}
echo "slowo tlumaczone: $lang002";

?>[/php:1:c4890b157b]
Go to the top of the page
+Quote Post
DeyV
post 1.04.2004, 22:20:08
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




zamiast [php:1:f1d4601489]<?php
$wartosc= $w["wartosc"];
$j= $w["$lang"];

$c = "$wartosc = '$j';";
eval($c);?>[/php:1:f1d4601489]znacznie wygodniej i szybciej jest skorzystać z
[php:1:f1d4601489]<?php
${$w["wartosc"]} = $w["$lang"];

?>[/php:1:f1d4601489]
lub, chyba jeszcze lepiej, korzstać z funckji która będzie wyciągać określone dane z jakiejś globalnej tabeli. Dzięki temu nie musisz przejmować się formą przechowywania tych danych (z czasem możesz chcieć ją zmienić...), a w kodzie podajesz np.
[php:1:f1d4601489]<?php
function _t( $strNazwa)
{
return $GLOBALS[ 'naszaTabela' ][ $strNazwa ];
}
echo _t('text do przetmaczenia');
?>[/php:1:f1d4601489]


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
id4
post 1.04.2004, 23:06:55
Post #5





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Witam

Możesz też użyć do tego sesji:
[php:1:1fc2e7ae75]<?php
if($_GET[lang]){
$_lang=$_GET[lang];
session_register("_lang");
}
?>[/php:1:1fc2e7ae75]

Przy takim zapisie w sesji $_SESSION[_lang] masz zapisaną aktualną wersję językową - w Twoim przypadku pl - potrząc na podany przykład.

P.S. Zapis sesji jest troszkę stary, ale taki na szybko znalazłem w moich dokach :wink:
Go to the top of the page
+Quote Post
e4you
post 2.04.2004, 19:16:37
Post #6





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 10.03.2004
Skąd: K-ce

Ostrzeżenie: (50%)
XXX--


coś nie tak mam taki kod:

[php:1:b78c317a33]

<?
$db = mysql_connect("jacbod.han-solo.net", "root", "roqogo+2");
mysql_select_db("aukcja", $db);
$pol = mysql_query ("SELECT * FROM lg");
while($w = mysql_fetch_array($pol))
{
$wartosc= $w["wartosc"];
$j= $w["$lang"];

$c = '$wartosc = "$j";';
eval($c);
}

?>[/php:1:b78c317a33]

i cos nie działa

a chce zeby skrypt wegenerowal na podstawie z bazy cos takiego co ma się wykonac

$lang001 = "bla bla bla";
$lang002 = "bla bla bla2";

oczywiscie bla bla bla będzie sie zmienialo w zalerzności od wersji językowej

[php:1:b78c317a33]<?php
$j= $w["$lang"];
?>[/php:1:b78c317a33]

gdzie robie blad ?

ja mam taki komunikat
Kod
Parse error: parse error in /home/httpd/docs/nkcom/xxx.php(10) : eval()'d code on line 1
Go to the top of the page
+Quote Post
Wankster
post 2.04.2004, 21:16:42
Post #7





Grupa: Zarejestrowani
Postów: 208
Pomógł: 0
Dołączył: 19.04.2003

Ostrzeżenie: (0%)
-----


Zauważyłeś, że podałeś dane do bazy?
---
A nie lepiej tak:[php:1:320b7a8c8b]<?php

mysql_connect();
mysql_select_db( 'aukcja' );

$result = mysql_query( 'SELECT wartosc, ' . $lang . ' FROM lg' );

while ( list( $variable, $value ) = mysql_fetch_row( $result ) )
{
$variable = subStr( $variable, 0, 1 ) == '$' ? subStr( $variable, 1, strLen( $variable ) ) : $variable;

${$variable} = $value;
}

?>[/php:1:320b7a8c8b]---
IMO to jest bezsensowny pomysł winksmiley.jpg
---
Najlepiej zrobić jedną tabelę 'languages' z polami lang_id (automatycznie generowany ID), lang_name_english (np. Polish), lang_name_local (np. Polski), lang_charset (np. ISO-8859-2), lang_code (2-3 literowy kod kraju, np. PL). Później drugą tabelę 'languages_values' z polami value_id, lang_id (relacja do poprzedniej tabeli), value_name (unikalna nazwa identyfikująca wartość, np. example, add, delete), value_text (wartość, np. (kolejno): przykład, dodaj, usuń).
Później w zależności jaki kto ma język wybierasz sobie zapytaniem[sql:1:320b7a8c8b]SELECT v.value_name, v.value_text FROM languages l, languages_values v WHERE l.lang_code = $lang ORDER BY v.value_name ASC[/sql:1:320b7a8c8b]
W skrypcie wykonujesz zapytanko i tworzysz tablicę:[php:1:320b7a8c8b]<?php

// zapytanko...
$result = ...;

$LANG = array();

while ( $row = mysql_fetch_row( $result ) )
{
$LANG[ $row[0] ] = $row[1];
}

// odwolanie do zmiennej
// wynik: przykład
print $LANG['example'];

?>[/php:1:320b7a8c8b]
Go to the top of the page
+Quote Post
e4you
post 2.04.2004, 21:37:36
Post #8





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 10.03.2004
Skąd: K-ce

Ostrzeżenie: (50%)
XXX--


chce poprawic swoj kod a nie zminiac cos co juz zrobiłem ..


chodzi o to ze w jednym polu mam np " $lang1" a w drugim " de " i ja chce zeby skrypt wygenerowal mi cos takiego

$lang = "de"; a nie jakies inne rzeczy
Go to the top of the page
+Quote Post
Wankster
post 2.04.2004, 22:10:10
Post #9





Grupa: Zarejestrowani
Postów: 208
Pomógł: 0
Dołączył: 19.04.2003

Ostrzeżenie: (0%)
-----


No to zobacz mój pierwszy kod winksmiley.jpg
Go to the top of the page
+Quote Post
quetra
post 5.04.2004, 18:53:07
Post #10





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 19.02.2004
Skąd: zalibórz

Ostrzeżenie: (0%)
-----


Ja mam tabelke Lang z polami
ID PL EN ( inne jesli potrzebne)

w niej sa po kolei wszystkie texty na stronie

potem na samym poczatku mam funkjce:

[php:1:7c0790af10]<?php
$langs = mysql_query("SELECT * FROM lang");
while ($lls = mysql_fetch_array($langs))
{
$lang[$lls[id]] = $lls[$_SESSION['LANG']];
};

?>[/php:1:7c0790af10]

w sesji musisz ustawic sobie zmienna $_SESSION['LANG'] np 'pl';

i tak dalej

u mnie dziala bezproblemowo

pozrawiam


--------------------
Niektórych rzeczy nie można ująć w inny sposób jak tak, czy inaczej....
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:53