ugrás a tartalomhoz

facebook scrape nyelv detektálás

razielanarki · 2012. Már. 8. (Cs), 13.45
háttérinfó:
Adott egy tartalom ami több nyelven elérhető az oldalon:

valami.hu/cikkek/magyar-cim-slug
valami.hu/cikkek/english-title-slug

jelenleg a nyelv detektálása így zajlik:

1. van-e cookie? -> ha van, az a nyelv amit a user beállított magának az oldalon
2. http_accept_language parse -> ha sikeres, az a nyelv aminek a legmagasabb a q-ja
3. default: en
(4. set cookie)

a magyar url redirectel az angolra ha angol a detektált nyelv, és vica versa.

----
és akkor itt a kérdéses rész:

a facebook scraper nem küld accept_language headert, sem mást(?) amiből detektálhatnánk a user nyelvét, így a magyar nyelvű linket megosztva is angolul (default nyelven, redirectelve) jelenik meg a preview a postban.

van-e erre egyszerű módszer, amivel detektálható lenne a nyelv?
(az url-be ágyazott nyelvkód nem túl szép szerintem)

illetve tudom-e jelezni a facenak h alternatív nyelven alternatív urlen itt és itt, és kezeli-e?
(nézegettem az OG internationalization leírást, de nem teljesen tiszták még a lehetőségek)
 
1

Szerintem: example.com/cikke

Poetro · 2012. Már. 8. (Cs), 14.14
Szerintem:

example.com/cikkek/magyar-cim-slug
example.com/articles/english-title-slug

Így könnyű azonosítani, melyik milyen nyelvű.
2

igen de

razielanarki · 2012. Már. 8. (Cs), 14.36
a magyar url átírányításra kerül az angolra ha a detektált (default) nyelv angol.

a detektálás még init-ben történik, minden más controller logika előtt.

a cikkek controller megnézi h a sluggal azonosított tartalomhoz tatozó nyelv ugyanaz-e mint a detektált és átírányít ha kell.
(ebből a szempontból lényegtelen is h épp milyen aliason fut a kontroller)

jelenleg ez tűnik a legjobb megoldásnak:

example.com/cikkek/magyar-cim-slug?lang=hu
example.com/cikkek/english-title-slug?lang=en

így kényszerítve az i18n/l10n-re adott nyelvet, a facebookra szánt urlekben.
(share gomb lesz hozzájuk).

csak ilyenkor meg ottvan az h ha az user kézzel copyzza be az urlt, az i18n ugyanúgy átváltja a nyelvet angolra face-n (mivel nem tud detektálni), mint amikor pl a magyar linket küldi el monjuk japánul beszélő kollégának az user, aki böngésző beállítások stb miatt angolul, default nyelven (mivel a japán nem elérhető) látja majd a cikket.

(és akkor még csak két nyelv van, lehetne mondjuk 5 is)

szóval: tudok-e detektálni nyelvet amikor a facebook scrapeli az url-em?
3

Nem kell átirányítani

Poetro · 2012. Már. 8. (Cs), 14.50
Szerintem nem kell átirányítani, ha erre nincs konkrét kérés. Azaz nincs megadva semmi, ami alapján azonosítani lehetne a lekérdező nyelvét, akkor azon a nyelven kell kiszolgálni, amelyiken kérte (ez ugye kiderül az URL alapján).
4

hmm

razielanarki · 2012. Már. 8. (Cs), 15.36
van ebben valami, de a nyelv detektálás nem csak a cikk nyelvére vonatkozik hanem az egész oldaléra: menük, feliratok, egyéb blokkok nyelve is ez lesz.

azt hogy mi az oldal nyelve már régen eldőlt akkor amikor a cikket lekérdezzük.

1. azt sem szeretnénk h ha angolul néz egy cikket az user, és átvált magyarra, akkor hirtelen 404-et kapjon,
2. illetve ha google-ből érkezik angolul, de mondjuk francia a preferrált nyelve, akkor lehetőleg franciául lássa az oldalt/tartalmat

ez okokból az átirányítás (ami egy... hack az i18n megkerülésével, konkrétan belekérdezünk a táblákba 2-t h ez a slug melyik tartalomhoz érhető el, és ennek mi az aktuális nyelven a slugja)

persze azt sem szeretnénk, hogy ha valaki az angol oldalt nézi, de valahol (google, kapta mailben) rákattint egy magyar linkre akkor kérdés nélkül(!!) átváltsa az egész oldal nyelvét magyarra...

szóval ez mind tök jól működik, amígnem egyszrcsak facebookon megosztja a fancia linket, és angolul látszik... onnan rákattintva egy francia ismerőse ismét franciául fogja látni nálunk, a japán japánul (persze ha elérhető a nyelv az oldalon)

(ideális esetben az lenne a facebookos link preview nyelve, amilyen nyelven nézi a facebookot a megosztó user)

szóval továbbra is kérdés: facebook scrape nyelvdetektálás.
5

Miért?

Poetro · 2012. Már. 8. (Cs), 16.27
De miért akarod átirányítani a felhasználót, ha ő azt a tartalmat akarja megnézni. A címoldalon még megértem, na de a tartalomnál ez teljesen felesleges szerintem. Eleve megzavarja a felhasználót, hogy mást kap, mint a másik ugyanarra az oldalra látogatva.
6

ugyanaz

razielanarki · 2012. Már. 8. (Cs), 17.23
elvileg ugyanazt fogja látni, csak a saját nyelvére lokalizálva
7

Nem ugyanaz

Poetro · 2012. Már. 8. (Cs), 17.34
Nem ugyanaz, ha más nyelven látja.
8

ok.

razielanarki · 2012. Már. 8. (Cs), 17.37
hát legyen.

és a facebook crawlerről mit tudsz? :) ;)
9

Crawlerek

Poetro · 2012. Már. 8. (Cs), 17.48
És mit tudtál meg más crawler-ekről, mint amilyen a Google, a Bing, vagy a Yahoo crawlerje? Nekik is mindig csak az angol nyelvű tartalmat fogod megmutatni, hiába kérik le a magyar oldalt? Ez így nem kerek. Sőt rengeteg oldal így nem lesz beindexelve, amit szerintem nem szeretnél. Sőt, nem csak hogy nem lesz beindexelve, hanem úgy is fog rájuk tekinteni a kereső, mintha az oldalad csak angol nyelvű.
10

ott a pont.

razielanarki · 2012. Már. 8. (Cs), 19.20
ok meggyőztél, ez így teljesen valid nézőpont.

akkor tehát úgy illene, akkor "nem" redirectelgetünk, hanem megkapja a tartalmat a link nyelvén?

olyankor mi van ha userünk szépen beállítja az oldalt mondjuk szlovákra, majd rákattan egy angol linkre pl googleban, ami így az egész oldalt angolul hozza be, átállítva az user nyelvét angolra (ugye ilyenkor minden angolul kellene legyen az oldalon)
ez elfogadhatóbb, nem zavarja meg az egyszeri felhasználót?

vagy különböztessük meg a botokat és a usereket?
11

Semmiképp

Poetro · 2012. Már. 8. (Cs), 19.25
Semmiképp se különböztesd meg a felhasználókat és a botokat. Már csak azért se, mert akkor büntethet téged a bot üzemeltetője. Egyszerűen mutasd meg neki azt a tartalmat amit kért. Majd ha akarja, akkor átnavigál a neki tetsző nyelvű oldalra.
12

igen ezen agyaltam én is. a

razielanarki · 2012. Már. 8. (Cs), 19.45
igen ezen agyaltam én is.

a következőre jutottam:

- ha angol az url (articles/), akkor force-oljuk az angol nyelvet
- ha magyar (cikkek/), akkor forceoljuk a magyart
- stb

de, ha már van nyelvi sütije az usernek, akkor a forceolás lényegtelenné válik, mindenképp a válaszott nyelven kapja az oldalt (redirectelünk)

illetve ott van még az is, h az index oldalt milyen nyelven szolgáljuk ki?
itt nem lesz fb share, szóval csak keresők szemponjából:
elég az ha rajta van a nyelvválasztó "widget", "rákattint"-e a google pl, és beindexeli-e több nyelven is az oldalt?
13

Igen

Poetro · 2012. Már. 8. (Cs), 21.02
Ha sütik nélkül végig tud navigálni az oldalon, akkor teljesen jó. Kell valami nyelvválasztó link, amivel megváltozik a nyitóoldal nyelve, és gondolom onnantól végig tud navigálni az összes fontos oldalra.
14

Evvel kapcsolatban van rossz

Karvaly84 · 2012. Már. 9. (P), 00.53
Evvel kapcsolatban van rossz tapasztalatom, ami pl. a Mozilla dokumentációs oldalán dühített fel nagyon:

Detektálják a nyelvet, még akkor is ha átírom az url-ben a hu-t en-re, és van olyan mikor egy üres oldal jön be mert magyarul nincs megírva a dokumentáció. Tehát csínján az ilyenekkel...