我有一个支持多个区域设置的opengraph对象https://example.com/object,特别是en_US
和fr_FR
,第一个是默认区域。
在Facebook的对象调试器中解析它会正确地将区域设置显示为og:locale:alternate
属性,将默认区域设置显示为og:locale
。单击每个区域设置链接确实会在预期的区域设置中显示该对象。
但是,当用户喜欢该对象(将https://example.com/object作为对象URL传递,使用任何类似的框区域设置,并且无论在Facebook中为用户定义了哪个区域设置),她的流始终显示该对象其默认的en_US
区域设置。
这是Facebook的问题,还是我错过了什么?
注意:
此问题与this one类似。然而,重点是通过Facebook抓取URL,这对我来说很好:当抓取网址时,fb_locale
和X-Facebook-Locale
都正确传递。在这里,重点是使用正确的区域设置
答案 0 :(得分:2)
文档有点令人困惑。
og:locale
不应设置为默认语言环境;它应该设置为您当前返回的任何区域。
具体而言,如果Facebook要求fb_locale=fr_FR
,您需要在回复中返回<meta property="og:locale" content="fr_FR">
。
确实有意义。当Facebook在响应中看到og:locale="en_US"
时,它认为您没有要返回的法语页面,因此它使用了已经获得的英语内容。它根本没有记录得很好。
以下是我的英语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" />
法语:
<meta property="og:locale" content="fr_CA" />
<meta property="og:locale:alternate" content="en_US" />
<meta property="og:locale:alternate" content="fr_CA" />
让Facebook在对话框中实际使用正确的内容时,您的里程可能会有所不同,但这至少会让刮刀识别您的内容。