Domanda

Il mio attuale implementazione, che è memorizza matrice a base chiavi e valori in un dizionario, ad esempio:

$arr = array(
    'message' => 'Paste a <a href="http://flickr.com/">flickr</a> URL below.',
);

Mi rendo conto che probabilmente era una cattiva idea archiviare codice HTML all'interno di una stringa come questa, ma se sto usando gettext allora nel mio .mo file .po / Come devo gestire la memorizzazione di una stringa simile? Devo solo memorizzare le parole, come 'Paste a' e 'URL di seguito' e 'Flickr' a parte?

È stato utile?

Soluzione

È possibile memorizzare qualcosa come

"Paste a %1 URL below"

e sostituire tutti 'vars' con qualcosa di semplice come str_replace ( '% 1', $ link, $ messaggio);

$ link può anche essere traducibile

"<a href="http://flickr.com/">%1</a>"

anche se questo potrebbe essere eccessivo (si fa flickr tradurre tra lingue?)

logica alla base di questo è che lingue diverse hanno diverse strutture grammaticali e l'ordinamento delle parole wont essere sempre lo stesso.

Aggiornamento:

come @alex e menzione @chelmertz nei commenti, provare a utilizzare la funzione sprintf, che è costruito per questa cosa molto.

Altri suggerimenti

Mi piacerebbe andare per questo:

$arr = array(
    'message' => _('Paste a %s URL below.'),
);

Avere tutte le traduzioni come stringhe all'interno di gettext chiamate di funzione permette di utilizzare gli strumenti standard per aggiornare * .po cataloghi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top