我们有一个支持多语言环境的网站,但目前我们的大多数请求都是通过瑞典数据中心路由的,所以我们所有的opengraph元数据都是用瑞典语返回的。
我已经更新了我们的代码,以查找X-Facebook-Locale请求头和fb_locale查询参数,并根据它们设置站点的区域设置。我还添加了站点支持的所有语言环境的元属性。
该站点为:
http://mixrad.io/mixes/seeded/?artists=Madonna%2CSheryl%20Crow%2CKylie%20Minogue&s=fb8e5e45-a82c-4577-a01a-81ab358a5a81
我们的opengraph标签是:
<meta name="description" content="MixRadio. It’s like having your own personal radio station. #MixRadio">
<meta property="og:site_name" content="MixRadio"/>
<meta property="og:locale" content="en_GB"/>
<meta property="og:locale:alternate" content="de_AT"/>
<meta property="og:locale:alternate" content="de_CH"/>
<meta property="og:locale:alternate" content="de_DE"/>
<meta property="og:locale:alternate" content="en_AU"/>
<meta property="og:locale:alternate" content="en_CA"/>
<meta property="og:locale:alternate" content="en_GB"/>
<meta property="og:locale:alternate" content="en_IE"/>
<meta property="og:locale:alternate" content="en_IN"/>
<meta property="og:locale:alternate" content="en_SG"/>
<meta property="og:locale:alternate" content="en_US"/>
<meta property="og:locale:alternate" content="en_ZA"/>
<meta property="og:locale:alternate" content="es_ES"/>
<meta property="og:locale:alternate" content="es_MX"/>
<meta property="og:locale:alternate" content="fi_FI"/>
<meta property="og:locale:alternate" content="fr_CA"/>
<meta property="og:locale:alternate" content="fr_CH"/>
<meta property="og:locale:alternate" content="fr_FR"/>
<meta property="og:locale:alternate" content="id_ID"/>
<meta property="og:locale:alternate" content="it_IT"/>
<meta property="og:locale:alternate" content="nb_NO"/>
<meta property="og:locale:alternate" content="nl_NL"/>
<meta property="og:locale:alternate" content="pl_PL"/>
<meta property="og:locale:alternate" content="pt_BR"/>
<meta property="og:locale:alternate" content="pt_PT"/>
<meta property="og:locale:alternate" content="ru_RU"/>
<meta property="og:locale:alternate" content="sv_SE"/>
<meta property="og:locale:alternate" content="th_TH"/>
<meta property="og:locale:alternate" content="tr_TR"/>
<meta property="og:locale:alternate" content="vi_VN"/>
<meta property="og:locale:alternate" content="zh_CN"/>
<meta property="twitter:card" content="summary"/>
<meta property="twitter:site" content="@MixRadio"/>
<meta property="og:description" content="MixRadio. It’s like having your own personal radio station."/>
<meta property="twitter:description" content="MixRadio. It’s like having your own personal radio station."/>
<meta property="og:title" content="Madonna,Sheryl Crow,Kylie Minogue"/>
<meta property="twitter:title" content="Madonna,Sheryl Crow,Kylie Minogue"/>
<meta property="twitter:image:src" content="http://asset.ent.nokia.com/asset/artists/200x200/372444.jpg"/>
<meta property="og:image" content="http://asset.ent.nokia.com/asset/artists/200x200/372444.jpg"/>
<meta property="og:image:type" content="image/jpeg"/>
<meta property="og:image:width" content="200"/>
<meta property="og:image:height" content="200"/>
<meta property="og:type" content="music.radio_station"/>
<meta property="og:url" content="http://www.mixrad.io/gb/en/mixes/seeded/?s=fb8e5e45-a82c-4577-a01a-81ab358a5a81"/>
<meta property="og:audio" content="http://www.mixrad.io/gb/en/mixes/seeded/?s=fb8e5e45-a82c-4577-a01a-81ab358a5a81"/>
<meta property="og:audio:type" content="audio/vnd.facebook.bridge"/>当它从瑞典数据中心抓取时,"og:locale“是sv_SE。
现在,我已经将所有的og:locale:alternate属性放入其中,facebook调试器会给出以下消息:
类型为“”music.radio_station“”的URL“”http://www.mixrad.io/se/sv/mixes/seeded/?s=47a36fcd-235b-4b20-9088-6f89353a9728“”处的对象无效,因为未能将属性“”og:locale:alternate“”的给定值“”de_at“”分析为类型“”枚举“”。“”
有没有人能帮我弄清楚如何让我们的元标记以正确的语言呈现给用户?
谢谢
更新:'de_at‘枚举问题是由Facebook不支持该地区的事实引起的,删除facebook不支持的地区已经摆脱了那个特定的错误,但所有内容仍然是瑞典语。
发布于 2016-04-30 00:56:37
Facebook并不支持所有的语言环境,下面是他们支持的语言环境列表:https://www.facebook.com/translations/FacebookLocales.xml
据我所知,Facebook最初会在没有指定地区的情况下抓取你的网站,然后根据你的meta标签指示你支持的每个地区抓取一次。正如您已经提到的,当您的服务器看到X-Facebook-Locale头或它们的查询参数时,需要动态更改每个元标记的内容属性。
您负责如何呈现页面,您可能希望使用用户请求中发送的标头来确定语言。如果你有opengraph locale支持,Facebook不会查看页面的内容,它只会查看meta标签,并在呈现预览时将找到的内容缓存到Facebook中显示给用户。
https://stackoverflow.com/questions/26407833
复制相似问题