Salut à tous,

Voilà la situation, je travaille sur un projet, et en ce moment sur la rédaction du cahier des charges.
Les conditions principale de réalisations sont :

  • Utilisation de Laravel 5
  • Utilisation de AngularJS

Voilà mon "problème", je dois implémenter un application chat en temps réel sur une de mes pages. Chaque message de ce chat devra contenir plusieur informations:

  • Le username
  • Le message
  • La date et l'heure de l'envoi
  • Un bouton supprimer (et éditer quand on en est l'auteur)

Et c'est la où ca coince... Je compte réaliser ce chat en utilisant AngularJS. Chaque message émis par l'utilisateur sera implémenter dans un template définie, que Angular utilisera pour transmettre à la vue. Voici un exemple (j'ai sauté les directives d'angular parceque rien n'est encore définie à ce jour, j'y travaille encore):

<div class="message" title="{{ date }}">
    <div class="message-username">{{ username }}</div>
    <div class="message-message">{{ message }}</div>
    <div class="message-action">
        <button class="btn btn-primary" title={{ edit }} id="message-edit">
            <span class="fa fa-edit"></span>
        </button>
        <button class="btn btn-primary" title={{ delete }} id="message-delete">
            <span class="fa fa-delete"></span>
        </button>
    </div>
</div>

Comme on peut le voir, la div message contient un attribut title qui est censer afficher la date avec un certain formatage, partons du principe que le format soit : "Envoyé le jj mai 2015 à hh:mm". Mon problème est que selon la langue choisie sur le site, le format date change, "Sent on May jjth, 2015 at hh:mm" pour nos amis anglophone.
Comment puis-je traduire ce genre de phrase (idem pour les boutons edit ou delete) avec AngularJS ?

J'ai vu plusieurs librairies, dont celle-ci https://github.com/rmariuzzo/laravel-js-localization qui ajoute un objet global en javascript appelé Lang, le concept est qu'en fait en lançant une commande avec artisan, le script génère un ficher js contenant tous les messages traduits se trouvant dans le répertoir lang de Laravel. Cet objet Lang est ensuite utilisé coté client en se servant du fichier js contenant les traductions. Les méthodes utilisées ensuite sont les même que Laravel, tel que :

Lang.get('messages.home');

C'est certe pratique, mais j'aimerais éviter la traduction coté client. Je m'explique: je voudrais que lorsque j'envoie un message, celui-ci soit "broadcaster" aux autres utilisateurs en étant DEJA formaté (=traduit), pour d'une part alléger le client, et d'autre part pour éviter de me retrouver avec un fichier de 5Mo contentant les différents langues à inclure dans mes pages HTML... so bad question performance.

Donc coté serveur (qui utilisera nodeJs avec Socket.io très certainement) je souhaiterais traduire certaines données avant le broadcast. Comment puis-je m'y prendre ? sachant que tout les fichier de traduction se trouve dans le dossier lang de Laravel. Est-ce possible d'utiliser ces fichiers ? Sinon comment ?

Merci d'avance pour votre précieuse aide ! :D

Aucune réponse