2010-10-31 7 views
0

J'utilise des constantes pour afficher mes titres de pages en différentes langues:PHP: un problème constant/pagetitle et facebook comme bouton

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

// lang.de.php 
define(_PAGE_TITLE, "Seitentitel"); 

J'ai placé un bouton facebook comme sur cette page et tout fonctionne sauf pour une chose: Si je soumets le lien avec le bouton comme, le titre facebook apparaît comme ceci:

XY aime _PAGE_TITLE

le Constan t n'est pas remplacé par sa valeur dans facebook mais il est remplacé dans le code HTML. Est-ce que quelqu'un a une idée, pourquoi la constante n'est pas remplacée si facebook attrape la page de mon site?

Merci.

Edit: Tu viens juste que le bot facebook a l'en-tête HTTP_ACCEPT_LANGUAGE mis à l'anglais et il y avait un problème avec mon fichier de langue. Quoi qu'il en soit, je voudrais que le bot prenne la traduction allemande par défaut. Y at-il un moyen d'attraper le bot facebook et d'écraser les paramètres de langue pour cela?

Répondre

0

Le serveur de Facebook extrait votre page et extrait le titre pour produire cette information. Donc, il est raisonnable de deviner que votre système est (pour une raison quelconque) rendant la page avec un titre de "_PAGE_TITLE" au lieu de la valeur correcte du fichier de langue. Cela implique qu'il y a quelque chose de spécial à propos de la requête automatisée de facebook qui empêche le fichier de langue d'être inclus.

Alors, qu'est-ce qui provoque l'inclusion du bon fichier lang? Que fera votre code s'il ne peut pas déterminer quel fichier de langue inclure (par exemple l'en-tête 'Accept-Language` est manquant ... ou peu importe).

Il devrait revenir à inclure un fichier de langue par défaut (probablement anglais). Il doit y avoir jamais être une possibilité d'exécuter le script sans avoir d'abord inclus certains fichiers de langue.

+0

Je vérifie comme ceci: $ lang = (substr ($ _ SERVER [ 'HTTP_ACCEPT_LANGUAGE'], 0, 2) == "de")? "de": "en"; Donc, il devrait revenir à l'anglais par défaut. – user276289

+0

vous devriez confirmer que c'est. essayez de frapper votre site avec [curl] (http://curl.haxx.se/) (il y a aussi une [version php] (http://php.net/manual/fr/book.curl.php). Ou utilisez un proxy de développement comme [Charles Proxy] (http://www.charlesproxy.com/) pour simuler une demande entrante comme peut venir de facebook. Vous pourriez également avoir de la chance en examinant vos journaux de serveur Web pour trouver des demandes du serveur de Facebook, et voir ce qui est spécial au sujet de ces demandes. Le fait est que quelque chose de spécial à propos des requêtes automatisées de facebook entraîne l'exclusion de votre fichier de langue. – Lee

0

Asnwering à votre édition, si vous utilisez la nouvelle API Facebook ou Social Plugins, vous pouvez remplacer le titre de la page en utilisant <meta> balises comme ceci:

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

Rappelez-vous! Pour utiliser ces balises de propriété meta, vous devez déclarer les espaces de noms Facebook et Open Graph sur la balise <html>.

<html 
    xmlns:og="http://opengraphprotocol.org/schema/" 
    xmlns:fb="http://www.facebook.com/2008/fbml" 
> 

Pour plus de lecture, jetez un oeil à ceci: http://developers.facebook.com/docs/opengraph

Questions connexes