Skip to content

Syntaxe Textify

Yannick Severac edited this page Jun 14, 2019 · 3 revisions

Textify

La fonctionalité de texte paramétrable de Home Voicify !

Principe

Textify a pour fonctionalité de fusionner un texte avec des données en injectants ces données dans des emplacements pré-déterminés.

Les textes possèdent des emplacements (placeholder) numérotés. L'ordre dans laquel on alimente les données est ensuite important.

Texte et donnée

Texte :

text1 = Link a dans sa main gauche {0}, dans sa main droite {1} et dans son dos {2}.

Donnée :

data1 = 1=>un bouclier, 2=>une épée, 3=>un arc

La fusion des éléments précédent donne :

Link a dans sa main gauche un bouclier, dans sa main droite une épée et dans son dos un arc.

Autres exemples

Textes :

text1 = Link a dans sa main gauche {0}, dans sa main droite {1} et dans son dos {2}.
text2 = Avec {1} dans sa main droite et {0} dans sa main gauche, Link est prêt à affronter ses ennemis (Il a aussi {2} au cas ou...).

Données :

data1 = 1=>un bouclier, 2=>une épée, 3=>un arc
data2 = 1=>une fourchette, 2=>un couteau, 3=>une serviette

Résultas text2+data1 :

Avec une épée dans sa main droite et un bouclier dans sa main gauche, Link est prêt à affronter ses ennemis (Il a aussi un arc au cas ou...).

Résultas text1+data2 :

Link a dans sa main gauche une fourchette, dans sa main droite un couteau et dans son dos une serviette.

Pour aller plus loin

Pour information, Voicify utilise certaines fonctionalités intl de PHP pour sa foncitionalité textify.
A l'origine cette fonctionalité est utilisée pour construire des applications multilangue.

  • Doc intl
  • Doc posix

Exemple de code

////////////////////////////////////////////////////////////////////////////////
/* Juste pour afficher le résultat */
function fEcho ($str, $data) {
    global $testCase;
    $msg = MessageFormatter::formatMessage('fr_FR', $str, $data);
    echo "<p><em>$testCase</em> : $msg</p>";
}

////////////////////////////////////////////////////////////////////////////////
$testCase = "Place holder";
$data = array('un bouclier', 'une épée', 'un arc');
$data2 = array('une fourchette', 'un couteau', 'une serviette');
$msg1 = 'Link a dans sa main gauche {0}, dans sa main droite {1} et dans son dos {2}.';
$msg2 = 'Avec {1} dans ça main droite et {0} dans sa main gauche, Link est prêt à affronter ses ennemis (Il a aussi {2} au cas ou...).';
fEcho($msg1, $data);
fEcho($msg2, $data);
fEcho($msg1, $data2);
fEcho($msg2, $data2);

////////////////////////////////////////////////////////////////////////////////
$testCase = "Date & Number";
$data = array(
    'The Legend of Zelda : Breath of the Wild',
    900000,
    1488499200, // 03/03/2017 timestamp
    54.99,
);
$msg1 = 'Le jeux "{0}" s\'est écoulée à {1} exemplaires durant son mois de lancement. Il est sortie le {2} au prix de {3}.';
$msg2 = 'Le jeux "{0}" s\'est écoulée à {1,number,integer} exemplaires durant son mois de lancement. Il est sortie le {2,date,short} au prix de {3,number,currency}.';
fEcho($msg1, $data);
fEcho($msg2, $data);

////////////////////////////////////////////////////////////////////////////////
$testCase = "Date & Time";
$data = array(
    1494058740, // 01/05/2017 08:19 timestamp
    'The Legend of Zelda : Breath of the Wild',
);
$msg = 'Journal de votre Nintendo Switch du {0,date,short}. En ce {0,date,dd}eme jour de {0,date,LLLL}, un {0,date,EEEE}. A partir de {0,time}. Vous avez joué à "{1}"';
fEcho($msg, $data);

////////////////////////////////////////////////////////////////////////////////
$testCase = "Select & Plural";
$dataLink = array('Link', 'male', 1);
$dataZelda = array('Princess Zelda', 'femelle', 3);
$msg = "Bonjour {1, select, femelle{chère} other{cher}} {0}, vous êtes sur la route de la Cité Gerudo. <br/>";
$msg.= "Vous êtes {1, select, femelle{une Vaï, vous pourrez rentrer} other{un Voï, vous ne pourrez pas rentrer}}. <br/>";
$msg.= "Vous devez laisser {2, plural, one{votre cheval} other{vos # chevaux}} ici, ils ne peuvent pas traverser le désert !";
fEcho($msg, $dataLink);
fEcho($msg, $dataZelda);

Resultats produits

  1. Place holder : Link a dans sa main gauche un bouclier, dans sa main droite une épée et dans son dos un arc.
  2. Place holder : Avec une épée dans ça main droite et un bouclier dans sa main gauche, Link est prêt à affronter ses ennemis (Il a aussi un arc au cas ou...).
  3. Place holder : Link a dans sa main gauche une fourchette, dans sa main droite un couteau et dans son dos une serviette.
  4. Place holder : Avec un couteau dans ça main droite et une fourchette dans sa main gauche, Link est prêt à affronter ses ennemis (Il a aussi une serviette au cas ou...).
  5. Date & Number : Le jeux "The Legend of Zelda : Breath of the Wild" s'est écoulée à 900000 exemplaires durant son mois de lancement. Il est sortie le 1488499200 au prix de 54.99.
  6. Date & Number : Le jeux "The Legend of Zelda : Breath of the Wild" s'est écoulée à 900 000 exemplaires durant son mois de lancement. Il est sortie le 03/03/2017 au prix de 54,99 €.
  7. Date & Time : Journal de votre Nintendo Switch du 06/05/2017. En ce 06eme jour de mai, un samedi. A partir de 08:19:00. Vous avez joué à "The Legend of Zelda : Breath of the Wild"
  8. Select & Plural : Bonjour cher Link, vous êtes sur la route de la Cité Gerudo.
  9. Vous êtes un Voï, vous ne pourrez pas rentrer.
  10. Vous devez laisser votre cheval ici, ils ne peuvent pas traverser le désert !
  11. Select & Plural : Bonjour chère Princess Zelda, vous êtes sur la route de la Cité Gerudo.
  12. Vous êtes une Vaï, vous pourrez rentrer.
  13. Vous devez laisser vos 3 chevaux ici, ils ne peuvent pas traverser le désert !