2011-09-30 5 views
13

내 웹 사이트가 여러 언어로되어 있고 버튼과 같은 FB가 있습니다. 다른 언어로 된 게시물을 갖고 싶습니다.로케일로 작업 한 Facebook 메타 태그가 작동하지 않습니다.

og : locale 및 og : locale : alternate 메타 태그를 사용하는 경우 스크래퍼는 "locale"매개 변수와 "X-Facebook-Locale"매개 변수를 전달하는 내 사이트 정보를 얻지 만 그것은 둘 다 보내지 않습니다. (https://developers.facebook.com/docs/beta/opengraph/internationalization/). 따라서 게시물은 항상 en_US로 끝납니다.

누구나 같은 문제가 있습니까?

+0

이 문제를 해결할 수있는 방법을 찾으셨습니까? –

답변

0

Javascript SDK를로드 할 때 사용한 언어는 무엇입니까? 그걸 간과하기 쉽습니다. '

기본 하나는 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

내가 같은 문제가 있습니다를 참조하십시오.

좋아요 버튼은 og 메타 태그 값이 아닌 자신의 속성 data-href="www.example.com/yourpage"만을 Facebook에 보냅니다. 이후 Fb가 메타 태그를 귀하의 페이지로 긁어 내고 벽 게시물을 만듭니다.
그래서 게시물은 항상 귀하의 페이지 기본 언어로되어 있습니다. 사용자 언어의 게시물을 가지고

하나 개의 솔루션은 다음과 같습니다 제목과 OG :

  • 이 yourpage 메타 태그의 자책골을 userlanguage을 얻고 표시 할 수있는 기능을 제공 마찬가지로 버튼의 데이터 HREF URL로 ?lang=userlanguage 추가 설명 적절한 번역 (예 : PHP $ _GET)

그래서 Fb는 사용자 언어로 귀하의 페이지를 긁어서 로캘 게시물을 생성합니다.

불행하게도 FB마다 다른 URL ?lang=userlanguage1, userlanguage2에 대해 하나의 객체를 생성 ... 모든 객체는 자신의 팬 목록이 있습니다.
그래서 귀하의 페이지 번역에는 로케일 팬이 있습니다.
:-(


비슷한 질문 :이 작업 The documentation이 매우 상세한하지 얻었다 Open Graph Localization

17

여기에 자세한 내용은 여기

있습니다 내 오픈 그래프 로케일 태그입니다..

<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 콘텐츠를 요청한 경우 이 응답으로 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 프랑스어 내 페이지를 처리하기 위해 페이스 북 스크레이퍼를 요청합니다. 두 번째 요청에는 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을 게시하면 상태 상자에 영문 데이터가 채워집니다. Facebook의 자체 인터페이스가 올바른 로케일을 요청하도록 구성되어 있지 않은 것으로 보입니다.

이 모든 노력에도 불구하고 아무 것도 완성되지 않은 것 같습니다 (Facebook 번역 앱을 통해 내 문자열을 번역해도 작동하지 않으므로 놀랄 일이 아닙니다).

그래도 질문에 답합니다. 누군가는 왜 Facebook.com 인터페이스가 올바른 로케일을 요청하지 않는지를 판단 할 수 있습니다.

+1

나는 기본적으로 당신과 같은 문제가 있었지만 다른 로케일에서 페이 스북을 찍은 적이 없었습니다. 어제 페이스 북 개발자 인 Stockholm의 페이스 북 개발자 Garage에서 만났습니다. 나는 그 문제를 설명했고 그의 대답은 : 당신이 알아야 할 모든 것은 문서 페이지에있다. 당신이해야 할 마법은 없습니다. 그는 2 달 전에 OG 개체에 대한 다중 언어 지원을 추가하고 성공했습니다. 그는 조언을 다시 시도하고 모든 버그를보고했습니다. 그들은 버그 리포트에 상당히 빨리 반응하지만 버그를보고 할 시간이나 열정이 없습니다. ( –

+2

중요한 점을 조금 더 명확하게하기 위해 문서를 업데이트했습니다. –

+3

안녕하세요, 저는 당신과 같은 문제가 있습니다. ** 이 모든 노력 끝에 프랑스 Facebook.com에 가서이 URL을 게시하면 상태 상자에 영어 데이터가 채워집니다 ** 해킹에 대한 힌트를 찾았습니까? – user2686101

1

마침내 메타 태그 (og : locale 및 og : locale : alternate)의 모든 로케일 값을 소문자로 설정하여 작업 할 때까지 동일한 문제가 발생했습니다.

에 체크 아웃 : http://developers.facebook.com/bugs/309825175774568?browse=search_5033cc14f42016961266549

올바르게 X-페이스 북-지역 및 fb_locale을 보내, 원하는 발생하게 지원되는 로케일로 언어 설정을 페이스 북에 가고 변화하는 것을 다시 스크래핑을 수행 한 후 나를위한 결과.

Btw : 사용자 로캘을 og : locale : alternate에 나열되지 않은 것으로 설정하면 header/get 매개 변수를 보내지 않습니다.

3

페이스 북의 로케일 처리는 이제 주 오픈 그래프 로케일과 씨름 한 후

완전히 일치하지 않는다, 나는 사용자의 로케일에 따라 텍스트를 변경과 콘텐츠를 게시 할 수 있었다. 링크를 위해, 나는 여전히 예상 된 결과를 얻을 수 없다.여기

내 관측이다 :

OG : 디버거에서 로케일이 기본적으로 내 실제 페이스 북의 로케일을 보여줍니다. og : locale : alternate 링크를 클릭하면 객체 속성과 인터페이스 언어가 변경됩니다. 내 생각 엔 디자인에 의한 것 같아.

입력 URL에 fb_locale이 추가되지 않은 '원시 그래프 문서 정보'섹션에는 기본 데이터가 표시됩니다. fb_locale이 설정되고 대/소문자가 혼합 된 경우 Raw Open Graph Document Information 섹션이 매개 변수에 따라 변경됩니다. 'Object properties'섹션에는 실제/선택된 로케일을 기반으로 한 데이터가 여전히 표시됩니다. fb_locale이 소문자이면 '입력 URL을 파싱하는 중 오류가 발생했습니다. 데이터를 스크랩하지 않았습니다.'라는 메시지가 반환됩니다.

'locale'매개 변수가 디버거 (입력 아님) URL에 추가 된 경우에도 마찬가지입니다. 대소 문자가 혼합 된 형식 인 경우 개체 속성 섹션과 인터페이스 언어가 변경됩니다. 그러나,

놀랍게도, 그래프 API는 반대로 행동 (반환 기본/현재 로케일) 나는 소문자를 통과 할 때 아무것도하지 않는다 : 나는 PHP SDK와 함께 재 - 긁어 요청할 때

    1. 로캘이 소문자로 전달 될 때만 콘텐츠가 업데이트되지만이 경우 (!) 반환되는 응답에는 locale : locale 매개 변수가 없습니다.이 매개 변수는 X-Facebook 로캘 헤더 또는 fb_locale 매개 변수 존재했다.

      응답의 모든 데이터는 기본 로켈입니다. 그러나 벽 게시물이 업데이트되고 텍스트가 내 Facebook 로캘 설정에 따라 올바르게 표시됩니다.

    2. 로켈을 대소 문자가 혼합 된 형식 (예 : 설명서의 정의대로)으로 전달하면 요청에서 '지원되지 않는 게시 요청'오류가 반환됩니다. Facebook php SDK의 api 호출 대신 php CURL 함수를 사용할 때 en_GB는 예외로 fb_locale 및 현지화 된 (영어) 콘텐츠도 포함되어 있지만 개체 속성/벽 게시물은 업데이트되지 않으며 en_GB도 업데이트되지 않습니다. . 다른 언어의 경우 'Unspported post request'가 반환됩니다.

  1. 나는 개체의 ID (디버거 페이지 하단에있는 ID - 테이블 'link_stat'에서 'comments_fbid'필드를 쿼리하여)를 사용하면 URL 대신 :

    1. 은 대소 문자가 혼합되어 있으며 응답에는 모든 로캘에 대해 올바른 텍스트와 fb_locale이 포함되어 있지만 업데이트 된 것은 없습니다. og : updated_time은 디버거에서 변경되지 않지만 https://graph.facebook.com/[object ID에서

    2. 로 업데이트됩니다. 결과는 1.1에서 설명한 것과 같습니다. ? 나는] https://graph.facebook.com/[object ID를 조회 할 때 로케일이 = EN_GB, 혼합의 경우 로케일과 , 그것은 예상 된 결과를 반환 : 그래프 질의에서

  2. 는 동작은 위의 반대 다시입니다 소문자 로케일의 경우, 로케일 없음 (로케일 : 대체) 태그가 설정된 기본 버전을 리턴합니다.:

이 그래프 API를 엔드 포인트 및 디버거가 불가능 모두에서 같은 reponse를 얻을 수있어 다른 로케일을 취급하는 것이 가능 -o?

btw와 소문자 로케일로 피드에 로컬 화 된 게시물을 관리했습니다. 텍스트는 uer의 로케일을 기반으로 표시됩니다.

이제 내 문제는 모든 링크가 로케일 특정 정보없이 동일한 정식 URL을 가리키고 있다는 것입니다. 왜냐하면 살바도르가 말했듯이 다른 개체를 생성하기 때문입니다. 내 게시물을 참조하십시오 : how to get the locale of a facebook user clicking on a localised object's link?

관련 문제