[PHP] Zmiana języka

[PHP] Zmiana języka
Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

Witam,
ponieważ nikt nie chciał dalej odpisać na mój temat, możliwe że to dlatego że widział ilość wypowiedzi, więc jeszcze raz zakładam ten temat ale oczywiście powiem wszystko od nowa wraz ze zmianami.

Oto stary temat:
http://4programmers.net/Forum/viewtopic.php?id=116862

Proszę o zamknięcie starego tematu.


Chodzi mi o to że napisałem skrypt który ma zmieniać język strony, ale podczas zmiany za pierwszym razem wszystkie napisy zamieniają się w dużą literę A, natomiast po 2 odświerzeniu wyświetla odpowiedni język. Nie wiem co narozrabiałem.

Oto główny plik:

Kopiuj
<?
session_start(); 

if(!isset($_SESSION['Lang'])){
   $_SESSION['Lang'] = 'Polski';
}

$langGET = $_GET['lang'];

if($langGET != ""){
   if(is_file("lang/$langGET.php")){
	$_SESSION['Lang'] = $langGET;
   }
}


include("head.php");
require("lang/".$_SESSION['Lang'].".php");


$page = $_GET['page'];

print(iso("
<a href=\"index.php\">".$lang['Logowanie']."</a>"));

if(!isset($_SESSION['$session_all'])){
print(iso("
 || <a href=\"index.php?page=Rejestracja\">".$lang['Register']."</a>"));
}

print(iso("
 || <a href=\"index.php?page=$page&lang=Polski\"><img src=\"images/flagi/pl.png\" border=0></a>
&nbsp<a href=\"index.php?page=$page&lang=English\"><img src=\"images/flagi/en.png\" border=0></a>
<br><br>
<br><br>"));

if($page != ""){
include("include/$page.php");
} else {
include("include/logowanie.php");
}
?>

A to plik head.php:

Kopiuj
<? include("config.php"); ?>
<? include("function.php"); ?>
<? header("Content-Type: text/html; charset=iso-8859-2"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<? include("JavaScript.php"); ?>

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-Style-Type" content="text/css">

<meta name="Reply-to" content="NarutoRealm@NarutRealm.pl">
<meta name="Keywords" content="tibia, ots, otserver, otserwer, server, serwer, wydra">
<meta name="Description" content="Wydra OTServer - dbamy o naszych graczy :)">
<meta name="Author" content="Marcin Wyrodow-Rakowski">
<meta name="Robots" content="ALL">

<link rel=stylesheet href="style.css" type="text/css">
<script language="JavaScript" src="CarTinq.js" type="text/javascript"></script>

</head>

<body leftmargin="10" topmargin="0" rightmargin="10" marginwidth="10" marginheight="0" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">

Natomiast to jest podany szablon jak wygląda plik Polski.php:

Kopiuj
<?
$lang['Napis'] = 'Napis';
?>

Proszę nie przyczepiać się do tego że mam jakieś proste błędy nie związane z tematem, tylko pomóc mi z tym.

Bardzo proszę o pomoc i pozdrawiam, Atverstyt

johny_bravo
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 13 lat
0

Wszystko ok i pieknie, ale gdzie w tym kodzie jest jakas 'zmiana'? Skrypt zmienia domyslny jezyk na jakis inny, zmienia teksty w jezykach czy co? Co znaczy ta 'zmiana'? Podales cos, co mozna uznac za naglowek strony i co oprocz paru poczatkowych linijek w glownym pliku nie ma nic wspolnego z jezykiem. Chyba, ze ja jestem slepy.

//edit
ok, chyba cos czaje z tego. Chodzi Ci, ze jak klikasz we flagi to sie jezyk nie zmienia? Rozumiem, ze wszystkie napisy, ktore maja byc wielojezykowe zamieniaja sie na litere A?


You need to learn how to walk
before you can run
Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

Dokładnie tak. Jak klikam na flagę najpierw sa literki A, za drugim razem(odświeżeniem a nie kliknięciem na flage) zmienia sie na to co mialo byc.

Prosze sprawdzić kod a zauwazysz jak dziala.

Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

hmm... Czy ktoś mi pomoże z tym? A może nie powinno być to w newbie??

johny_bravo
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 13 lat
0

Podaj jeszcze kawalek page.php, zeby bylo wiadomo w jakis sposob wyswietlasz napisy. Jak bede mial chwile to sie przyjrze. Chwilowo brak czasu.


You need to learn how to walk
before you can run
0

skoro chcesz żeby ktoś przed odpowiedzeniem ci to najpierw przetestował (co jest imo szczytem czegoś na b) to daj pełny skrypt (najlepiej link do zipa) który da się uruchomić a poza tym pokaż że próbujesz coś zrobić

jakbyś nauczył się debugować to byś to zrobił już zanim byś napisał pierwszego posta, więc pokaż że próbujesz i pokaż jakieś kluczowe wartości w odpowiednich miejscach przed i po odświeżeniu

Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

masz cały plik index.php i cały head.php

A wyświetlane jest w ten sposób (kawałek kodu):

Kopiuj
<?
print '<form action="'.getenv(REQUEST_URI).'" method=post>
<table border="0" width="120" cellspacing="0" cellpadding="0">
  <tr>
    <td width="120" height="25">'.$lang['Napis'].':</td>
  </tr>
</table>
&nbsp;
</form>';
?>

A w dodatku to nie jest page.php tylko $page.php co jest wielką różnicą.

nav
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
0

Tylko że ten kod działa poprawnie. Błąd musisz mieć chyba w funkcji iso. Jako ze jej nie podałeś, napisałem sobie funkcję
function iso($t){return $t;} i nie zamienia mi nigdzie na żadne A.


utf-8 rlz! ٩(ಥ_ಥ)۶
0

a w ogóle po co ta funkcja ? zamienia napis na iso-8859-2 ? jak tak to czemu nie pisać od razu kodu w tym standardzie ?

Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

Więc tak,
zrobiłem oddzielny katalog w którym umieściłem:

  • head.php:
Kopiuj
<? header("Content-Type: text/html; charset=iso-8859-2"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<body leftmargin="10" topmargin="0" rightmargin="10" marginwidth="10" marginheight="0" link="#000000" vlink="#000000" alink="#000000">
  • index.php (usunąłem funkcje iso)
Kopiuj
<?
session_start();

if(!isset($_SESSION['Lang'])){
   $_SESSION['Lang'] = 'Polski';
}

$langGET = $_GET['lang'];

if($langGET != ""){
   if(is_file("lang/$langGET.php")){
        $_SESSION['Lang'] = $langGET;
   }
}


include("head.php");
require("lang/".$_SESSION['Lang'].".php");


$page = $_GET['page'];

print("
<a href=\"index.php\">".$lang['Logowanie']."</a>");

if(!isset($_SESSION['$session_all'])){
print("
 || <a href=\"index.php?page=Rejestracja\">".$lang['Register']."</a>");
}

print("
 || <a href=\"index.php?page=$page&lang=Polski\"><img src=\"images/flagi/pl.png\" border=0></a>
&nbsp<a href=\"index.php?page=$page&lang=English\"><img src=\"images/flagi/en.png\" border=0></a>
<br><br>
<br><br>");


print '<form action="'.getenv(REQUEST_URI).'" method=post>
<table border="0" width="120" cellspacing="0" cellpadding="0">
  <tr>
    <td width="120" height="25">'.$lang['Napis'].':</td>
  </tr>
</table>
&nbsp;
</form>';

?>
  • zrobiłem katalog lang w którym jest Polski.php i English.php

Odpalam i nadal to samo. Ta literka którą podaje to (jak mamy):

Kopiuj
<?
$lang['Logowanie'] = 'logowanie';
$lang['Register'] = 'rejestracja';
$lang['Napis'] = 'napis';
?>

Jest to pierwsza litera ostatniej zmiennej, czyli "n".

Ostatnia zmienna:

Kopiuj
$lang['Napis'] = 'napis';

Pierwsza litera:
napis


No i nadal nic sie nie dzieje. Myslalem ze moze to przez WebServ (program). Więc wrzucam na ftp'a i nadal dupa...

Prosze o dalszą pomoc, albo rade jak powinno byc to wszystko napisane.

nav
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
0

Ależ to działa zarówno u mnie lokalnie jak i na zdalnym serwerze.
Proof: http://btdev.eu/test/ - dokładnie te pliki które podałeś.

<font size="1">Z malutkimi zmianami, żeby notice'ami nie sypało:</span>

Kopiuj
$page = isset($_GET['page'])?$_GET['page']:'';
//oraz
$langGET = isset($_GET['lang'])?$_GET['lang']:'';
//oraz
getenv('REQUEST_URI')

utf-8 rlz! ٩(ಥ_ಥ)۶
Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

Mam do Ciebie prośbę. Możesz spakować całą zawartość do jakiegoś .rar lub .zip i mi dostarczyć? Choćby na mail:ots@lynxsft.com.pl

U mnie nie działa ani na WebServ, ani na home.pl

Chyba że w kodzie mam mały błąd którego nie widze...

Bardzo prosze o to, wtedy bede mogl porównać moje błędy.

Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

odnawiam temat. Nav prosze spakuj to i wrzuc na serwer a sciagne to.

Widze ze wysylanie nie dziala. Pozdrawiam i czekam

SN
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 16 lat
  • Postów:109
0

Nie mam zbytnio czasu się temu przyglądać, ale jedną rzecz zauważyłem...

Kopiuj
$langGET = $_GET['lang'];

if($langGET != ""){
   if(is_file("lang/$langGET.php")){
        $_SESSION['Lang'] = $langGET;
   }
}

Tu nie ma żadnej kontroli danych, pomyśl sobie co by było gdyby ktoś tam w parametrze lang wartość ../index

I zamiast linijki

Kopiuj
if(is_file("lang/$langGET.php")){

bardziej polecałbym formę:

Kopiuj
if(is_file("lang/" . $langGET . ".php")){

pozdrawiam
Snowak
Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

Nadal nie działa.

Nav widzę że nie możesz wysłać więc prosze napisz tutaj całą zawartość plików. To dla mnie ważne jest gdzie mam błąd.

nav
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
0

./index.php

Kopiuj
<?
session_start();

if(!isset($_SESSION['Lang'])){
   $_SESSION['Lang'] = 'Polski';
}

$langGET = isset($_GET['lang'])?$_GET['lang']:'';

if($langGET != ""){
   if(is_file("lang/$langGET.php")){
        $_SESSION['Lang'] = $langGET;
   }
}


include("head.php");
require("lang/".$_SESSION['Lang'].".php");


$page = isset($_GET['page'])?$_GET['page']:'';

print("
<a href=\"index.php\">".$lang['Logowanie']."</a>");

if(!isset($_SESSION['$session_all'])){
print("
 || <a href=\"index.php?page=Rejestracja\">".$lang['Register']."</a>");
}

print("
 || <a href=\"index.php?page=$page&lang=Polski\"><img src=\"images/flagi/pl.png\" border=0></a>
&nbsp<a href=\"index.php?page=$page&lang=English\"><img src=\"images/flagi/en.png\" border=0></a>
<br><br>
<br><br>");


print '<form action="'.getenv('REQUEST_URI').'" method=post>
<table border="0" width="120" cellspacing="0" cellpadding="0">
  <tr>
    <td width="120" height="25">'.$lang['Napis'].':</td>
  </tr>
</table>
&nbsp;
</form>';

?>

./head.php

Kopiuj
<? header("Content-Type: text/html; charset=iso-8859-2"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<body leftmargin="10" topmargin="0" rightmargin="10" marginwidth="10" marginheight="0" link="#000000" vlink="#000000" alink="#000000">

./lang/Polski.php

Kopiuj
<?
$lang['Logowanie'] = 'logowanie';
$lang['Register'] = 'rejestracja';
$lang['Napis'] = 'napis';
?>

./lang/English.php

Kopiuj
<?
$lang['Logowanie'] = 'login';
$lang['Register'] = 'register';
$lang['Napis'] = 'inscription';
?>

utf-8 rlz! ٩(ಥ_ಥ)۶
Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

nadal nie działa... chyba że jest jeszcze inny powód. Czy macie jakieś php.ini czy coś takiego? Może je mam zdefiniować by dobrze działał?

0

miesiąc i jeden dzień już ciągniesz ten wątek
bez urazy, ale już metodą brute force mogłeś ten problem rozwiązać

proszę, powstawiaj echo lub lepiej var_dump w różne miejsca sprawdzając czy sesja jest aktywna, czy parametr get doszedł i jest poprawny i tego typu rzeczy, wtedy napisz dokładnie (tj. technicznie) co się dzieje lub chociaż napisz jaka jest konfiguracja twojego serwera (zrzut ważniejszych rzeczy z php_info())

Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

wątek tak ale patrz na czas odpowiedzi.

Dobrze posiedze nad tym, ale problem jest taki że ten kod działa nav'owi bez zarzutów a ja mam błędy nadal... Dlatego pytam się o php.ini czycoś w tym stylu

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.