Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: własny system językowy
Forum PHP.pl > Forum > PHP
e4you
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 ?
maulus
hm nie łapie o co ci chodzi chcesz wyświetlić konkretną wersję językową strony??
e4you
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]
DeyV
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]
id4
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:
e4you
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
Wankster
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]
e4you
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
Wankster
No to zobacz mój pierwszy kod winksmiley.jpg
quetra
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.