Wielojęzyczność strony, fizyczne przechowywanie tekstów |
Wielojęzyczność strony, fizyczne przechowywanie tekstów |
14.08.2008, 12:10:34
Post
#1
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) |
Witam.
Natknąłem się na problem przechowywania zlokalizowanych tekstów. Mam kilka propozycji:
Jestem ciekaw jak Wy rozwiązaliście to w swoich aplikacjach. Przypominam, że chodzi o teksty w bazach danych (np. artykuły) a nie lokalizacje tekstów typu: Menu, Strona główna. Pozdrawiam. -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem. |
|
|
14.08.2008, 12:56:12
Post
#2
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 15 Dołączył: 29.07.2006 Ostrzeżenie: (0%) |
Luźno oparte na Joomla CMS 1.0.15 i komponencie JoomFish
A. Rozdziel teksty na treść i etykiety - artykuł, tytuł, nazwa pozycji menu, nagłówki pól strony -> to treść - teskty: "czytaj całość" , "komentarze", "Załóż konto", "Autor", "Data dodania", "Nie masz uprawnień ..." -> to etykiety teksty trzymaj w bazie etykiety w plikach B. W momencie rozpoznania języka inkludujesz odpowiedni plik etykiet dla danego języka, w kodzie używasz tylko zmiennych językowych. W pewnych okolicznościach możesz trzymać etykiety w plikach ini i uzywać dostępnego dla php5 parsowania plików ini C. Rozbudowujesz zapytanie o treści tak, żeby w momencie rozpoznaia języka innego niz podstawowy pytał o translację w odpowiedniej tabeli - wszystkie translacje w jednej tabeli, bazując na unikalnych ID elementów oryginalnych (to pozwoli na optymalne uzycie joina) oraz opatrzone polem 'type' gdzie będziesz trzymać sobie informacje co to jest (artykuł, element menu, plik z opisem, fotka z opisem), obowiązkowe pole 'lang' - warto dodać stan translacji (0/1) zeby dopuścic do stanu w którym masz cos przetłumaczone ale tego nie używasz (jeszcze) Odpowiednio formując joina pytasz zawsze o konkretny typ i tylko o translacje dopuszczone do publikacji, oczywiście tylko z danego języka. Oczywiście trzeba sobie samemu wykombinować co w przypadku braku translacji (tekst domyślny/ element oryginalny). 1. nieskalowalne 2. obrzydnie Ci po pierwszych 15 minutach edycji, paskudne obciążenie przy parsowaniu 3. Blisko, blisko, tyle, że w jednej tabeli tak jak opisałem wcześniej W podanym rozwiązaniu możesz sam zadecydować które pola są tłumaczalne a które nie co umożliwi nawet wyświetlania innych grafik czy plików downloadu w zależności od wybranego języka, oraz dobrą obsługę elementów nieistniejących dla danego języka. Jeżeli masz tabele niezunifikowane (tzn, artykuły mają 'title' a fotki 'header' i niewiele jest wspólnych pól różnych elementów) oraz, jeżeli masz niewiele typów danych (artykuły, fotki, pliki), możesz zastosować osobne tabele translacji dla każdego typu. |
|
|
14.08.2008, 13:05:42
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) |
-------------------- |
|
|
14.08.2008, 13:07:36
Post
#4
|
|
Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) |
Ja polecam 1 rozwiązanie, tylko tworzyć osobnej tabeli dla każdego langa a dać pola które będzie przechowywało język. I później zapytaniem "... WHERE pole = 'pl'..." itp.
|
|
|
14.08.2008, 13:53:50
Post
#5
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) |
@Moli, właśnie chciałem da to jako kolejną propozycję. Chyba wybiorę takie rozwiązanie.
@.radex, czytaj uważnie topic. @rybik, Dokładnie, teksty to teksty, a labele to labele. To zagadnienie dotyczyło tylko tekstów. EOT. -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem. |
|
|
14.08.2008, 14:00:01
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 16:47 |