2011-09-30 40 views
13

मेरी वेबसाइट बहु भाषा है और मेरे पास एक एफबी बटन है। मैं अलग-अलग भाषाओं में पोस्ट की तरह चाहूंगा।फेसबुक मेटा टैग लोकेल के साथ स्क्रैप किए गए

फेसबुक प्रलेखन के अनुसार, यदि मैं मेटा टैग का उपयोग करता हूं और: लोकेल और ओजी: लोकेल: वैकल्पिक, स्क्रैपर को मेरी साइट जानकारी पैरामीटर "लोकेल" और हेडर "एक्स-फेसबुक-लोकेल" से गुजरती है, लेकिन यह न तो भेज रहा है। (https://developers.facebook.com/docs/beta/opengraph/internationalization/)। तो पोस्ट हमेशा en_US में समाप्त होता है।

कोई भी एक ही समस्या है?

+0

क्या आपको इस व्यवहार के लिए समाधान मिला? –

उत्तर

0

जावास्क्रिप्ट एसडीके लोड करते समय आपने कौन सी भाषा निर्दिष्ट की थी? इसे अनदेखा करना आसान है। '

डिफ़ॉल्ट en_US है, js.src लाइन

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=127211380649475"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 
0

मैं एक ही समस्या है देखते हैं।

पसंद बटन फेसबुक पर केवल अपनी ही विशेषता data-href="www.example.com/yourpage" भेजता है, न कि मेटा टैग मानों के लिए। बाद में एफबी स्क्रैप और मेटा टैग आपके पेज में, और इनमें से वॉल पोस्ट बनाता है।
तो व्यावहारिक रूप से पोस्ट हमेशा आपकी पृष्ठ डिफ़ॉल्ट भाषा में है। उपयोगकर्ता भाषा में पदों के लिए

एक समाधान है:

  • बटन की तरह के डेटा-href URL को ?lang=userlanguage जोड़े
  • yourpage userlanguage हो और मेटा टैग ओग प्रदर्शित करने की क्षमता दें: शीर्षक और ओग: विवरण में उचित अनुवाद

तो Fb उपयोगकर्ता भाषा में yourpage स्क्रैप जाएगा और एक स्थान के पद पैदा करेगा (php $ _GET के साथ जैसे)।

दुर्भाग्य Fb हर अलग यूआरएल ?lang=userlanguage1, userlanguage2 के लिए एक एकल वस्तु बनाने के ... और हर वस्तु अपने ही प्रशंसकों सूची है।
तो आपके पृष्ठ के प्रत्येक अनुवाद में उनके लोकेल प्रशंसकों होंगे।
:-(


इसी प्रकार के प्रश्न: Open Graph Localization

17

मुझे मिल गया यह काम कर रहे The documentation बहुत विस्तृत नहीं है, यहाँ विवरण हैं

यहाँ मेरी ओपन ग्राफ़ स्थान टैग हैं:।

<meta property="og:locale" content="en_US" /> 
<meta property="og:locale:alternate" content="en_US" /> 
<meta property="og:locale:alternate" content="fr_CA" /> 

बहुत महत्वपूर्ण:The documentation ऐसा लगता है कि og:locale हमेशा पृष्ठ के "डिफ़ॉल्ट" लोकेल को प्रतिबिंबित करना चाहिए। यह मामला नहीं है; ऐसा करने से स्क्रैपर को अन्य भाषाओं को पुनर्प्राप्त करने से रोका जाएगा। og_locale पृष्ठ के वर्तमान लोकेल को प्रतिबिंबित करना चाहिए। दूसरे शब्दों में, यदि स्क्रैपर (या उपयोगकर्ता) fr_CA सामग्री का अनुरोध करता है, तो सुनिश्चित करें कि og_locale प्रतिक्रिया में fr_CA पर सेट है।

og:locale:alternate साथ सभी संभव स्थानों निर्दिष्ट करें। इस तरह, क्या स्क्रैपर ने en_US या fr_CA के लिए पूछा है, यह अभी भी जानता है कि दोनों मौजूद हैं।

यहाँ मुझे फेसबुक स्क्रेपर पूछ रहा है-प्रक्रिया फिर से मेरा पेज:

curl -d "id=https://apps.facebook.com/everydaybarilla/&scrape=true" https://graph.facebook.com 

यहाँ प्रतिक्रिया है:

{ 
    "url": "http://apps.facebook.com/everydaybarilla/", 
    "type": "website", 
    "title": "Barilla\u2019s Every Day, Every Way Contest", 
    "locale": { 
     "locale": "en_us", 
     "alternate": [ 
     "fr_ca" 
     ] 
    }, 
    "image": [ 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/5.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/4.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/3.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/en-2.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/en-1.png" 
     } 
    ], 
    "description": "Barilla Canada is whisking one lucky winner and a guest off to Italy on an 8-day Italian culinary adventure for 2 in the Barilla Every Day, Every Way Contest!", 
    "site_name": "Barilla\u2019s Every Day, Every Way Contest", 
    "updated_time": "2012-04-16T17:59:38+0000", 
    "id": "10150594698421968", 
    "application": { 
     "id": "317271281656427", 
     "name": "Barilla\u2019s Every Day, Every Way Contest", 
     "url": "http://www.facebook.com/apps/application.php?id=317271281656427" 
    } 
} 

स्क्रेपर सही ढंग से सामान्य स्थान के लिए डेटा देता है, लेकिन the documentation के अनुसार , ऐसा लगता है कि खुरचनी को वैकल्पिक लोकेशंस को भी खरोंच करना चाहिए; यह मामला नहीं है। स्पष्ट रूप से ऊपर की प्रतिक्रिया से यह वैकल्पिक लोकेशंस को देखता है, लेकिन यह उन्हें संसाधित नहीं करता है।

curl -d "id=https://apps.facebook.com/everydaybarilla/&scrape=true&locale=fr_CA" https://graph.facebook.com 

इस बार, मैं सही ढंग से स्क्रेपर से अपने सर्वर के दो अनुरोध देखें:

तो, यहाँ मुझे विशेष रूप से मेरा पेज en français कार्रवाई करने के लिए फेसबुक स्क्रेपर पूछ है। दूसरे अनुरोध में X-Facebook-Locale शीर्षलेख दोनों हैं और fb_locale URL पैरामीटर सही ढंग से fr_CA पर सेट है। और POST सही ढंग से फ्रेंच प्रतिक्रिया देता है:

{ 
    "url": "http://apps.facebook.com/everydaybarilla/?fb_locale=fr_CA", 
    "type": "website", 
    "title": "Concours Tous les jours, de toutes les fa\u00e7ons de Barilla", 
    "locale": { 
     "locale": "fr_ca", 
     "alternate": [ 
     "en_us", 
     "fr_ca" 
     ] 
    }, 
    "image": [ 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/5.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/4.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/3.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/fr-2.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/fr-1.png" 
     } 
    ], 
    "description": "Un heureux gagnant et son invit\u00e9(e) partiront \u00e0 destination de l\u2019Italie pour une aventure culinaire de 8 jours pour 2 personnes (valeur au d\u00e9tail approximative de 15 000 $)!", 
    "site_name": "Barilla\u2019s Every Day, Every Way Contest", 
    "updated_time": "2012-04-16T18:11:27+0000", 
    "id": "10150594698421968", 
    "application": { 
     "id": "317271281656427", 
     "name": "Barilla\u2019s Every Day, Every Way Contest", 
     "url": "http://www.facebook.com/apps/application.php?id=317271281656427" 
    } 
} 

सफलता!

बेशक

, यह सब प्रयास के बाद, जब मैं फ्रेंच Facebook.com के पास जाकर इस URL पोस्ट, स्थिति बक्से से भर जाता है ... अंग्रेजी डेटा के साथ। ऐसा लगता है कि फेसबुक के अपने इंटरफेस सही लोकेल का अनुरोध करने के लिए कॉन्फ़िगर नहीं किए गए हैं।

तो भी यह सब प्रयास के साथ, कुछ भी नहीं पूरा किया गया है करने के लिए (फेसबुक अनुवाद एप्लिकेशन के माध्यम से अपना तार के अनुवाद या तो काम नहीं कर रहे हैं, इसलिए मुझे लगता है कि मैं हैरान नहीं होना चाहिए) लगता है।

फिर भी, यह सवाल का जवाब है। शायद कोई और यह निर्धारित कर सकता है कि फेसबुक.com इंटरफेस सही लोकेल का अनुरोध क्यों नहीं कर रहा है। छोटे अक्षरों में (वैकल्पिक: स्थान और ओग: स्थान ओग)

+1

मुझे मूल रूप से आपके जैसी ही समस्याएं थीं लेकिन फेसबुक को कभी भी अन्य लोकेशंस में स्क्रैप करने के लिए कभी नहीं मिला। मैं स्टॉकहोम में फेसबुक डेवलपर गैरेज में कल फेसबुक से एक डेवलपर से मुलाकात की। मैंने समस्या की व्याख्या की और उसका जवाब था: आपको जो कुछ भी जानने की जरूरत है वह दस्तावेज़ पृष्ठ में है। आपको जादू करने के लिए कुछ भी नहीं है। उन्होंने दो महीने पहले ओजी वस्तुओं के लिए बहु भाषा समर्थन जोड़ने की कोशिश की और सफल हुए। उनकी एकमात्र सलाह फिर कोशिश की गई और सभी बग की रिपोर्ट की गई। वे इन बग रिपोर्टों को काफी तेज़ी से जवाब देंगे लेकिन मेरे पास बग की रिपोर्ट करने के लिए समय या ऊर्जा नहीं है :( –

+2

अपने महत्वपूर्ण बिंदु को थोड़ा स्पष्ट बनाने के लिए दस्तावेज़ों को अपडेट किया गया –

+3

हाय, मुझे आपके जैसा ही समस्या है। ** इस प्रयास के बाद, जब मैं फ्रांसीसी फेसबुक.com पर जाता हूं और इस यूआरएल को पोस्ट करता हूं, तो स्टेटस बॉक्स पॉप्युलेट होता है ... अंग्रेजी डेटा के साथ। ** क्या आपको इसे हैक करने के लिए कोई संकेत मिले? – user2686101

1

मैं अंत में मेटा टैग में सभी स्थान मूल्यों की स्थापना द्वारा काम करने के लिए इसे प्राप्त करने तक ही मुद्दों था।

इस की जाँच करें: http://developers.facebook.com/bugs/309825175774568?browse=search_5033cc14f42016961266549

कि और फिर से scraping, करने के बाद समर्थित स्थान के लिए फेसबुक पर जाकर और भाषा सेटिंग को बदलने के लिए सही ढंग से एक्स-फेसबुक-लोकेल और fb_locale भेजना होगा, और वांछित गति प्रदान मेरे लिए परिणाम

Btw: एक ओग में सूचीबद्ध नहीं करने के लिए उपयोगकर्ता का स्थान निर्धारित करना: स्थान: वैकल्पिक हेडर भेज नहीं होता/पैरामीटर मिलता है।

3

फेसबुक के स्थान संचालन पूरी तरह से असंगत

सप्ताह के लिए खुला ग्राफ स्थानों के साथ अब कुश्ती के बाद है, मैं उपयोगकर्ता किसी भी स्थान के आधार पर ग्रंथों को बदलने के साथ सामग्री पोस्ट करने में कामयाब रहे। हालांकि लिंक के लिए, मैं अभी भी अपेक्षित परिणाम प्राप्त करने में असमर्थ हूं।

यहाँ मेरी टिप्पणियों हैं:

ओग: डीबगर में स्थानीय डिफ़ॉल्ट, मेरे वास्तविक फेसबुक स्थान से पता चलता है। Og पर क्लिक करना: लोकेल: वैकल्पिक लिंक ऑब्जेक्ट गुणों के साथ-साथ इंटरफ़ेस भाषा बदलता है। मुझे लगता है कि यह डिजाइन द्वारा है।

'कच्चे ओपन ग्राफ दस्तावेज़ सूचना' अनुभाग, इनपुट यूआरएल में शामिल fb_locale के बिना, डिफ़ॉल्ट डेटा दिखाता है। यदि fb_locale सेट किया गया है और मिश्रित मामले में, पैरा ओपन ग्राफ दस्तावेज़ सूचना अनुभाग पैरामीटर के अनुसार बदल दिया गया है। 'ऑब्जेक्ट गुण' अनुभाग अभी भी वास्तविक/चयनित लोकेल के आधार पर डेटा दिखाता है। यदि fb_locale लोअरकेस में है, तो यह 'इनपुट यूआरएल पार्स करने में त्रुटि देता है, कोई डेटा स्क्रैप नहीं किया गया था।'

डीबगर (इनपुट नहीं) यूआरएल में संलग्न 'लोकेल' पैरामीटर के लिए भी यही बात सच है। यदि यह मिश्रित केस प्रारूप में है, तो ऑब्जेक्ट प्रॉपर्टी सेक्शन और इंटरफ़ेस भाषा बदल दी गई है। हालांकि, यह कुछ भी नहीं है जब मैं छोटे अक्षरों में इसे पारित (रिटर्न डिफ़ॉल्ट/वर्तमान स्थान)

हैरानी की बात है, ग्राफ एपीआई विपरीत ढंग से काम कर रहा है करता है:

  1. जब मैं अनुरोध करता हूँ php SDK के साथ एक फिर से खुरच

    1. सामग्री केवल इस मामले में अद्यतन किया जाता है जब वातावरण छोटे अक्षरों में पारित हो जाता है, लेकिन, प्रतिसाद लौटाया स्थान नहीं है (!): स्थान पैरामीटर है, जो अगर सेट किया गया है या तो एक्स-फेसबुक स्थान शीर्ष लेख या fb_locale पैरामीटर उपस्थित था।

      प्रतिक्रिया में सभी डेटा डिफ़ॉल्ट लोकेल में है। हालांकि, दीवार पोस्ट अपडेट किया गया है और टेक्स्ट मेरी फेसबुक लोकेल सेटिंग्स के अनुसार सही ढंग से प्रदर्शित होता है।

    2. यदि स्थानीय मिश्रित केस प्रारूप में पास किए जाते हैं - जैसा कि परिभाषित किया गया है - दस्तावेज - अनुरोध 'असमर्थित पोस्ट अनुरोध' त्रुटि देता है। फेसबुक php एसडीके की एपीआई कॉल के बजाय php curl फ़ंक्शन का उपयोग करते समय, en_GB एक अपवाद है, जहां प्रतिक्रिया में fb_locale और स्थानीयकृत (अंग्रेज़ी) सामग्री भी होती है, लेकिन ऑब्जेक्ट गुण/दीवार पोस्ट अपडेट नहीं होते हैं, न ही en_GB के लिए । अन्य भाषाओं के लिए, 'असमर्थित पोस्ट अनुरोध' वापस कर दिया गया है।

  2. जब मैं वस्तु के आईडी (आईडी डिबगर पृष्ठ के तल पर पाया - टेबल 'link_stat' से 'comments_fbid' फ़ील्ड पूछताछ की) का उपयोग URL के बजाय:

    1. मिश्रित केस लोकेशंस के साथ

      , प्रतिक्रिया में सभी स्थानीय लोगों के लिए सही टेक्स्ट और fb_locale शामिल है, लेकिन उनमें से कोई भी अपडेट नहीं किया गया है। og: अद्यतन_टाइम डीबगर में अपरिवर्तित है, लेकिन इसे https://graph.facebook.com/[object आईडी पर अपडेट किया गया है]

    2. निम्न केस लोकेशंस के साथ, परिणाम 1.1 में वर्णित जैसा ही है। ? जब मैं https://graph.facebook.com/[object आईडी क्वेरी करने के लिए] की कोशिश लोकेल = en_GB, मिश्रित-केस स्थानों के साथ , यह उम्मीद परिणाम देता है, :

  3. ग्राफ प्रश्नों में, व्यवहार फिर से ऊपर के विपरीत है लोअर-केस लोकेशंस के साथ, यह डिफ़ॉल्ट संस्करण देता है जिसमें कोई लोकेल नहीं होता है (केवल लोकेल: वैकल्पिक) टैग सेट होता है।: -O

क्या यह संभव है कि ग्राफ एपीआई endpoint और डीबगर स्थानों को अलग ढंग से व्यवहार करता है, यह असंभव दोनों से एक ही प्रतिक्रिया प्राप्त करने के लिए कर रही है?

बीटीडब्ल्यू कम मामले वाले इलाकों के साथ, मैं फ़ीड पर स्थानीयकृत पोस्ट करने में कामयाब रहा, जहां टेक्स्ट यूयर के लोकेल के आधार पर प्रदर्शित होता है।

अब मेरी समस्या यह है कि सभी लिंक समान लोकल-विशिष्ट जानकारी के बिना उसी कैननिकल यूआरएल को इंगित कर रहे हैं, क्योंकि - साल्वाडोर ने कहा - ऐसा करने से विभिन्न वस्तुओं का निर्माण होगा। मेरी पोस्ट यहां देखें: how to get the locale of a facebook user clicking on a localised object's link?