Я получил это работает. Документация не очень подробная;вот подробности.
Вот мои языковые теги Open Graph:
<meta property="og:locale" content="en_US" />
<meta property="og:locale:alternate" content="en_US" />
<meta property="og:locale:alternate" content="fr_CA" />
ОЧЕНЬ ВАЖНО: Документация создает впечатление, что og:locale
всегда должен отражать локаль страницы по умолчанию.Это не вариант;это предотвратит извлечение скребком других языков.og_locale
должен отражать текущую локаль страницы. Другими словами, если скребок (или пользователь) запрашивает fr_CA
содержимое, убедитесь, что og_locale
установлено на fr_CA
в ответе.
Укажите все возможные локали с помощью og:locale:alternate
.Таким образом, независимо от того, запросил ли скребок en_US
или fr_CA
, он все еще знает, что оба существуют.
Вот я прошу скребок Facebook повторно обработать мою страницу:
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"
}
}
Скребок правильно возвращает данные для локали по умолчанию, но в соответствии с документацией , похоже, что скребок должен также очищать альтернативные локали;это не вариант.Из приведенного выше ответа видно, что он видит альтернативные локали, но не обрабатывает их.
Итак, вот я специально просил скребок Facebook обработать мою страницу en français :
curl -d "id=https://apps.facebook.com/everydaybarilla/&scrape=true&locale=fr_CA" https://graph.facebook.com
На этот раз я правильно вижу два запроса на мой сервер со скребка.Во втором запросе заголовок X-Facebook-Locale
и параметр URL fb_locale
имеют правильное значение 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"
}
}
Success!
Конечно, после всех этих усилий, когда я захожу на французский Facebook.com и публикую этот URL, статускоробка заполнена ... с английскими данными.Кажется, что собственные интерфейсы Facebook не настроены для запроса правильного языка.
Так что даже при всех этих усилиях, кажется, ничего не было выполнено (переводы моих строк через приложение перевода Facebook тоже не работают,поэтому я не удивлюсь).
Тем не менее, он действительно отвечает на вопрос.Возможно, кто-то еще может определить, почему интерфейсы Facebook.com не запрашивают правильную локаль.