Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przechowywanie wersji językowych strony, jak najlepiej to rozwiązać?
Dynuel
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


witam

mam jedno pytanie, jak najlepiej przechowywać tlumaczenia strony??, myślelem o plikach tekstowych, lecz chcę wprowadzić możliwość dodawania i edytowania tlumaczen dla kazdego uzytkownika indywidualnie (poza oficjalnymi domyslnymi), tak wiec tych wersji tlumaczeń moze się trochę nazbierać, pliki nie bardzo mi pasują ze względu na edycję, a przechowywatnie tego w mysql moze troche miejsca zajmowac, chociaz rozmiar nie jest istotny, ale nie wiem jak będzie to chodzilo, co o tym sądzicie??

wielkie dzięki, pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Ja to zawsze (2 razy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) robiłem mniej więcej tak:

index.php:
  1. <?php
  2. $lang = 'pl'; // lub 'en'
  3.  
  4. include('./lang/'.$lang.'.inc.php');
  5.  
  6. echo '<a href=\"\">'.$lng['link_name'].'</a>';
  7. // itp itd, cała strona...
  8. ?>

pl.inc.php:
  1. <?php
  2. $lng = array();
  3.  
  4. $lng['link_name'] = 'To jest link';
  5. $lng['exit'] = 'Wyjście';
  6. // ...
  7. ?>

en.inc.php:
  1. <?php
  2. $lng = array();
  3.  
  4. $lng['link_name'] = 'This is link';
  5. $lng['exit'] = 'Exit';
  6. // ...
  7. ?>

To tylko jedna z wielu możliwości...

Ten post edytował crashu 18.06.2005, 13:56:35
Go to the top of the page
+Quote Post
Dynuel
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


no dobra, metoda dość prosta i wygodna, lecz jezeli ja zamierzam zrobić, tych wersji językowych dziesiątki i do tego ich edytowanie, to nie wiem czy operacje na plikach będą dosyć wygodne i dobre. a co powiesz na MySQL??
Go to the top of the page
+Quote Post
dag
post
Post #4





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 24.12.2003

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


crashu pokazał koncept. To już od Ciebie i twojego systemu zależy implementacja.

1. Pobierasz z bazy danych komunikaty - tylko dla jednego języka (tzn. wersję danego usera, bo jak zauważyłeś chcesz, aby user mógł sobie ją edytować).
2. Wstawiasz do pliku (template, etc.)

Możesz to rozwiązać np. poprzez statyczną metodę jakiejś klasy.
  1. <?php
  2. class Msg {
  3. private $messages; //tablica z komunikatami $messages[ id ] = 'kontakt';
  4. static public function get( $id ) {
  5.  return this->messages[ $id ];
  6. }
  7. }
  8.  
  9. ?>


Następnie gdzieś tam odwołujesz się poprzez:
  1. <?php
  2. Msg::get(51831);
  3.  
  4. //czy
  5.  
  6. Msg::get( &#092;"link_menu1\" );
  7.  
  8. ?>
Go to the top of the page
+Quote Post
Dynuel
post
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


dobra, ale mnie nie chodzi o to jak na stronie uzyc roznych wersji jezykowych, poniewaz myślę że z tym nie mam problemu. Mi chodzi o to ze nie mogę zdecywac się gdzie trzymać te wszystkie tłumaczenia. pli byłby wygodny poniewaz tych wszystkich tekstow jest sporo, ale baza natomiast jest chyba jeszcze lepsza poniewaz latwa w edycji. ale tutaj pojawia sie kolejny problem poniewaz nie wiem jak skonstruowac tabelę, mam zrobić tyle kolumn ile jest tekstow do przetlumaczenia?? i dla kazdego usera bedzie osobny wiersz, lub stworzyc tylko cztery kolumny (id,user,nazwa_tekstu,tlumaczenie) i dla kazdego tekstu do przetlumaczenia i dla kazdego usera dodawac osobny rekord?? mysle ze pierwsza metoda jest lepsza poniewaz wszystko jest dosc ladnie poukladane, lecz nie mam pojęcia jak zachowa sie baza danych z tabelą ktora ma np. 100 kolumn, z czego niektore pola są w dodatku typu text. a drugi pomysl moglby chodzic duzo lepiej, lecz ilosc rekordow wzrosla by 100-krotnie, tak wiec juz nie mam pojęcia co wybrać.
Go to the top of the page
+Quote Post
dag
post
Post #6





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 24.12.2003

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


Widzę, że masz problem z projektowaniem baz danych. Zainteresuj się jakąś książką na ten temat.

Kod
tabela "grupa"
grupa_id //id grupy

tabela "langs"
lang_id //id jezyka
lang_short_name //skórt np. pol eng
...

tabela "msg"
grupa_id //id grupy, ktora zajmuje sie tym tlumaczeniem
msg_id //nr id komunikatu, np. link_menu1
lang_id //nr id jezyka
msg_text //tresc komunikatu
...


W ten sposób będziesz mógł w łatwy sposób pobrać listę tłumaczeń dla każdego języka, bo może istnieć kilka tłumaczeń dla danego języka.

Ten post edytował dag 19.06.2005, 09:06:22
Go to the top of the page
+Quote Post
NuLL
post
Post #7





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Mordercy...
Go to the top of the page
+Quote Post
dag
post
Post #8





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 24.12.2003

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


Cytat(NuLL @ 2005-06-19 10:09:34)
Mordercy...

Powinien wprowadzić jakieś wielopziomowe cache'owanie (napisałem gdzieś w jego innym temacie). Dzięki temu nie będzie aż tak bardzo obciążona baza ;-)
Go to the top of the page
+Quote Post
Dynuel
post
Post #9





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


czyli mam zrobic tak jak pisałem w swoim drugim pomyśle tak?? dla każdego osobnego tekstu w tłumaczeniu dawać osobny rekord w tabeli, no ale zdajesz sobie sprawe z tego ze jezeli bedzie np. 10 językow, a kazde tlumaczenie ma powiedzmy po 100 fragmentow tekstow na stronie to daej 1000 rekordow w bazie danych, a jezeli do tego dojdzie jeszcze z 10000 uzytkownikow, a powiedzmy 1000 z nich zrobi sobie wlasne tlumaczenie (a chcę by mieli taką mozliwość) to tych wpisow pojawi sie w bazie 10000 prywatnych tlumaczen + 1000 oficjalnych. no w sumie nie jest tego az tak dluzo, no ale gdyby zrobic tak jak opisywalem w sowim pierwszym pomysl to tych rekordow bylo by 1010, no ale tabela by miala 100 kolum, tak wiec moze by to spowolniło pracę. zupełnie się na tym nie znam, tak więc proszę o pomoc w wyborze.


ps. "Powinien wprowadzić jakieś wielopziomowe cache'owanie" ze co?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

Ten post edytował Dynuel 19.06.2005, 09:17:43
Go to the top of the page
+Quote Post
SongoQ
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


W tym przypadku wydaje mi sie baza danych najlepszym rozwiazaniem. Tak jak pisales moze byc n jezykow i n userow, odnosnie plikow to bedzie masakra z wciaganiem tych plikow, kilka tysiecy plikow w 1 katalogu i wydajnosc spada. Wtedy wymagana by byla struktura drzewiasta tatalogow z jezykami. A co z edycja latwiej na bazie zrobic.

Projekt tabeli. Lepiej zastosowac wiele rekordow i tutaj jak napisales "0000 prywatnych tlumaczen + 1000 oficjalnych" to nie jest tak az wiele niz 1000 pol w bazie danych, chyba nie musze tlumaczyc dlaczego wiele pol powoduje problemy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:20