facebook scrape nyelv detektálás
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)
■ 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)
Szerintem: example.com/cikke
example.com/cikkek/magyar-cim-slug
example.com/articles/english-title-slug
Így könnyű azonosítani, melyik milyen nyelvű.
igen de
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?
Nem kell átirányítani
hmm
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.
Miért?
ugyanaz
Nem ugyanaz
ok.
és a facebook crawlerről mit tudsz? :) ;)
Crawlerek
ott a 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?
Semmiképp
igen ezen agyaltam én is. a
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?
Igen
Evvel kapcsolatban van rossz
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...