Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Rendiamo internazionale la nostra applicazione (parte II)

Come internazionalizzare la propria applicazione. Parte seconda: la struttura dell'applicazione
Come internazionalizzare la propria applicazione. Parte seconda: la struttura dell'applicazione
Link copiato negli appunti

Per esigenze varie potremmo avere necessità di mostrare ad ogni utente della nostra applicazione un messaggio personalizzato. Questo potrebbe significare mostrare a tutti lo stesso messaggio di saluto, diversificando solo il nome di chi legge.

Ad esempio, al login dell'utente Tommaso, si potrebbe mostrare la frase «Ciao Tommaso, benvenuto in Facebook.» e al login dell'utente Nicola la frase «Ciao Nicola, benvenuto in Facebook.». In codice, una situazione del genere potrebbe essere simulata in questo modo:

<?
   // primo accesso: Login di Tommaso
   $nome_proprio = 'Tommaso';
   echo "<fb:intl>Ciao ".$nome_proprio.", benvenuto in Facebook!</fb:intl>";
   // secondo accesso: Login di Nicola
   $nome = 'Nicola';
   echo "<fb:intl>Ciao ".$nome_proprio.", benvenuto in Facebook!</fb:intl>";
?>

Come si può notare la frase è la stessa in tutti e due i casi, l'unica cosa che cambia è il nome dell'utente che effettua il login. Se andiamo nel pannello Traduzioni alla ricerca delle frasi internazionalizzate ne vedremo due nuove pronte ad essere localizzate, ossia: «Ciao Tommaso, benvenuto in Facebook!» e «Ciao Nicola, benvenuto in Facebook!».

In una situazione reale questo significherebbe localizzare una frase per ogni nome proprio di persona. Uno scenario del genere, poco pratico per applicazioni semi-sconosciute, è praticamente catastrofico per applicazioni con migliaia di utenti.

La soluzione che abbiamo per ovviare a questa catastrofe consiste nell'istruire il framework di traduzione ad escludere dal processo una porzione ben determinata di frase.

Se escludessimo dalle due frasi precedenti il nome proprio di persona, quello che ci resterebbe sarebbero due frasi perfettamente uguali, talmente uguali da poter essere considerate un'unica frase.

Per far questo utilizzeremo i token di traduzione. Impostando il nome proprio di persona come token, stiamo informando il framework della nostra volontà di non voler internazionalizzare quella parte della frase. Per far questo utilizzeremo il tag <fb:intl-token>:

$nome_proprio = "Roberto";
echo "<fb:intl>";
echo "Ciao {token_nome}, benvenuto in Facebook!";
echo "<fb:intl-token name='token_nome'>$nome_proprio</fb:intl-token>";
echo "</fb:intl>";

Nel primo esempio, sono presenti due funzioni echo, all'interno delle quali viene concatenata la variabile $nome_proprio, sostituiremo questa variabile con un segnaposto/token a cui daremo un nome a piacere, in questo caso token_nome racchiuso tra parentesi graffe (riga 3 esempio 2).

Ora dobbiamo decidere che valore far corrispondere a questo segnaposto. Per far questo inseriremo, all'interno del tag <fb:intl> un nuovo tag <fb:intl-token>.

Questo tag avrà un attributo name in cui andranno specificati il nome del token che abbiamo creato, nel nostro caso token_nome, mentre nel corpo del tag andrà inserito il testo da non internazionalizzare, ovvero $nome_proprio (riga 4 esempio 2).

A differenza del primo esempio, questa volta, il nome proprio di persona non verrà considerato da internazionalizzare, per cui nel pannello di Traduzioni tutto quello che vedremo sarà «Ciao {nome_token}, benvenuto in Facebook!». Una sola stringa da internazionalizzare al posto di una per ogni nome proprio di persona.

Alcuni tag FBML, vengono trasformati automaticamente in token. Il tag <fb:name> è uno di questi e chi ha buona memoria ricorderà che lo abbiamo usato all'interno dello script index.php:

echo "<h4>Ciao <fb:name uid=".$user_id." firstnameonly='true' useyou='false' linked='false' /> scegli tra i tuoi amici la persona a cui inviare un regalo:</h4><br />";

il testo presente nello script non è stato ancora internazionalizzato, lo faremo ora "avvolgendolo" all'interno del tag <fb:intl>:

echo "<h4><fb:intl>Ciao <fb:name uid=".$user_id." firstnameonly='true' useyou='false' linked='false' />, scegli tra i tuoi amici la persona a cui inviare un regalo:</fb:intl></h4><br />";

eseguiremo lo script, e andremo nella bacheca traduzioni per vedere tutte le frasi importate tra le quali troveremo anche «Ciao {name1}, scegli tra i tuoi amici la persona a cui inviare un regalo:». Il framework di traduzione ha considerato automaticamente il tag <fb-name> come un token e gli ha assegnato name1 come identificativo.

Oltre questa frase, nello script index.php, resta da internazionalizzare solo il testo Avanti del bottone, l'operazione è semplice e sappiamo già come fare in quanto l'abbiamo fatto nella lezione precedente.

Una volta che abbiamo internazionalizzato il nostro software e importato correttamente tutte le frasi all'interno del framework (per farlo basta eseguire gli script in cui sono presenti frasi internazionalizzate) possiamo andare nel pannello Traduzioni e iniziare a localizzarle una per volta. Quando il lavoro di localizzazione sarà completato cliccheremo Publish e il nostro sforzo sarà disponibile a tutti gli utenti che utilizzano quella lingua per navigare il social network.

Oltre al testo è possibile internazionalizzare anche le date con l'ausilio dei tag <fb:date> e <fb:time>. L'utilizzo è molto semplice e basta avere un timestamp, ossia il tempo trascorso in secondi dalla nascita di Unix (1 gennaio 1970), passarlo ad uno dei due tag sopracitati e lasciare a Facebook il compito di formattarlo nel modo più gradito all'utente. Il loro uso è molto semplice e basta dare un'occhiata ai due link sopra.

Una volta effettuati gli ultimi ritocchi la nostra applicazione è pronta per essere divulgata e possiamo controllarne il successo tramite gli strumenti di monitoraggio offerti da Facebook.

Ti consigliamo anche