PHP:常量/pagetitle和类似facebook的按钮存在问题

PHP:常量/pagetitle和类似facebook的按钮存在问题,php,facebook,constants,Php,Facebook,Constants,我使用常量以不同的语言显示我的页面标题: // lang.en.php define(_PAGE_TITLE, "Pagetitle"); // lang.de.php define(_PAGE_TITLE, "Seitentitel"); 我在该页面上放置了一个类似facebook的按钮,除了一件事外,其他一切都正常:如果我使用“类似”按钮提交链接,facebook中的标题显示如下: <meta property="og:title" content="<?php ec

我使用常量以不同的语言显示我的页面标题:

 // lang.en.php
 define(_PAGE_TITLE, "Pagetitle");

 // lang.de.php
 define(_PAGE_TITLE, "Seitentitel");
我在该页面上放置了一个类似facebook的按钮,除了一件事外,其他一切都正常:如果我使用“类似”按钮提交链接,facebook中的标题显示如下:

<meta property="og:title" content="<?php echo _GERMAN_PAGE_TITLE; ?>" />
XY喜欢_页面_标题

该常量在facebook中不会被其值替换,但会在HTML代码中被替换。有人知道,如果facebook从我的网站上获取页面标题,为什么常量不被替换

多谢各位

编辑:
刚刚发现,facebook机器人将HTTP_ACCEPT_LANGUAGE头设置为english,我的语言文件出现问题。无论如何,我希望机器人在默认情况下接受德语翻译。有没有办法捕获facebook bot并覆盖其语言设置?

facebook的服务器会获取您的页面并提取标题以生成此信息。因此,有理由猜测您的系统(出于某种原因)呈现的页面标题为
“\u page\u title”
,而不是语言文件中的正确值。这意味着facebook的自动请求有一些特殊之处,导致该语言文件从未被包括在内

那么,是什么导致包含正确的lang文件呢?如果您的代码无法确定要包含的语言文件(例如,缺少“Accept language”标头…或其他任何内容),您的代码将怎么做


它应该退回到包含默认语言文件(可能是英语)。如果不先包含一些语言文件,就不可能执行脚本。

如果您正在使用新的Facebook API或社交插件进行编辑,您可以使用如下标记覆盖页面标题:

<meta property="og:title" content="<?php echo _GERMAN_PAGE_TITLE; ?>" />


要进一步阅读,请看以下内容:

我这样检查:$lang=(substr($\u SERVER['HTTP\u ACCEPT\u LANGUAGE',0,2)=“de”)?“de”:“en”;因此,默认情况下,它应该返回到英语。您应该确认它是。尝试用(也有一个)点击你的网站。或者使用开发代理来模拟来自facebook的传入请求。您还可以通过检查Web服务器日志来查找来自facebook服务器的请求,并了解这些请求的特殊之处。关键是——facebook的自动请求有一个特殊之处,就是它导致你的语言文件不被包括在内。