Ország meghatározása és átirányítás

makgab képe

Üdv!

Adott egy többnyelvű oldal.
http://domain.tld/en
http://domain.tld/hu
http://domain.tld/de
...stb.

Megoldható, hogy a Drupal automatikusan meghatározza az országot (sütivel, IP-ről v. bárhogyan), hogy honnan jött a user és automatikusan az adott nyelvi változatra irányítja a usert?
Pl. a user magyar, akkor automatikusan a /hu-ra irányítsa.

G.

Drupal verzió: 
pp képe

Az alap rendszer része az, hogy a böngésző nyelvi beállításának megfelelő oldalt jelenítse meg. Ez kb. milliárdszor praktikusabb, mint ip alapján próbálkozni. Már csak azért is mert az ip max a lokalizált szolgáltatások kínálására jó, a nyelvre semmi esetre sem mert:
- vannak országok ahol több nyelvet beszélnek
- vannak nyelvek amiket több országban beszélnek
- vannak emberek akik külföldön vannak
- vannak akik nincsenek külföldön, de mégis valamiért más nyelvet preferálnak.
- és vannak azok, akik átkergetik a forgalmukat külföldre, hogy nézhessék a hulu-t, na ők itthon vannak, csak épp az ipéjük nem magyar

pp
ui.: Ha okosabb rendszert akarsz mint a látogatóid, akkor okosabb is lesz... mert az okosabb látogatók nem fogják használni. Egy ilyen buta módszernél pedig jó sokan el fognak pártolni tőled. :)

2
0
Balu Ertl képe

pp megelőzött, de azért beküldöm, ne vesszen kárba, szenvedős kánikulában izzadó ujjakkal tableten pötyögni :)

Sokan, akár még a legnagyobbak közül is gyakran elkövetik az 1 ország = 1 nyelv általánosítás hibáját, de te ne tedd. Kérdésedben ismét két fogalom keveredését érzem: a fizikai tartózkodási geopozíció és a használt nyelv tehát két, egymástól akár véletlenszerűen is eltérő érték, ezért egymásra következtetni belőlük nem lehet.

Az IP-cím használható a geopozíció hozzávetőleges megtippelésére, a ccTLD pedig a nyelv kitalálására. Ezeknél a megközelítőleges becsléseknél mindig jobb, ha magát a usert megkérdezed, hogy hol van (írja be a címét, vagy annak egy részét) és milyen nyelvet szeretne.

De visszatérve kérdésedre: igen, a D7 tud ilyet:

  1. admin/config/regional/language oldalon vedd fel a támogatni kívánt nyelveket
  2. Minden felvett nyelv sorának végén az Edit, a nyíló oldalon tudod eldönteni, hogy melyiket választod: VAGY "Path prefix language code" VAGY "Language domain". Mind a kettőt ne töltsd ki, mert összezavarodik.
  3. Ha három, vagy több nyelved van, akkor végig mindegyiken ugyanazt a mezőt töltsd ki, de értelemszerűen más adatokkal. Olyat tehát nem lehet, hogy a lettet doménből, a litvánt meg URL-ből döntse el.
  4. admin/config/regional/language/configure oldalon pedig végül sorbaállíthatod a döntési feltételeket. Ha tiszteled a felhasználóidat,akkor user preference a legelső.
  5. Ezután jöhet a tartalmak (meg minden egyéb) többnyelvűsítése, de az már másik topik.
1
0
makgab képe

Erre gondoltam, köszönöm! Azért is irtam, hogy "süti, IP v. bármivel...". :)
A szép, elegáns megoldást kerestem. De akkor csak megfeledkeztem róla.
Nem volt jól beállítva.

Köszönöm!

/admin/config/regional/language/configure

"A felhasználó nyelvi beállításainak átvétele."
"A nyelv megállapítása a böngésző nyelvi beállításaiból."
"A nyelv megállapítása a webcímből (útvonal előtag vagy hosztnév alapján)."

0
0
makgab képe

Azt hogyan lehet beállítani, hogy alapból pl. a magyar nyelvű töltödik be, de ha a user az angolt szeretné megnézni /en
akkor azt is engedje?
Mert így mindig pl. a magyar töltődik be.

Ha elsőnek beállítom be:

Munkamenet - Nyelv megállapítása a kérés vagy a munkamenet paraméteréből.

Akkor http://domain.tld/?language=en lesz az url. Ez csak így megy?

0
0
Balu Ertl képe

Minden nyelvednél a prefixes opciót választottad, begépelted a tetszőleges kódjaikat, üresen hagytad a doménes mezőt, igaz? Akkor hogy jelenik meg paraméter az URL-ben?

Rövid URL-ek be vannak kapcsolva?

1
0
makgab képe

Igen, prefixes van mindenhol (/en /hu ...stb.), domaines mező üres.
Rövid url van beállítva.

admin/config/regional/language/configure/session

A nyelv felismerése az oldalletöltés vagy a munkamenet adataiból. Például „http://pelda.hu?language=de" esetében a „language” paraméter „de” értéke miatt a német nyelv lesz beállítva.
 
Kérés/munkamenet paramétere:
"language"
 
A kívánt nyelv meghatározása során a Drupal az odallekérés vagy a munkamenet paraméterét nevét vette alapul.

Ha kitörlöm a "language" beállítást, akkor nyilván az url ez (a nyelvválasztó blokkban):
http://domain.tld/?=en

Csak ilyenkor nem vált nyelvet.

0
0
Balu Ertl képe

"mindenhol (/en /hu ...stb.), domaines" – per jelet ugye nem írtál a mezőbe? A mező súgóleírása alatta példát is mutat.

Egyébként pedig:

"kitörlöm a language beállítást, akkor [...] http://domain.tld/?=en" – szerintem ez nem is működhet, mert tudtommal a GET-paramétereknek mindig név=érték párban kell járniuk.

1
0
makgab képe

A lényeg, hogy ebben az esetben így működik, pl.:
http://domain.tld/?language=de

A http://domain.tld/de ilyenkor nem működik (nem vált németre).

0
0