Gestire lingua su facebook con php

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Salve a tutti.
Mi sto cimentando in una cosa un po particolare. Avete presente lo stato di facebook? Il riquadro con scritto "a cosa stai pensando". Bene se si inserisce un link all'interno del riquadro questi verrà condiviso con un'immagine e con una descrizione che sono presenti all'interno del sito condiviso (tramite appositi meta).

Bene io vorrei gestire la lingua di questi meta.
Vi faccio un esempio pratico:

Prendete questo link di Whatsapp: http://blog.whatsapp.com/?p=304

Se lo condividete con un ip italiano, la condivisione avverrà in italiano, se lo condividete con un ip straniero la condivisione avverrà nella lingua di appartenenza.

Ho provato a fare una cosa simile ma non funziona e non so per quale motivo. Vi posto le due paginette:

index.php
PHP:
<?
/*function userLang()   
{  
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))   
    {  
        $lang = explode(";", $_SERVER['HTTP_ACCEPT_LANGUAGE']);  
        $lang = explode(",", $lang['0']);  
        $lang = explode("-", $lang['0']);  
        return $lang['0'];  
    }  
}

$var = userLang();*/

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}
function ipToCountry($ip){
    $info = file_get_contents("http://who.is/whois-ip/ip-address/$ip");
    list($a, $b) = explode('COUNTRY: ', strtoupper($info));
    return substr(trim($b),0,2);
}

$var = strtolower(ipToCountry($ip));

header("location: page.php?lang=".$var);//redirect
exit;
?>

page.php
PHP:
<?
$lingua = $_GET['lang'];

if($lingua == 'it'){
	$og_titolo = 'Titolo Italiano!';
	$ogsite_name = 'Nome italiano!';
	$og_desc = 'Desc italiano';
	$og_url = 'http://miosito.it/asd/page.php?lang='.$lingua;
}elseif($lingua == 'de'){
	$og_titolo = 'titolo de';
	$ogsite_name = 'nome de!';
	$og_desc = 'desc de';
	$og_url = 'http://miosito.it/asd/page.php?lang='.$lingua;
}elseif($lingua !== 'it' || $lingua !== 'de' || $lingua == ''){
	$og_titolo = 'titolo ing';
	$ogsite_name = 'nome ing!';
	$og_desc = 'desc ing';
	$og_url = 'http://miosito/asd/page.php';
}

$og_img = 'http://www.shortphatclever.com/wp-content/uploads/2013/10/test-all-the-things.jpg'; 

?>
<!DOCTYPE html>
<html>
	<head>
		<!-- Facebook Meta -->
		<meta name="robots" content="noindex, nofollow">
		<meta property="og:title" content="<?php echo $og_titolo;?>" />
		<meta property="og:type" content="website" />
		<meta property="og:image" content="<?php echo $og_img;?>" />
		<meta property="og:url" content="<?php echo $og_url;?>" />
		<meta property="og:site_name" content="<?php echo $ogsite_name;?>" />
		<meta property="og:description" content="<?php echo $og_desc; ?>" />
	</head>

<?php echo $lingua; ?>
<br/>

<br/>
<?php echo $og_url; ?>
</html>

Come potete vedere nell'index.php ho lasciato commentato la parte dove rileva la lingua del browser (che ovviamente non funziona).

Se vado su https://developers.facebook.com/tools/debug/

Mi vede sempre la lingua inglese (quindi il terzo caso della pagina.php) Perché? C'è qualcuno che mi da una mano per fare chiarezza? :D
 

giamma

Utente Attivo
4 Mag 2005
111
0
0
se scrivi una semantica così ti stampa a video la sigla della nazionalità del browser controllando e lasciando stampare se la nazionalità é it en de...

PHP:
<?PHP

function lingua($lang, $lingua){

$lingua =substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

 if($lingua == "it") {$lang = "it";} // italiano
 
   elseif($lingua == "en") {$lang = "en";} // inglese
   elseif($lingua == "de") {$lang = "de";} // tedesco

 return $lang;
}

echo lingua($lang);
?>
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
se scrivi una semantica così ti stampa a video la sigla della nazionalità del browser controllando e lasciando stampare se la nazionalità é it en de...

PHP:
<?PHP

function lingua($lang, $lingua){

$lingua =substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

 if($lingua == "it") {$lang = "it";} // italiano
 
   elseif($lingua == "en") {$lang = "en";} // inglese
   elseif($lingua == "de") {$lang = "de";} // tedesco

 return $lang;
}

echo lingua($lang);
?>

Ciao perdonami ma non ho ben capito, se utilizzo il codice che mi hai riportato tu facebook quando condivido il link sulla pagina prenderà la lingua dell'utente che condividerà il link??

Comunque se hai dato un occhiata al codice che ho lasciato su vedi che faccio una cosa simile nell'index nella parte commentata. Non credo sia quello che cerco
 

giamma

Utente Attivo
4 Mag 2005
111
0
0
non capisco perchè utilizzi l'explode come funzione, il mio codice voleva suggerirti di utilizzare la funzione substr, facebook permette solo terminate cose ed utilizza un linguaggio di marcatura proprio, che non centra con php... devi vedere cosa ti permette di fare facebook con le sue api.
 
Ultima modifica:

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Per scrupolo ho fatto una prova con il codice che mi hai postato ma non cambia la situazione che avevo prima, prova a condividere questo link su facebook
http://mckya.com/asd/test.php

Vedrai che lo condivide in inglese (titolo ing desc ing)

Il codice l'ho modificato così:

PHP:
<?PHP

function lingua($lang, $lingua){

$lingua =substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

 if($lingua == "it") {$lang = "it";} // italiano
 
   elseif($lingua == "en") {$lang = "en";} // inglese
   elseif($lingua == "de") {$lang = "de";} // tedesco

 return $lang;
}
$pollo = lingua($lang);

if($pollo == 'it'){
	$og_titolo = 'Titolo Italiano!';
	$ogsite_name = 'Nome italiano!';
	$og_desc = 'Desc italiano';
}elseif($pollo == 'de'){
	$og_titolo = 'titolo de';
	$ogsite_name = 'nome de!';
	$og_desc = 'desc de';
}elseif($pollo !== 'it' || $pollo !== 'de' || $pollo == ''){
	$og_titolo = 'titolo ing';
	$ogsite_name = 'nome ing!';
	$og_desc = 'desc ing';
}
$og_url = 'http://mckya.com/asd/test.php';
$og_img = 'http://www.shortphatclever.com/wp-content/uploads/2013/10/test-all-the-things.jpg'; 

?>
<!DOCTYPE html>
<html>
	<head>
		<!-- Facebook Meta -->
		<meta name="robots" content="noindex, nofollow">
		<meta property="og:title" content="<?php echo $og_titolo;?>" />
		<meta property="og:type" content="website" />
		<meta property="og:image" content="<?php echo $og_img;?>" />
		<meta property="og:url" content="<?php echo $og_url;?>" />
		<meta property="og:site_name" content="<?php echo $ogsite_name;?>" />
		<meta property="og:description" content="<?php echo $og_desc; ?>" />
	</head>

<?php echo $pollo; ?>
<br/>

<br/>
<?php echo $og_url; ?>
</html>

Molto probabilmente sbaglio qualcosa, facebook mi fa impazzire!!! XD

EDIT: ho postato mentre scrivevi la risposta
non capisco perchè utilizzi l'explode come funzione, il mio codice voleva suggerirti di utilizzare la funzione substr, facebook permette solo terminate cose ed utilizzaun linguaggio di marcatura proprio, che non centra con php... devi vedere cosa ti permette di fare facebook con le sue api

Hai ragione forse devo utilizzare le api, sai come fare per caso?

EDIT2:

ho trovato questa risposta può essermi utile secondo te? http://ux.stackexchange.com/questions/29281/sharing-links-on-facebook-with-multi-language-site
 
Ultima modifica:

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
forse si la pagiana che hai postato mostra come utilizzare un url per fb che sembrerebbe mandarti in due cartelle differenti dove risiede la pagina a seconda della lingua... cmq la pagna di sviluppo ufficiale di fb è https://developers.facebook.com/ qui trovi informazioni più attendibili ma ora non ho tempo di aiutarti prova guardare tu caso mai ci sentiamo più tardi...

Se puoi darmi una mano te ne sono grato, ovviamente quando puoi!! Intanto continuo a sperimentare U.u
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Ciao Longo. Il problema è non la gestione della lingua ma è far capire a facebook di inserire la lingua italiana quando si tratta di un utente italiano, tedesca se si tratta di un utente tedesco e inglese per tutti gli altri. Ho fatto così: per il riconoscimento della lingua mi affido o all'IP o alla lingua del browser(devo decidere). Il riconoscimento avviene nell'index.PHP , dopo che la lingua è stata decisa si viene reindirizzati alla page.PHP a cui si trasmettono i dati della lingua tramite un get es: page.PHP?lang=it recupero il get e a quel punto gestisco le lingue. Adesso se posto l'index.PHP su facebook il recupero dei meta da parte di facebook è sempre in inglese a prescindere da chi lo posta, e non so perché.
Questo è quanto, nel pomeriggio do un occhio al link che mi hai dato, grazie!

Inviato dal mio Nexus 4 con Tapatalk 4
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Forse le mie poche conoscenze mi rendono cieco XD
Ma non vedo una soluzione idonea nel link che mi hai passato Longo, sembra piuttosto un'ottima soluzione per l'autopost (per la creazione di piccole app FB) ma che al momento non cerco :(

Inviato dal mio Nexus 4 con Tapatalk 4
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Infatti il link era riferito alla seconda domanda.
Per il problema principale farò delle prove, avvisa se fai qualche passo avanti.
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Infatti il link era riferito alla seconda domanda.
Per il problema principale farò delle prove, avvisa se fai qualche passo avanti.

Purtroppo non ho idea di come fare, credo che la chiave sia nella gestione dei meta di facebook. Sono proprio fermo :\ non capisco come whatsapp ci riesca!

mi togli una curiosità? come mai questo url non funziona più???

Ciao dici il link mckya che ho lasciato nella pagina precedente? L'ho rimosso per fare altre prove, comunque non sono andato più in la del mio naso XD
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Comunque se vai su http://mckya.com/asd/ ti porta su un index.php che riconosce la lingua e poi ti porta su page.php che gestisce i meta di fb in base alla lingua.

Continuo su questo link le varie prove
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Che seccatura, grazie al suggerimento di giamma ho snellito il codice usando la substr.
Tuttavia su facebook non è cambiato nulla. Se condivido il link http://mckya.com/asd/ da sempre tutto in inglese nonostante il mio browser sia italiano.

Guardate i diversi link sul debug di faccialibro:
Questo è quello di whatsapp
https://developers.facebook.com/tools/debug/og/object?q=http://blog.whatsapp.com/?p=304

Questo il mio
https://developers.facebook.com/tools/debug/og/object?q=http://mckya.com/asd/

Che differenze ci sono ?_?
 
Ultima modifica:

giamma

Utente Attivo
4 Mag 2005
111
0
0
a dirti il vero ho provato adesso il link di mckya.com come risultato non mi da niente che mi faccia capire che effetivamente da fb rilevi la lingua mi mette:
immagine
// poi scrive questo
titolo ing
mckya.com
desc ing

come mai mi mette ing chi sta utilizzando qualcosa in inglese io no, se stà rilevando, rileva la lingua di chi ???
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
a dirti il vero ho provato adesso il link di mckya.com come risultato non mi da niente che mi faccia capire che effetivamente da fb rilevi la lingua mi mette:
immagine
// poi scrive questo
titolo ing
mckya.com
desc ing

come mai mi mette ing chi sta utilizzando qualcosa in inglese io no, se stà rilevando, rileva la lingua di chi ???

Esatto!! Il problema è proprio questo!!
La questione è da dividere in 2 casi:
1. Se vai sul link via browser la lingua ti viene riconosciuta infatti nell'url vedrai lang=it e nella pagina vedrai un contenuto in italiano
2. Se invece metti lo stesso link su facebook ti appare sempre la lingua inglese, perché?? Su sta cosa sto impazzendo


Inviato dal mio Nexus 4 con Tapatalk 4
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Sito con doppia lingua. Gestire il cambio PHP 4
E Come gestire al meglio le immagini legno grande formato Photoshop 0
L Interfaccia grafica per gestire sql server .NET Framework 1
R Plugin per Gestire videocorsi a pagamento WordPress 3
M Come gestire aggiornamenti e modifiche di sito live CMS (Content Management System) 0
S Gestire scelta dropdown con dati da Mysql PHP 2
Tommy03 Gestire dimensioni immagini PHP 4
D Come gestire un singolo checkbox PHP 10
MarcoGrazia Gestire lista campi vuoti in fase di autenticazione jQuery 1
elpirata Gestire permessi accesso alle pagine PHP 3
A [ASP.Net] Gestire il profilo ADMIN in un progetto ASP NET e pattern MVC ASP.NET 0
M [PHP] Come gestire gli utenti online PHP 9
M [php] Come gestire i tags PHP 1
svtmaster professionalità per gestire sito web Offerte e Richieste di Lavoro e/o Collaborazione 4
L [HTML] Gestire movimento GIF HTML e CSS 0
BestSellerMauroTop Software per gestire tanti profili e pagine, e farle crescere in modo autonomo! Annunci servizi di Social Media Marketing 0
W Gestire ccTalk o libreria c++ da php PHP 0
W [PHP] gestire una richiesta curl sul server PHP 0
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
bubino8 [WordPress] Gestire SSL (https://) da .htaccess WordPress 9
C [WordPress] Creare e gestire un nuovo sito web WordPress 5
M Gestire ErrorDocument 404 mantenendo lo stesso url Web Server 0
S gestire una tabella mysql PHP 9
R gestire il ritorno di una variabile con success Ajax 2
S Gestire Motion Detection TP-LINK CAMERA NC200 IP Cam e Videosorveglianza 0
A [Javascript] [HTML] Gestire una pagina esterna con 2 iframe Javascript 4
webmachine [PHP] gestire rinnovi PHP 1
P Gestire accesso ad un file xml pubblico PHP 1
D Gestire diversi tipi di pagamento per tipologia di cliente E-Commerce 4
asevenx Cerco plugin per gestire appuntamenti con agenda e campi di selezione WordPress 4
matteoraggi Software per gestire migliaia di permament redirect? SEO e Posizionamento 0
K Gestire response con servlet remota Sviluppo app per Android 1
P Piccolo software per gestire gli utenti. Snippet PHP 5
F Gestire data e ora PHP 6
D Gestire firme digitali con PHP PHP 0
C [Facebook Autolike]Software per gestire più account, mandare like, creare stati, amicizie e altro.. Vendere e Acquistare pubblicita' online 0
D gestire commenti e risposte ... PHP 3
L Gestire password utenti registrati. Quale codifica? PHP 23
asevenx Gestire posizionamento voci sottomenu che si nascondono HTML e CSS 1
N Programma per gestire Cookies secondo disposizioni del Garante Privacy 3/6/2014 G.U. 126 Leggi, Normative e Fisco 0
A Gestire e modificare immagini Java 2
M Gestire la chiusura forzata. Sviluppo app per Android 1
felino Wordpress e QTranslate: come gestire i widget WordPress 11
mondrian Gestire un web server su una virtualbox Apache 12
L gestire array per radio-checkbox in ciclo while PHP 2
MarcoGrazia Gestire gruppi e categorie di link con PHP PHP 1
L Button per gestire JS in WebBrowser di VBNet .NET Framework 0
A gestire errori 400-401-403-404-500 con file htaccess PHP 0
L classe per gestire login in mysql PHP 1
R Gestire sito creato da un altro webmaster HTML e CSS 10

Discussioni simili