Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ?tagi i tłumaczenia stron - wady i zalety różnych rozwiązań?
nowy_pehapowiec
post
Post #1





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

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


Cze!
Przewertowałem wujaszka google i nadal nie wiem które rozwiązanie wybrać.



Tagi
1 Dodatkowa kolumna 'tags' nie spełniająca warunku normalności. Pojedyncze tagi rozdzielone przecinkiem albo średnikiem i wszystkie zapisane w jednym polu.
2 Dodatkowo tabela z kolumnami id, tag. Taka tabela tez nie jest normalna bo jeśli jeden id ma kilka tagów to id musi się powtarzać w następnych wierszach.

Jak widać ani jedno ani drugie rozwiązanie nie jest idealne. Pierwsze jest prostsze w realizacji. Drugie minimalnie trudniejsze, ale czy lepsze? Można to drugie zmodyfikować dodając dodatkową tabelę łączącą id, tag_id, a w tabeli tags trzymać tag_id i tag. Ale ideologia pozostaje ta sama.

Które rozwiązanie się sprawuje lepiej? Bo oba są złe - powtórzenia w poziomie albo w pionie.



Tłumaczenia
A dokładniej statyczne tłumaczenia. Czy lepiej tłumaczyć fragmenty stron, te które się zmieniają w różnych językach, czy lepiej całe strony?

1 Jak tłumacze całe strony, to minusem jest konieczność pamiętania o aktualizacji obu stron. Bo jak zmienię jedna stronę to druga działa bez problemów ale jest nieaktualna.

2 Jak tłumacze tylko fragmenty, to przy każdym fragmencie tekstu, czy to paragraf, czy podpis pod zdjęciem, czy element menu muszę użyć jakiejś funkcji, która z bazy pobierze tekst w odpowiednim języku. Czyli kod strony się robi bardziej nieczytelny i liczba selectów z bazy wzrasta.

Poradzicie coś w tych dwóch tematach? A może coś z zupełnie innej beczki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krowal
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Po pierwsze schemat tabeli z tlumaczeniami, mniej więcej może być taki:
id, key, lang_en, lang_fr, lang_pl, ... (w zaleznosci od ilosci jezykow)

Po drugie funkcja langtrans('key') ('key' - odpowiednik unikalnego klucza w tabeli) nie robi zapytania do bazy tylko zapisuje klucze do jednej tablicy.

A to przykładowy przebieg wydarzeń:
  1. <?php
  2. function funkcjaTlumaczaca($buffer){
  3. 'SELECT * FROM tlumaczenia WHERE key IN ('key1', 'key2', 'key3')'; // lista kluczy utworzona z tablicy do ktorej zapisuje langtrans()
  4. //zamieniasz wszystkie wystąpienia #translate_XXX# na wartości pobrane z bazy w zależności od klucza
  5. //opcjonalnie mozesz sprawdzać które z kluczy istnieją w bazie i jeśli jakichś nie ma to je dodajesz z pustymi wartosciami w kolumnach jezykow
  6. return srt_replace($listaDoZamiany, $listaZBazy, $buffer);
  7. }
  8.  
  9. ob_start('funkcjaTlumaczaca');
  10. // twoj html z kilkoma wywolaniami wynkcji langtrans('key1') langtrans('key2') langtrans('key3')
  11. // 'echo langtrans('key')' -> powinno wyświetlić cos w rodzaju #translate_key#
  12. ob_flush(); // wysle do przegladarki przerobiony bufor
  13. ?>


Trochę chaotycznie, ale może załapiesz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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.12.2025 - 10:07