Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Inny sposób niż tablica
Forum PHP.pl > Forum > Przedszkole
thomson89
Witam! 

Jestem nowy na tym forum. Może kilku z was zna mojego kolegę mateusza, też z tego forum. Nie znam zasad "nieregulaminowych", tych co nie są zapisane a panują.
Może do rzeczy. Robię stronę dwu językową. Kiedyś robiłem index.html, strona1.html w katalogu pl lub eng. Teraz z poznaniem php, zrobiłem stronkę tylko w index.php. Przybliżę troszeczkę kodzik strony.
  1. <?php
  2. $title = "tytul";
  3. //jakies inne przetwarzanie danych itp. itd.
  4. //........
  5. ?>
  6. <html>
  7. <head><title><?php echo $title; ?></title>
  8. <body><p>Menu: <a href="index.php?pg=1">Strona 2</a><?php echo $tresc; ?></p></body>
  9. </html>

Chciałbym teraz zrobić, stronę językową. Najpierw wybierasz język i zapisujemy to do cookies. To już zrobiłem. Teraz muszę dostosować stronkę do tego aby dynamicznie się zmieniała według ciasteczka. Sekcję menu zamknę w parserze, jako zmienną. Dodam również tablicę.
  1. <?php
  2. $jezyk[pl][menu] = "Menu";
  3. $jezyk[eng][menu] = "Menu"; //nie ma duzej zmieny, ale to przykład :)
  4. //i wywolujemy
  5. $lang = $_COOKIE['lang'];
  6. $menu = $jezyk[$lang][menu];
  7. //.... dalszy kod php i html
  8. echo $menu;
  9. ?>

Ale z racji rozbudowania php, uważam że jest jakiś inny sposób aby takie coś wykonać. Sposób bez tablicowy.
Proszę o przybliżenie mi tego innego sposobu (jeśli istnieje).

Pozdrawiam.
potreb
Było wiele razy na forum.

http://forum.php.pl/index.php?showtopic=10...php++j%EAzykach

Sposób banalny, dodatkowo opcję wyboru języka powinny być także zapisywane w sesji na początek.
Rafal Filipek
czy nie latwiej byloby ci rozbic tlumaczenie na osobne pliku tzn. pl.php dla polskiego en.php dla angielskiego. dalej w kazdym z plikow miec tablice powiedzmy dla pliku en.php
Kod
$l = array(
    'menu' => 'Menu',
    'tak' => 'yes',
    'nie' => 'no'
);

i na koncu w kodzie wywyolywacj sobie $l['tak']; ?
thomson89
Dziekuję. Widzę że to forum jest bartdzo dobre a ludzie na nim bardzo pomocni. I choć mój problem został rozwiązany, to pociągnę temat dalej - info w 1 poście.
kefirek
Najprościej to tak robisz folder język i w nimi pliki z tekstem przetłumaczonym na poszczególny język np. plik polish.php
O zawartości takiej

  1. <?php
  2. $jezyk['A1'] = "tekst";
  3. $jezyk['A2'] = "jaki tekst";
  4. $jezyk['A3'] = "jeszcze jakis";
  5. ?>


Podobnie z innym językiem robisz english.php o zawartości takiej jak polish.php tylko przetłumaczonej na angielski.

Potem w twoim pliku jak chcesz wyświetlić tekst to robisz to tak
  1. <?php
  2. $jezyk = "polish";
  3.  
  4. if (file_exists("jezyk/".$jezyk.".php")) {
  5. include "jezyk/".$jezyk.".php";
  6. } else {
  7. include "jezyk/polish.php";  
  8. }
  9.  
  10.  
  11. ".$jezyk['A1']."<br>
  12. ".$jezyk['A2']."<br>
  13. ".$jezyk['A3']."";
  14. ?>
1010
Ja takie coś robię że mam folder "jezyki". W nim mam odpowiednie foldery "pl", "en" itd.

W tych folderach mam pliki odpowiedzialne za język (dla każdego działu osobny plik sobie tworze) i wygląda on mniej więcej tak:

  1. <?
  2. $tytul = "tytul po polsku";
  3. $opis = "opis po polsku";
  4. ?>

Plik ten ma swoje odpowiedniki w katalogach, a później na stronie tylko includuje odpowiedni język, np.
  1. <?
  2. include 'jezyki/'.$_COOKIES['jezyk'].'/glowna.php';
  3.  
  4. //tutaj sobie juz dajesz reszte strony z wykorzystaniem zmiennych językowych
  5. ?>


Zaletą tej metody jest prostota tłumaczenia na nowy język. Wystarczy utworzyć nowy folder, przekopiować pliki z innego języka i swobodnie tłumaczyć.

PS.Przedstawiłem Ci koncepcje jak to działa, u mnie jest to bardziej rozbudowane


EDIT: Ehh, kefirek mnie wyprzedził smile.gif Koncepcja ta sama smile.gif
thomson89
Ogólne działanie (po polsku):
- jak istnieje zmienna lang w pasku adresu to zapisz w cioasteczku
- wczytaj ciasteczko ze zmienna lang
- wczytaj odpowiedni plik odpowiadajacy zmiennej lang

Dla pełnej poprawności, należy to napisać w funkcji. I wtedy jak mam np. index.php?id=1, to ikonka z językiem bierze aktualne id, ze stałej bierze swoja wartosc, i do aktualnego linku dodaje id.
  1. <?php
  2. $id = $_GEt['id'];
  3. DEFINE("wartosc", "pl");
  4. echo <a href="index.php?id=".$id."&lang=".wartosc.">POLSKI</a>";
  5. ?>

dobrze rozumuje?
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.