2011-09-30 22 views
13

Mi sitio web es multilingüe y tengo un botón FB like. Me gustaría tener las publicaciones similares en diferentes idiomas.Facebook etiquetas meta scraped con locale no funciona

Según la documentación de Facebook, si utilizo la metaetiqueta og: locale y og: locale: alternate, el raspador obtendría la información de mi sitio pasando el parámetro "locale" y el encabezado "X-Facebook-Locale", pero no está enviando ninguno. (https://developers.facebook.com/docs/beta/opengraph/internationalization/). Entonces las publicaciones terminan siempre en en_US.

¿Alguien tiene el mismo problema?

+0

¿Encontró una solución para este comportamiento? –

Respuesta

0

¿Qué idioma especificó al cargar el Javascript SDK? Es fácil pasar por alto eso ".

La opción por defecto es en_US, ver la línea js.src

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=127211380649475"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 
0

tengo el mismo problema.

El botón Me gusta envía a Facebook solo su propio atributo data-href="www.example.com/yourpage", no los valores de metaetiquetas. Después, Fb raspa y meta etiquetas en tu página, y a partir de ellas crea la publicación de Muro.
Prácticamente la publicación siempre está en el idioma predeterminado de su página.

Una solución para tener mensajes en UserLanguage es:

  • Añadir ?lang=userlanguage a url datos href del botón Me gusta
  • Dale capacidad yourpage para obtener userlanguage y mostrar etiquetas og meta: título y og: Descripción de la traducción apropiada (por ejemplo, con php $ _GET)

Así FB raspar yourpage en UserLanguage y creará un puesto local.

Desafortunadamente Fb crear un único objeto para cada URL diferente ?lang=userlanguage1, userlanguage2 ... y cada objeto tiene su propia lista de seguidores.
Así que cada traducción de tu página tendrá sus fans locales.
:-(


Pregunta similar: Open Graph Localization

17

Tengo este trabajo The documentation no es muy detallado; aquí están los detalles

Aquí están mis etiquetas de localización 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" /> 

MUY IMPORTANTE:The documentation hace que parezca que og:locale siempre debe reflejar la configuración regional "predeterminada" de la página. Este no es el caso; al hacerlo, evitará que el raspador recupere otros idiomas. og_locale debe reflejar la configuración actual de la página configuración regional. En otras palabras, si el raspador (o el usuario) solicita el contenido fr_CA, asegúrese de que og_locale esté configurado en fr_CA en la respuesta.

Especifique todas las configuraciones regionales posibles con og:locale:alternate. De esta forma, ya sea que el raspador solicite en_US o fr_CA, todavía sabe que ambos existen.

Aquí me pide el raspador Facebook para volver a procesar mi página:

curl -d "id=https://apps.facebook.com/everydaybarilla/&scrape=true" https://graph.facebook.com 

Aquí está la respuesta:

{ 
    "url": "http://apps.facebook.com/everydaybarilla/", 
    "type": "website", 
    "title": "Barilla\u2019s Every Day, Every Way Contest", 
    "locale": { 
     "locale": "en_us", 
     "alternate": [ 
     "fr_ca" 
     ] 
    }, 
    "image": [ 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/5.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/4.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/3.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/en-2.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/en-1.png" 
     } 
    ], 
    "description": "Barilla Canada is whisking one lucky winner and a guest off to Italy on an 8-day Italian culinary adventure for 2 in the Barilla Every Day, Every Way Contest!", 
    "site_name": "Barilla\u2019s Every Day, Every Way Contest", 
    "updated_time": "2012-04-16T17:59:38+0000", 
    "id": "10150594698421968", 
    "application": { 
     "id": "317271281656427", 
     "name": "Barilla\u2019s Every Day, Every Way Contest", 
     "url": "http://www.facebook.com/apps/application.php?id=317271281656427" 
    } 
} 

El rascador devuelve correctamente los datos de la configuración regional predeterminada, pero de acuerdo con the documentation , parece que el raspador también debe raspar localizaciones alternativas; Este no es el caso. Claramente, a partir de la respuesta anterior, ve las configuraciones regionales alternativas, pero no las procesa.

tanto, aquí está mi pidiendo específicamente el raspador Facebook para procesar mi página en français:

curl -d "id=https://apps.facebook.com/everydaybarilla/&scrape=true&locale=fr_CA" https://graph.facebook.com 

Esta vez, ver correctamente dos peticiones a mi servidor de la rasqueta. La segunda solicitud tiene el encabezado X-Facebook-Locale y el parámetro de URL fb_locale configurados correctamente en fr_CA. Y el POST devuelve correctamente la respuesta francesa:

{ 
    "url": "http://apps.facebook.com/everydaybarilla/?fb_locale=fr_CA", 
    "type": "website", 
    "title": "Concours Tous les jours, de toutes les fa\u00e7ons de Barilla", 
    "locale": { 
     "locale": "fr_ca", 
     "alternate": [ 
     "en_us", 
     "fr_ca" 
     ] 
    }, 
    "image": [ 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/5.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/4.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/3.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/fr-2.png" 
     }, 
     { 
     "url": "http://everydaybarilla.ssl.spidermarketing.ca/assets/img/thumbnails/fr-1.png" 
     } 
    ], 
    "description": "Un heureux gagnant et son invit\u00e9(e) partiront \u00e0 destination de l\u2019Italie pour une aventure culinaire de 8 jours pour 2 personnes (valeur au d\u00e9tail approximative de 15 000 $)!", 
    "site_name": "Barilla\u2019s Every Day, Every Way Contest", 
    "updated_time": "2012-04-16T18:11:27+0000", 
    "id": "10150594698421968", 
    "application": { 
     "id": "317271281656427", 
     "name": "Barilla\u2019s Every Day, Every Way Contest", 
     "url": "http://www.facebook.com/apps/application.php?id=317271281656427" 
    } 
} 

¡Éxito!

Por supuesto, después de todo este esfuerzo, cuando voy al Facebook.com francés y publico esta URL, el cuadro de estado se rellena ... con los datos en inglés. Parece que las propias interfaces de Facebook no están configuradas para solicitar la configuración regional correcta.

Así que incluso con todo este esfuerzo, nada parece haberse logrado (las traducciones de mis cadenas a través de la aplicación de traducción de Facebook tampoco funcionan, así que supongo que no debería sorprender).

Aún así, responde la pregunta. Quizás alguien más pueda determinar por qué las interfaces de Facebook.com no parecen solicitar la configuración regional correcta.

+1

Básicamente he tenido los mismos problemas que tú pero nunca conseguí Facebook para raspar en otras configuraciones locales, entonces en_US. Conocí a un desarrollador de Facebook ayer en Facebook Developer Garage en Estocolmo. Le expliqué el problema y su respuesta fue: Todo lo que necesita saber está en la página del documento. No hay nada mágico que tengas que hacer. Trató de agregar soporte multilingüe para objetos OG hace dos meses y tuvo éxito. El único consejo que tuvo fue intentarlo nuevamente y reportar todos los errores. Responderán a estos informes de errores con bastante rapidez, pero no tengo tiempo ni energía para informar los errores :( –

+2

Actualicé los documentos para aclarar un poco más tu punto importante –

+3

Hola, tengo el mismo problema que tú. ** después de todo este esfuerzo, cuando voy al Facebook.com francés y publico esta URL, el cuadro de estado se rellena ... con los datos en inglés. ** ¿Encontraste alguna pista para hackearlo? – user2686101

1

Tuve los mismos problemas hasta que finalmente funcioné estableciendo todos los valores locales en las metaetiquetas (og: locale y og: locale: alternate) en minúsculas.

mira esto: http://developers.facebook.com/bugs/309825175774568?browse=search_5033cc14f42016961266549

Después de hacer eso y volver a raspar, ir a Facebook y cambiar la configuración de idioma a un entorno local enviaría correctamente el X-Facebook-Idioma y fb_locale, y desencadenar la deseada resultados para mi

BTW: configuración de la configuración regional del usuario a una que no figura en la lista en og: configuración regional: alternativa no enviaría el parámetro encabezado/obtención.

3

manejo local de Facebook es completamente inconsistente

Después de luchar con lugares abiertos gráfico desde hace semanas, logré publicar contenido con el cambio de textos basado en la configuración regional del usuario. Para los enlaces, aún no puedo obtener los resultados esperados.

Aquí están mis observaciones:

og: locale en el depurador muestra por defecto, mi facebook real local. Al hacer clic en el entorno local og: los enlaces alternativos cambian las propiedades del objeto, así como el idioma de la interfaz. Creo que es por diseño.

La sección 'Raw Open Graph Document Information', sin fb_locale anexada a la URL de entrada, muestra los datos predeterminados. Si se establece el fb_locale y en el caso mixto, la sección de información del documento de gráfico abierto bruto se cambia de acuerdo con el parámetro. La sección 'Propiedades del objeto' aún muestra datos basados ​​en la configuración regional actual/seleccionada. Si fb_locale está en minúscula, devuelve 'Error al analizar la URL de entrada, no se han recortado datos'.

Lo mismo ocurre con el parámetro 'locale' adjunto a la URL del depurador (no la entrada). Si está en formato mixto, la sección Propiedades del objeto y el idioma de la interfaz cambian. Sin embargo, no hace nada cuando lo paso en minúsculas (rendimientos por defecto/locales actuales)

Sorprendentemente, la API gráfica está actuando inversamente:

  1. cuando solicito una re-raspar con PHP SDK

    1. el contenido se actualiza solo cuando la configuración regional se pasa en minúscula, pero (!) En este caso, la respuesta devuelta no tiene el parámetro locale: locale, que se establece si X-Facebook localle header o fb_locale parameter estuvieron presentes.

      Todos los datos en la respuesta están en la configuración regional predeterminada. Sin embargo, la publicación en el muro se actualiza y el texto se muestra correctamente según la configuración regional de Facebook.

    2. si las configuraciones regionales se pasan en formato de mayúsculas y minúsculas, como se define en la documentación, la solicitud devuelve el error de "solicitud de publicación no admitida". Al usar la función php CURL en lugar de la llamada API de Facebook php SDK, en_GB es una excepción, donde la respuesta contiene contenido fb_locale y localizado (inglés) también, pero las propiedades del objeto/publicaciones en el muro no están actualizadas, ni para en_GB . Para otros idiomas, se devuelve 'Solicitud de publicación no registrada'.

  2. Cuando uso Identificación del objeto (el id que se encuentra en la parte inferior de la página depurador - mediante la consulta del campo 'comments_fbid' de 'link_stat' tabla) en lugar de la URL:

    1. con configuraciones regionales mixtas, la respuesta contiene texto correcto y fb_locale para todas las configuraciones regionales, pero ninguna de ellas se actualiza. og: updated_time no se modifica en el depurador, pero se actualiza en https://graph.facebook.com/[object ID]

    2. con configuraciones regionales en minúsculas, el resultado es el mismo que el descrito en 1.1.

  3. en las consultas de la gráfica, el comportamiento es de nuevo lo contrario de lo anterior:? Cuando intento para consultar https://graph.facebook.com/[object ID] locale = en_US, con locales mayúsculas y minúsculas, devuelve el resultado esperado, con las configuraciones regionales en minúsculas, devuelve la versión predeterminada sin etiquetas de configuración regional (solo configuración regional: alternativa).: -o

¿Es posible que el punto final de la API gráfica y el depurador trata a los lugares de manera diferente, por lo que es imposible conseguir el mismo Reponse de ambos?

btw con minúsculas locales, logré tener publicaciones localizadas en el feed, donde el texto se muestra en función de la configuración regional del uer.

Ahora mi problema es que todos los enlaces apuntan a la misma URL canónica sin ninguna información específica de la configuración regional, porque - como dijo Salvador - hacerlo crearía diferentes objetos. Ver mi publicación aquí: how to get the locale of a facebook user clicking on a localised object's link?

Cuestiones relacionadas