Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jaka metoda dla wielu języków ?
jerrys
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.02.2004

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


Witam
Mam pytanie jakiej metody urzyć na stronie w celu umożliwienia przeglądania jej w wielu językach i która metoda jest najlepsza.
Znam takie metody:
1: napisy przechowywane są w tablicy
2: napisy przechowywane są w bazie

Może znacie jescze inne??
Która metoda jest najlepsza??
Dzieki za każdą pomoc - to ma być duży serwis :roll2: .
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




OPT ma moduly wspomagajace pisanie stron wielojezycznych ( OPT - system szablonow) a reszta to juz tylko odpowiednia tabelka w bazie danych (jak masz okreslona liczbe jezykow to duzo ulatiwa).

Pisze arta i ma 3 textarea (etc) i w nim podaje w 3 jezykach to jest zapisane do bazy i juz :-)
Go to the top of the page
+Quote Post
jerrys
post
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.02.2004

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


Jestem początkujący i nie wiem co to jest OPT - czy mógłbyś podpowiedzieć, ewentualnie skąd to ściągnąć.
Dzięki winksmiley.jpg
Go to the top of the page
+Quote Post
kubatron
post
Post #4





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


http://www.opb.ibplanet.pl/


--------------------
„Człowiek jest wielki nie przez to, co posiada, lecz przez to, kim jest;
nie przez to, co ma, lecz przez to, czym dzieli się z innymi.”
Jan Paweł II
Go to the top of the page
+Quote Post
bela
post
Post #5


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


www.opbp.info/wiki


--------------------
Go to the top of the page
+Quote Post
jerrys
post
Post #6





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.02.2004

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


A co jeżeli chciałbym skorzystać z bazy danych lub tabeli - co jest lepsze ?
Które z tych rozwiązań lepiej zastosować ? sadsmiley02.gif
Bo nie chce korzystać z OPT nie za bardzo to jeszcze kumam smile.gif

Pomóżcie
Go to the top of the page
+Quote Post
tiraeth
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


---------STRUKTURA BAZY---------
  1. CREATE TABLE languages (
  2. word CHAR(100),
  3. default_name CHAR(100),
  4. LANGUAGE CHAR(100)
  5. );


language - język (np. pol, eng, ger, rus, cze, slo)
word - słowo w danym języku
default_name - słowo w głównym języku - będzie sprawdzane przy pobieraniu

I sobie robisz np. tak:
  1. <?php
  2. $language = 'ang';
  3. $query = &#092;"SELECT * FROM languages WHERE language='\".$language.\"'\";
  4. $result = mysql_query($conn, $query);
  5. while($row = mysql_fetch_assoc($result));
  6. {
  7.  $def = $row['default_word'];
  8.  $lang[$def] = $row['word'];
  9. }
  10.  
  11. // Powiedzmy, ze juz jest w bazie Dodaj po angielsku czyli Add
  12. echo 'Tutaj mamy przyklad zmiany:';
  13. echo '<br />';
  14. echo '<b>Dodaj - '.$lang['Dodaj'].'</b>';
  15. // Wyswietli:
  16. // Dodaj - Add
  17. ?>


Ten post edytował Tiraeth 18.01.2005, 19:59:00
Go to the top of the page
+Quote Post
jerrys
post
Post #8





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.02.2004

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


Dzięki wszystkim za pomoc biggrin.gif
Z tego co napisales Tiraeth rozumiem ze preferujesz mysql-a biggrin.gif i ja tak chyba zrobie biggrin.gif
Go to the top of the page
+Quote Post
faster
post
Post #9





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 9.09.2002
Skąd: Pszczyna

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


Ja korzystam z tablicy. Dokładniej to mam pliczek w którym wpisuję sobie wszystkie komunikaty (tak je nazywam) wyświetlane na stronie. Pliczek ten ma postać

[pl]
PUSTE = "Pole nie może być puste"
ERROR_NAZWA = "Błędna nazwa"
ERROR_LICZBA = "Błędna liczba"

[eng]
PUSTE = "Empty fields not allowed"
ERROR_NAZWA = "Invalid name"
ERROR_LICZBA = "Invalid number"

[de]
PUSTE = "..."
ERROR_NAZWA = ".."
ERROR_LICZBA = "....."

odczytuję to za pomocą funkcji

$komunikaty = parse_ini_file("komunikaty.dat",true);
$komunikaty = $komunikaty["pl"]; <- to wybieram automatycznie of kors

i potem w kodzie odwołuję się tak:
print( $komunikaty["PUSTE"] );

... i hula

Taki plik jest łatwiejszy w edycji niż tablica w bazie danych - wiem z własnego doświadczenia.

pozdrawiam
Go to the top of the page
+Quote Post
docent
post
Post #10





Grupa: Zarejestrowani
Postów: 34
Pomógł: 2
Dołączył: 21.11.2003
Skąd: Kraków

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


true - sprawy jezykowe na plikach sa sprawa bardzo wygodna. szczegolnie, gdy system jest dosc rozbudowany - wtedy dobrze podzielic jeden jezyk na kilka(nascie) plikow jezykowych - odpowiednia struktura katalogow zalatwia sprawe porzadku. reczna edycja w bazie to masochizm - przeciez 5 tabel dla 5 jezykow zakladac nikt nie bedzie tongue.gif

co do jezykow. oczywiscie mily dodatek:

Kod
if(eregi("\.pl$", gethostbyaddr($_SERVER['REMOTE_ADDR'])))
     {
     $jezyk = '_pl';
     setcookie ('pod_jezyk', "_pl", time()+96422400);
     }
  else
     {
     $jezyk = '_en';
     setcookie ('pod_jezyk', "_en", time()+96422400);
     }


(u mnie akuratnie info o jezykach trzymalem w ciastkach jak widzisz)

a potem juz gdzies w skrypcie tylko zaladowac sobie odpowiedni plik:

Kod
require_once("naglowek$jezyk.php");


powyzej jakis przyklad dla zczytania pliku naglowek_pl.php

a na koniec sam plik naglowek_pl.php:

Kod
<?php
// w tym miejscu znajduja sie polskie teksty do naglowka portalu (naglowek.php)
define("ZALOGOWANY_JAKO", "Jeste zalogowany jako:");
define("WYLOGUJ", "Wyloguj:");
define("PODAJ_LOGIN", "Podaj Login (Nick):");
define("PODAJ_HASLO", "Podaj Has│o:");
define("NIEPOPRAWNY_LOGIN", "Podano niepoprawny login lub has│o!");
define("ZALOGUJ", "Zaloguj siŕ!");
define("WYBIERZ_JEZYK", "Wybierz jŕzyk:");
define("WYBIERZ", "wybierz");
define("POLSKI", "polski");
define("ANGIELSKI", "angielski");
?>


i oppowiednio naglowek_en.php:

(op chwili namyslu stwierdzilem, ze nikomu sie jeszcze nie chcialo tego tlumaczyc tongue.gif)

ale generalnie idee rozumiesz. w samym pliku innego jezyka masz dokladnie to samo, czyli np:

define("WYLOGUJ", "Logout:");
define("PODAJ_LOGIN", "Enter ur login:");

itd... a w samym kodzie zamiast pisac wrzucasz twe stale. zakladam, ze siedzisz na jakichs templatach, czyli klasyk gadzet:

Kod
$jezyk = array(
        'AUTORYZACJA_KONTA_TYTUL' => AUTORYZACJA_KONTA_TYTUL,
        'AUTORYZACJA_KONTA_TRESC' => AUTORYZACJA_KONTA_TRESC,
        'PODAJ_LOGIN' => PODAJ_LOGIN,
        'PODAJ_HASLO' => PODAJ_HASLO,
        'ZALOGUJ' => ZALOGUJ
      );
     $smarty->assign ("jezyk", $jezyk);


i z glowy tongue.gif


--------------------
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."

(Przydatne zapytania MySQL)
Go to the top of the page
+Quote Post
tiraeth
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


System wielojęzykowy moim zdaniem powinien opierać się na parse_ini_file" title="Zobacz w manualu PHP" target="_manual..... smile.gif np.

languages/lang_polish.txt
Kod
; Language File
; *************
; lang_polish

[lang_main]
; Language strings for main site
WELCOME = Witamy
YOUR_PERMS = Twoja ranga to

[lang_errors]
; Language strings for errors
ERROR404 = Error 404: Brak strony
ERROR501 = Error 501: Kolejny błąd


functions/functions.php
  1. <?php
  2. function parse_Lang($language, $section)
  3. {
  4.  $path = 'languages/lang_';
  5.  $ini = parse_ini_file($path.$language.'.txt', true); // Drugi parametr wczytuje sekcje
  6.  foreach($ini[$section] as $key => $value)
  7.  {
  8. $lang[$key] = $value;
  9.  }
  10.  return $lang;
  11. }
  12. ?>


I nareszcie przykład:
demo.php
  1. <?php
  2. include('functions/functions.php');
  3.  
  4. // Zwróci tablicę z pliku lang_polish gdzie sekcja była lang_main
  5. $lang = parse_Lang('polish', 'lang_main');
  6.  
  7. print_r($lang);
  8. ?>


Oczywiście wynik takiego działania:
Cytat(demo.php)
Array
(
    [ERROR404] => Error 404: Brak strony
    [ERROR501] => Error 501: Kolejny błąd
)


smile.gif
Go to the top of the page
+Quote Post
kubatron
post
Post #12





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


Zainteresował mnie twój przykłąd z obsługą langów, ponieważ teraz się zastanawiam bo tablice jak wiadomo są szybkie smile.gif A twój przykład jest bardzo fajny, czy jest także szybki jak tablice??

Ten post edytował kubatron 23.01.2005, 12:52:07


--------------------
„Człowiek jest wielki nie przez to, co posiada, lecz przez to, kim jest;
nie przez to, co ma, lecz przez to, czym dzieli się z innymi.”
Jan Paweł II
Go to the top of the page
+Quote Post
shima
post
Post #13





Grupa: Zarejestrowani
Postów: 245
Pomógł: 0
Dołączył: 9.09.2002

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


Cytat(jerrys @ 2005-01-18 10:19:41)
Witam
Mam pytanie jakiej metody urzyć na stronie w celu umożliwienia przeglądania jej w wielu językach i która metoda jest najlepsza.
Znam takie metody:
1: napisy przechowywane są w tablicy
2: napisy przechowywane są w bazie

Może znacie jescze inne??
Która metoda jest najlepsza??
Dzieki za każdą pomoc - to ma być duży serwis :roll2: .

Przez tablicę rozumiesz plik?

Jeżeli masz elementy stałe (menu, stopka, opisy), to w pliku, jeżeli newsy, artykuły etc to już zależy od ilości, wymaganej elastyczności, szybkości etc. Wszelkie rady typu "lepiej w bazie", "tylko w pliku" bez znajomości wymagań co do Twojego systemu i możliwości są jak rzucanie monetą i odpowiedź orzeł/reszka.


--------------------
Nie ma nic stałego prócz zmiany...
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 Aktualny czas: 20.08.2025 - 11:59