![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam, poszukuje odpowiedzi a konkretnie w zakresie wielojęzykowości. Mam już system, tyle że chciałby rozbududować go o możliwość tworzeni treści w wielu językach, szukam prostego sposobu. Prosty to jest utworzenie nowych tabel, bądź całej bazy w którym byłaby osobna treść dla danego języka, aczkolwiek nie jest to dobre rozwiązanie, pracuję na jednym z systemów, który pod dodaniu do xml nazwy jeżyka i włączeniu go w panelu administratora, automatycznie rozbudowuje stronę o następny język, z tym że cała zawartość musi być taka sama jak w wersji polskiej żeby nie było różnic. Nie wiem jak w ogólne zaprojektować, żeby było proste i dobre.
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Nie widzę powodu aby rezygnować z bazy danych na rzecz XML do tego typu działań. Po pierwsze nie trzeba tworzyć nowej tabeli dla każdego jeżyka wystarczy:
id | kraj | key | value 1 | 1 | 'pokaz' | 'show' 1 | 2 | 'pokaz' | 'pokaz' Małe wyjaśnienie: - kraj = 1 -> np. english, 2->polski, 3->euroazjatycki itd. Pobierasz tylko te dane, które mają odpowiedni język - key czyli wywołując $lang['pokaz'] zmienna ta zwraca "show" dla angielskiego lub "pokaz" dla polskiego Ten post edytował CuteOne 6.07.2011, 23:31:38 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) ![]() ![]() |
Plik z jezykiem, zaleznie od języka wybierasz plik, np pl.php, en.php
a w pliku zmienne: pl.php
en.php
I tak dalej Najłatwiej tak i najoptymalniej, bo nie obciążasz bazy Ten post edytował toaspzoo 7.07.2011, 00:48:07 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Można również połączyć obie powyższe propozycje i zastosować plik językowy dla elementów stałych (takich jak jakieś nagłówki, tytuły poszczególnych sekcji strony), a treść artykułów, nowinek itp. zapisywać w bazie danych, jak to wyżej przedstawiono.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie widzę powodu aby rezygnować z bazy danych na rzecz XML do tego typu działań. Po pierwsze nie trzeba tworzyć nowej tabeli dla każdego jeżyka wystarczy: id | kraj | key | value 1 | 1 | 'pokaz' | 'show' 1 | 2 | 'pokaz' | 'pokaz' Małe wyjaśnienie: - kraj = 1 -> np. english, 2->polski, 3->euroazjatycki itd. Pobierasz tylko te dane, które mają odpowiedni język - key czyli wywołując $lang['pokaz'] zmienna ta zwraca "show" dla angielskiego lub "pokaz" dla polskiego Czyli tak naprawdę czeka mnie przeprojektowanie bazy danych, dodanie do każdej tabeli kolumny lang, wtedy przy wyborze języka automatycznie do bazy powinna dodawać się informacja o języku, i automatycznie po wyborze strona.pl/en/ miałby się ustawiać język. Także czeka mnie przeprojektowanie kilku klas a w szczególności drzewa nawigacji. Aczkolwiek, to może nie być takie trudne bo gdy dodam do root odnośnik en, pl, fr, automatycznie treść będzie tworzona dla tych języków. Co do tłumaczenia elementów stałych to jest banał, moje pytanie raczej tyczyło się samego zaprojektowania, sposobu tworzenia treści w wielu językach, rozwiązania zaprojektowania samego mechanizmu, struktury tabel itp. Dziękuje za odpowiedzi. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Pamiętaj tylko, że przy dużych ilościach danych lepiej rozdzielić to na kilka tabel np. tabela_lang_pl, tabela_lang_en - tu jak widzisz wystarczy w zaytaniu do bazy wstawić odpowiednią zmienną
Ten post edytował CuteOne 7.07.2011, 12:55:24 |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@CuteOne Ten mechanizm ma moim zdaniem poważną wadę:
w przypadku jakiejś niezbędnęj aktualizacji tabeli o dodatkowe pole, trzeba pamiętać by zmienić to we wszystkich tabelach językowych. W przypadku, gdy tabele są tworzone dynamicznie, trzeba pamiętać o zaktualizowaniu skryptu do tworzenia takich tabel. No ale wady/zalety zapewne i tak docelowo będą zależały od aplikacji, ilości danych i kupie masie innych rzeczy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 18:51 |