我正在使用常量以不同语言显示我的页面标题:
// lang.en.php
define(_PAGE_TITLE, "Pagetitle");
// lang.de.php
define(_PAGE_TITLE, "Seitentitel");
我在该页面上放置了一个像facebook一样的按钮,一切都有效,除了一件事:如果我使用like按钮提交链接,facebook中的标题会显示如下:
XY喜欢_PAGE_TITLE
常量不会被它在facebook中的值替换,但它会在HTML代码中被替换。有没有人有一个想法,如果facebook从我的网站上抓取了一个页面标题,为什么不替换常量?
谢谢。
修改 刚刚发现,facebook bot将HTTP_ACCEPT_LANGUAGE标头设置为英语,我的语言文件出现问题。无论如何,我希望机器人默认采用德语翻译。有没有办法抓住Facebook机器人并覆盖它的语言设置?
答案 0 :(得分:0)
Facebook的服务器获取您的页面并提取标题以生成此信息。因此,猜测您的系统(由于某种原因)使用标题"_PAGE_TITLE"
而不是语言文件中的正确值来呈现页面是合理的。这意味着facebook的自动请求有一些特殊之处,导致语言文件永远不会被包含在内。
那么是什么原因导致包含正确的lang文件?如果代码无法确定要包含哪种语言文件(例如,“Accept-Language”标题丢失......或其他任何内容),您的代码将会做什么。
应该回归到包含默认语言文件(可能是英文)。如果没有首先包含某些语言文件,则必须从不执行脚本。
答案 1 :(得分:0)
如果您正在使用新的Facebook API或社交插件,您可以使用<meta>
标记覆盖页面标题,如下所示:
<meta property="og:title" content="<?php echo _GERMAN_PAGE_TITLE; ?>" />
记住!要使用此元属性标记,您必须在<html>
标记上声明Facebook和Open Graph名称空间。
<html
xmlns:og="http://opengraphprotocol.org/schema/"
xmlns:fb="http://www.facebook.com/2008/fbml"
>
要进一步阅读,请看一下:http://developers.facebook.com/docs/opengraph