Question

Mon implémentation actuelle, qui est stocke les clés à base de tableau et les valeurs dans un dictionnaire, par exemple:

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

Je me rends compte que c'était probablement une mauvaise idée de stockage html à l'intérieur d'une chaîne comme celle-ci, mais si j'utilise gettext puis dans mes fichiers .mo / .po comment dois-je gérer le stockage d'une chaîne similaire? Dois-je simplement stocker des mots tels que « Coller une » et « URL ci-dessous » et « flickr » séparément?

Était-ce utile?

La solution

Vous devriez stocker quelque chose comme

"Paste a %1 URL below"

et remplacer tous 'vars' en utilisant quelque chose de simple comme str_replace ( '% 1', $ link, $ message);

lien $ peut aussi être traduisible

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

bien que cela puisse être surpuissant (ne se traduit flickr entre les langues?)

raison derrière cela est que les langues différentes ont des structures grammaticales et l'ordre des mots ne sera pas toujours le même.

Mise à jour:

et mention @chelmertz @ Alex dans les commentaires, essayez d'utiliser la fonction sprintf, qui est construit pour cette fonction.

Autres conseils

Je vais pour cela:

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

Avoir toutes les traductions comme des chaînes dans les appels gettext fonction permet d'utiliser des outils standard pour mettre à jour * .po catalogues.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top