Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Inny sposób niż tablica
thomson89
post 7.01.2009, 17:42:52
Post #1





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


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.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
potreb
post 7.01.2009, 18:31:50
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


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.


--------------------

Go to the top of the page
+Quote Post
Rafal Filipek
post 7.01.2009, 18:33:42
Post #3





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

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


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']; ?
Go to the top of the page
+Quote Post
thomson89
post 7.01.2009, 18:42:46
Post #4





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


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.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
kefirek
post 7.01.2009, 18:54:36
Post #5





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


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


Ten post edytował kefirek 7.01.2009, 18:55:32
Go to the top of the page
+Quote Post
1010
post 7.01.2009, 18:54:41
Post #6





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


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

Ten post edytował 1010 7.01.2009, 18:55:17


--------------------
Go to the top of the page
+Quote Post
thomson89
post 8.01.2009, 11:12:52
Post #7





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


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?


--------------------
Sklep 70%
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: 5.07.2025 - 22:19