Hei,
ongelmana on monikieliset sivut, joissa pitäisi PHP koodilla ohjata lukija oman kielisille sivuille.
En tiedä miten. Tietäskö joku?
Ongelmana on miten saisi eri kieliset lukijat ohjattua oman kielisille sivuilleen. Tietäskö joku?
Ohjattua *mistä* omille sivuilleen?
Puhutaanko sisäänkirjautuneista käyttäjistä?
Onko sivuille tallennettuna tietoa millä kielellä sivu on?
Kysymyksesi on niin laaja, ettei siihen voi näillä lähtötiedoilla vastata suoraan.
OK
Sivuille saapunut lukija pitäisi ohjata automaattisesti oman kielisille sivuilleen. Ei vielä rekisteröitynyt.
Voi olla FI, US tai DE
Siis etusivulle saapuvat?
En lähtisi ohjaamaan käyttäjiä, kuin korkeintaan etusivulta. Tällöin esim. googlen kautta sivustolle eksyneet näkisivät juuri sen sivun, johon olivat hakutuloksesta päätyneet. Samoin, jos he tulevat esim. tarkoituksella /us/product-123 -tyyliselle sivulle, ei heitä ohjattaisi millekään suomenkieliselle sivulle (esim. tuote, jota ei Suomessa olisi myynnissä, mutta jonka olisin ostamassa vaikkapa ulkomaisen verkkosivun kautta).
Eli mieti tarkkaan, haluatko oikeasti pakottaa käyttäjiä sivuille, joihin he eivät tulleet alunperinkään.
Selaimen headereista saat jonkinlaista viitettä käyttäjän kielestä, mutta moni esim. suomalainenkin saattaa tietämättään käyttää englanninkielistä selainta. He eivät silti välttämättä osaa englantia sanaakaan.
edit:
Itse en siis lähtisi siirtelemään käyttäjiä mihinkään, vaan pitäisin sen sijaan huolen, että
a) html:ssä on merkitty hakukoneille jokaisen sivun kielisyys, jotta ne indeksoisivat sisällön oikein
b) sivustolla on selkeä kielivalinta, josta käyttäjä voi itse vaihtaa kielisyyttä
Kun nämä kaksi kohtaa on kunnossa, tulee käyttäjät lähes automaattisesti hakutuloksista oikeille sivuille oikealla kielellä.
Kristallipallo hiukan huurussa, mutta tarkoititko jotakin tämän tapaista?
<?php $language = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']); switch ($language) { case "fi_FI": // tee redirect suomenkieliseen versioon break; case "en_US"; // tee redirect englanninkieliseen versioon break; default: // tee redirect oletuskieliseen versioon break; }
Sinänsä voisi olla ihan hyvä miettiä tämän käyttäjäystävällisyyttä.
Mitä esimerkiksi suomenruotsalainen käyttäjä, jonka selain todennäköisesti ilmoittaa preferroiduksi kieleksi "sv_FI" saa kielivalinnaksi? Samoin jos olen saksalaisessa nettikahvilassa, onko minun pakko käyttää sivustoa saksaksi (kun nettikahvilan selaimessa accept_language todennäköisesti de_DE)?
onko jokin syy miksi kieliversioita ei vaan toteuteta lokalisaatioilla eri sivujen sijaan? Tuntuu järjettömältä ilman validia syytä ylläpitää eri sivuja, lokalisoidun sisällön sijaan.
Ohjauksen voi tehdä lukemalla HTTP:n Accept-Language-otsikon: $_SERVER['HTTP_ACCEPT_LANGUAGE']
. Valitettavasti PHP ei tarjoa kelvollista funktiota otsikon arvon jäsentämiseen, joten se pitää tehdä itse tai käyttää jotakin kirjastoa.
Käyttäjälle pitää joka tapauksessa antaa mahdollisuus vaihtaa kieltä – riippumatta siitä, tehdäänkö uudelleenohjaus.
Kiitos hyvistä vastauksista! :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.