To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

HTML/PHP/AJAX/JS - PHP i replace dla języków

Radek - 22-04-2008, 12:20

A nie lepiej tego w cookies trzymać? :D
WoGuziczek - 22-04-2008, 13:06

Widmo napisał/a:
WoGuziczek, poniewaz $_SESSION przechowywane jest przez serwer, a wczesniej wyfiltrowaliśmy już zmienne i nie ma mozliwości ataku, możesz zrobić tak:

Kod:
<?php include 'language/lang_' . $_SESSION['lang'] . '.php'; ?>


OK! W takim razie nazwy plików to:
    lang_pl.php
    lang_eng.php
    lang_ger.php


? :)

[ Dodano: 22-04-2008, 14:07 ]
RuseK, a jak to w cookies trzymać?
Skrypt pls ;)

[ Dodano: 22-04-2008, 14:17 ]
Niestety mam błąd...
Tak wygląda mój plik testowy index.php:

Kod:
<?php

// otwieramy sesję
session_start();

// pobieramy ustawienie z GET i zapisujemy w sesji nasz jezyk
if( isset( $_GET['lang'] ) )
{
        switch( $_GET['lang'] )
        {
            case: 'pl'
                $_SESSION['lang'] = 'pl';
            break;
           
            case: 'en'
                $_SESSION['lang'] = 'en';
            break;
           
            case: 'de'
                $_SESSION['lang'] = 'de';
            break;
        }
}

// wybieramy domyślny język
if( $_SESSION['lang'] == '' )
{
    $_SESSION['lang'] = 'pl';
}

// dobieramy odpowiednie pliki ze zmiennymi językowymi
include 'lang/lang_' . $_SESSION['lang'] . '.php';

// wyświetlamy
echo 'Twój jezyk to: <b>' . $_SESSION['lang'] . '</b>;

?>


ERROR:
Kod:
Parse error: syntax error, unexpected ':' in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 11

Radek - 22-04-2008, 13:48

index.php
Kod:
<?php

// otwieramy sesję
session_start();

// pobieramy ustawienie z GET i zapisujemy w sesji nasz jezyk
if( isset( $_GET['lang'] ) )
{
        switch( $_GET['lang'] )
        {
            case 'pl':
                $_SESSION['lang'] = 'pl';
            break;
           
            case 'en':
                $_SESSION['lang'] = 'en';
            break;
           
            case 'de':
                $_SESSION['lang'] = 'de';
            break;
        }
}

// wybieramy domyślny język
if( $_SESSION['lang'] == '' )
{
    $_SESSION['lang'] = 'pl';
}

// dobieramy odpowiednie pliki ze zmiennymi językowymi
include 'lang/lang_' . $_SESSION['lang'] . '.php';

// wyświetlamy
echo 'Twój jezyk to: <b>' . $_SESSION['lang'] . '</b>;

?>

pliki nazywasz
lang_pl.php
lang_en.php
lang_de.php

WoGuziczek - 22-04-2008, 14:12

Kod:
Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 35

Parse error: syntax error, unexpected '<' in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 35


:(

Radek - 22-04-2008, 14:20

Kod:
echo 'Twój jezyk to: <b>' . $_SESSION['lang'] . '</b>;

zamien na:
Kod:
echo 'Twój jezyk to: <b>' . $_SESSION['lang'] . '</b>';

WoGuziczek - 22-04-2008, 14:36

DZIAŁA!

I tak powinno być ;)
Dzisiaj jeszcze będę testował dokładniej, także jak coś - dam znać w temacie.

Widmo - 22-04-2008, 23:04

RuseK napisał/a:
A nie lepiej tego w cookies trzymać? :D


moszna :D

mozna z cookiesa do sesji kopiowac jak jest jak nie to z sesji do cookiesa.

WoGuziczek, zainstaluj sobie pajaczka, bo jak bedziesz mial kolorowanie skladni to szybciej bledy znajdziesz.

Rusek, OK :)

WoGuziczek - 23-04-2008, 15:39

Witam!

Oto mój plik testowy index.php
Kod:
<?php

// otwieramy sesję
session_start();

// pobieramy ustawienie z GET i zapisujemy w sesji nasz jezyk
if( isset( $_GET['lang'] ) )
{
        switch( $_GET['lang'] )
        { 
            case 'en':
                $_SESSION['lang'] = 'en';
            break;
           
            case 'de':
                $_SESSION['lang'] = 'de';
            break;
            case 'pl':
                $_SESSION['lang'] = 'pl';
            break;
        }
}

// wybieramy domyślny język
if( $_SESSION['lang'] == '' )
{
    $_SESSION['lang'] = 'pl';
}

// dobieramy odpowiednie pliki ze zmiennymi językowymi
include 'lang/lang_' . $_SESSION['lang'] . '.php';

// wyświetlamy zmienną językową z sesji
echo 'Twoja zmienna językowa: <b>' . $_SESSION['lang'] . '<br><br></b>';

//poładniamy nazwy języka
echo 'Twój język to: ';
if ( $_SESSION['lang'] == 'en' )
{
    print '<b>English</b>';
}
elseif ( $_SESSION['lang'] == 'de' )
{
    print '<b>Deutsch</b>';
}
else
{
    print '<b>Polski</b>';
}

echo '<br><br>';

//wybieramy język manualnie [skrypt wykonujący]
echo '<script type="text/javascript">
function lang_change(url)
{ location = url; }
</script>';

//wyświetlamy listę języków i wybieramy język manualnie
echo '<select onChange="lang_change(this.value);">';
if ( $_SESSION['lang'] == 'en' )
{
    echo '<option value="?lang=en">English (EN)</option>
          <option value="?lang=de">Deutsch (DE)</option>
          <option value="?lang=pl">Polski (PL)</option></select>';
}
elseif ( $_SESSION['lang'] == 'de' )
{
    echo '<option value="?lang=de">Deutsch (DE)</option>
          <option value="?lang=en">English (EN)</option>
          <option value="?lang=pl">Polski (PL)</option></select>';
}
else
{
    echo '<option value="?lang=pl">Polski (PL)</option>
          <option value="?lang=de">Deutsch (DE)</option>
          <option value="?lang=en">English (EN)</option></select>';
}

echo '<br><br>';
echo '<center><font color="red" size="4">$page_name</font></center>';


Niestety mam taki problem, że skrypt nie wyświetla mi prawidłowo zmiennych.
Wpisując na środku strony $page_name na stronie wyświetla się dokładnie $page_name zamiast tego co mam w zmiennej w pliku:

lang/lang_pl.php

Kod:
<?php

$page_name = 'zobaczIP.info';

?>


O co kaman :?: :)

adam.exe - 23-04-2008, 16:26

Zmień cudzysłów z ' na " tam gdzie masz tę zmienną.

Kod:

$lang =en;
echo'$lang';

wyswietli $lang, ale:
Kod:

$lang =en;
echo"$lang";

wyświetli en

gaku - 23-04-2008, 16:59

Kod:
echo '<center><font color="red" size="4">'.$page_name.'</font></center>';

WoGuziczek - 23-04-2008, 17:13

ani pierwszy, ani drugi sposób nie działa :(

może ktoś skrypcik uruchomi, hm?

gaku - 23-04-2008, 17:32

Kod:
echo "<center><font color=\"red\" size=\"4\">".$page_name."</font></center>";
To już musi działać

WoGuziczek - 23-04-2008, 17:50

Zrobiłem tak:

Kod:
echo "<center><font color='red' size='4'>$page_name</font></center>";


i złapał :P

Widmo - 23-04-2008, 22:16

ale tak jest nie ladnie ;(

Kod:
echo '<center><font color="red" size="4">'. $page_name  . '</font></center>';


tak musi byc i MUSI dzialac.

WoGuziczek - 24-04-2008, 13:54

OK!

A teraz chciałem zapytać jak z kodowaniem zrobić?
W indexie mam:
Kod:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="pl">


w plikach językowych tylko zmienne z wartościami (polskie znaki są)
i na stronie nie wyświetla polskich znaków.

Jak rozwiązać ten problem?

[ Dodano: 24-04-2008, 14:58 ]
Po ustawieniu na stronie kodowania iso8859-2, a w plikach językowych polskie znaki zastąpiłem odpowiednikami np. ą > ± to wtedy już działa. Mimo wszystko chciałbym wiedzieć jak rozwiązać ten problem na unicode utf8.

Mogę jeszcze zrobić tak, że w plikach językowych dać polskie znaki, i dorzucić skrypt zamieniający np.
Kod:

array(
            'ą' => '&#177;', 
            'Ą' => 'ˇ', 
            'ż' => 'ż', 
            'Ż' => 'Ż', 
            'ź' => 'Ľ', 
            'Ź' => '&#172;', 
            'ę' => 'ę', 
            'Ę' => 'Ę', 
            'ć' => 'ć', 
            'Ć' => 'Ć', 
            'ś' => '&#182;', 
            'Ś' => '&#166;', 
            'ł' => 'ł', 
            'Ł' => 'Ł', 
            'ó' => 'ó', 
            'Ó' => 'Ó', 
            'ń' => 'ń', 
            'Ń' => 'Ń' 
            );


I niestety to nie działa, bo teraz zamiast polskich znaków - pojawiają się krzaczkii ;/
Co jest?

w znacznikach code niektóre znaki iso8859-2 straciły wygląd i są oznakowane przez te np. #8518 bla bla :P

[ Dodano: 24-04-2008, 18:49 ]
A i mam jeszcze takie pytanie, bo mam link do zmiany linku
Kod:
<a href="?lang=pl">Zmien na polski</a>


Załóżmy, że mam otwartą stronę index.php?url=podstrona
i jak kliknę zmianę języka to mi wbija samo index.php?lang=pl.

Co mogę zrobić, żeby mi dodawał to do obecnej zawartości get, a nie zastąpywał?



Powered by phpBB modified by Przemo © 2003 phpBB Group