nowy_pehapowiec
26.04.2010, 15:47:53
Riklaunim treści przecież mogą być różne. W bazie mogą być pole z treścią w kilku językach. A i szablony i style mogą być ładowane różne dla różnych języków. I to nawet dobrze działa, ale ma ten minus zmiennej treści, o czym pisałeś. Czy wiesz jak google indeksuje taką stronę?
pozdrawiam
Riklaunim
27.04.2010, 18:09:36
Cytat(nowy_pehapowiec @ 26.04.2010, 16:47:53 )

Riklaunim treści przecież mogą być różne. W bazie mogą być pole z treścią w kilku językach. A i szablony i style mogą być ładowane różne dla różnych języków. I to nawet dobrze działa, ale ma ten minus zmiennej treści, o czym pisałeś. Czy wiesz jak google indeksuje taką stronę?
pozdrawiam
Jeżeli pod jednym linkiem możesz mieć różne treści to poprawnie tego nie zindeksuje. Za dużo kombinujesz z tą wielojęzycznością. Jeżeli w ogóle to jest potrzebne to stawia się najprościej oddzielny serwis/stronę. A specyficzne przypadki jak międzynarodowe sklepy internetowe - stosują różne linki lub subdomeny w zależności od wersji językowej.
nowy_pehapowiec
27.04.2010, 18:40:58
Tego chciałem się dowiedzieć, czy da się dobrze taką stronę zaindeksować -jeśli nie to sprawa jest oczywista. Ale chyba dla domyślnego języka nie ma potrzeby tworzenia subdomeny?
strona.com - dla poslkiej strony
en.strona.com - dla angielskiej
fr.strona.com - dla francuskiej
pozdro
jareeny
30.04.2010, 18:38:54
według mnie, sprawdzać język przeglądarki można wtedy, kiedy się chce na wejściu ustawić domyślny język strony czyli:
język przeglądarki: polski, treść domyślna: polska
język przeglądarki: angielski - redirect na en.site.pl
język: chiński - redirect ch.site.pl
no a jeżeli domyślny język nie byłby polski no to
język przeglądarki: polski - redirect pl.site.com
obojętnie
Kużdo
10.07.2010, 20:46:25
Witam,
Trochę odgrzebię temat, ale mam problem ze zrozumieniem pewnej rzeczy... Były tutaj podawane sposoby zapisywania dynamicznych treści do bazy i jedną z nich była jedna tabela z kolumną lang, w której był określony język wpisu... Co w przypadku, gdy użytkownik wejdzie w taki wpis, zobaczy, że jest też jego polska wersja i będzie chciał się na nią przełączyć, bo np. zna jako tako polski, a może być tam więcej informacji? ID takich wpisów jest inny, a subdomeny nie wchodzą w grę...
Pozdrawiam.
vokiel
10.07.2010, 21:00:15
@kuzdoTu nie ma problemu. Masz np taka strukturę tabeli:
Kod
ID| ID_WPISU | TYTUL | TRESC | JEZYK |
1 | 1 | Tytuł PL | Treść PL | PL |
2 | 1 | Title EN | Contents EN | EN |
3 | 1 | Название RU | Содержание RU | RU |
W takim wypadku możesz trzymać wpisy w trzech językach i łatwo między nimi przełączać. Ustawiasz taki sam ID_WPISU dla wszystkich trzech. Wyświetlając wpis pobierasz ID innych, dla których ID_WPISU jest taki sam, i generujesz linki do nich w stylu:
<a href="wpis.php?id=2">zobacz wpis w en
</a> <a href="wpis.php?id=3">zobacz wpis w ru
</a>
Dlaczego? PrimaryKey to może być para kluczy. ID i LANG.
Kod
ID| JEZYK | | TYTUL | TRESC |
1 | PL | Tytuł PL | Treść PL
1 | EN | Title EN | Contents EN
1 | RU | Название RU | Содержание RU
PrimaryKey: (ID, JEZYK)
soomal
17.10.2010, 00:46:05
Rozważał ktoś na tych 8 stronach czy w wielu językach lepiej stosować nadmiarowe dane w tabelach czy normalizacje i podział na dwie tabele?
Chodzi mi o sytuację, gdy jakiś zasób ma cechy wspólne dla wielu wersji (np. grafika, przypisanie do kategorii, parametry systemowe) oraz różne (tytuł, opis, itd.).
Normalizacja w tym przypadku wydaje się mieć dużo wad: JOIN przy każdym zapytaniu, ograniczone stosowanie indeksów, jednak w cms firmy, w której pracuje tak właśnie sa zaimplementowane wersje językowe (!?)
Dyktus
8.08.2011, 16:36:24
Wiem, że ostatnia odpowiedź była w zeszłym roku, lecz nie chcę zaśmiecać forum.
Skorzystałem z opisanych tu sposobów tzn. mam plik załóżmy pl.php
Kod
$lg['mail_tytul']='Tytul maila';
$lg['mail_tresc']='Treść maila Witaj ...';
$lg['web_mail']='kontakt@kontakt.pl';
itd. oczywiście jest też plik en.php w którym są te informacje po angielsku.
Jak można zrobić coś takiego by np. w treści maila było
Cytat
Witaj [IMIE]. Oto dane do zalogowania:
Login: [LOGIN]
Hasło: takie jakie ustawiłeś przy zakładaniu konta
oczywiście korzystam z podstawowej funkcji mail()
Kod
mail($email, $lg['mail_tytul'], $lg['mail_tresc'], 'From: <'.$lg['web_mail'].'>');
W jaki sposób przyłączyć do $lg['mail_tresc'] w odpowiednich miejscach login i ewentualnie imię ?
Nakierujcie chociaż może dojdę do reszty sam. Szukałem oczywiście jednak nie znalazłem nic co by pasowało, lub też po prostu mogłem to przeoczyć.
nospor
8.08.2011, 16:39:30
str_replace()
dreaken
14.08.2011, 10:19:53
Do maili najlepiej zrobić sobie specjalny systemik który będzie obsługiwał do nich szablony, a w szablonie maila użyć systemu językowego to nie problem.
dstp
26.01.2012, 12:23:41
przekopałem cały temat, ale nie znalazłem odpowiedzi na swoje pytanie.. piszę prosty sklep internetowy i stanąłem przy wrzucania produktów z panelu administracyjnego. Mam kilka języków w sklepie i chciałbym, żeby do każdego produktu można było dodać opis i cenę w innym języku. Myślałem, żeby dodać kolumnę do tabeli "LANG", coś takiego:
id | cat | name | desc | price | LANG
i przy dodawaniu produktu wrzucać tyle rekordów ile jest języków, tylko w ostatniej kolumnie zmieniać LANG
chyba, że znacie jakieś lepsze rozwiązanie
Adi32
15.06.2012, 10:58:36
Witajcie.
Przekopałem się przez temat i kilka razy padła odpowiedź na moje pytanie ale może jednak coś się zmieniło gdyż temat dawno zamarł.
Stworzyłem w miarę uniwersalny sklep w którym admin (owner) ma możliwość dodawania dowolnej ilości języków, treści stałych jak i opisów produktów, newsów itp i jest to rozwiązane wydaje mi się w najlepszy możliwy sposób.
Ogólne teksty na stronie:
Tabela jezyk = id | nazwa | skrot
Tabela fraza = id_jezyk | fraza // id jezyk 0 to opis frazy w języku polskim
Dla produktów, kategorii i newsów jest
Tabela produkt id,nazwa i inne | id_jezyk
Użytkownik ma domyślny język w sesji.
Tabele związane z językiem są cachowane więc baza nie jęczy.
Dzięki temu wszystko dzieje się szybko. Admin ma możliwość zmieniać tłumaczenia przez CMS dla każdego języka i frazy.
Jeżeli chodzi o produkty to rozwiązania są 2:
1 - dla innego języka inny produkt
2 - produkt ten sam ale opis, nazwa, cena (waluta, vat) z tabeli łączonej
ale to już zależy od klienta, mam zrobione 2 opcje łatwo przełączalne.
Co o tym myślicie?
erix
25.07.2012, 08:46:27
A jak rozwiązujesz tłumaczenie treści z bazy? Tzn. produkty i opisy w innych językach.
Bo cache cachem, ale nieskończonej pojemności też nie ma.
Regz
22.10.2015, 07:44:08
Ostatnio napisałem na szybkości coś takiego co do samego wyboru języka, może komuś się przyda

$langs_array = ['pl', 'en', 'fr'];
$default_lang = 'pl';
if(isset($_SESSION['SESSION_LANG'])): if(!in_array($_SESSION['SESSION_LANG'], $langs_array)): $_SESSION['SESSION_LANG'] = $default_lang;
endif;
else:
$input = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$pattern = '/;q=([0-1]{0,1}.\d{0,4})/i';
$user_languages = [];
foreach(explode(',', $input) as $lang): endforeach;
unset($input, $pattern, $lang);
$selected_language = '';
foreach($user_languages as $lang):
$selected_language = $lang;
break;
endif;
endforeach;
if(empty($selected_language)): $_SESSION['SESSION_LANG'] = $default_lang;
else:
$_SESSION['SESSION_LANG'] = $selected_language;
endif;
unset($user_languages, $selected_language); endif;
$lang = filter_input(INPUT_GET, 'lang');
$_SESSION['SESSION_LANG'] = $lang;
else:
$_SESSION['SESSION_LANG'] = $default_lang;
endif;
endif;
include $_SESSION['SESSION_LANG'] . '/index.php';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.