Creation d’un système de traduction i18n avec coté client AngularJS et coté serveur  Node.js avec une base de données graph Neo4j

Sur la partie cliente de l’application qui fonctionne sous AngularJS nous utiliserons le module angular-translate (source et documentation ici: https://angular-translate.github.io/) avec un chargement des traductions via API sous un format JSON via la fonction useUrlLoader du module.

Définition de notre architecture pour la base de données graph Neo4j:

Nous utiliserons pour se faire 2 nodes, le premier Langue va nous permettre de stocker la langue (en, fr, de…) et le second i18n lui contiendra une propriété i18n.section définissant l’emplacement concerné dans l’application (ex: Gestion des traductions, Commun, Acheter un Coupon ….). Les nodes  i18n contiendront ainsi 2 propriétés pour la traduction,  i18n.translate qui contiendra le nom de la variable pour angular-translate et i18n.value sa traduction.

Nous pouvons donc définir la création des nodes Langue ainsi :

CREATE (n:Langue {lang:"fr", ISO2:"FR", ISO3:"FRA"})
SET
   n.date_created_timestamp = 1457274107995,
   n.date_created = "06/03/2016"
RETURN n

Et pour les nodes i18n ainsi (avec la relationship TRANSLATION):

MATCH (La:Langue {lang:"fr"})
MERGE (La)-[r:TRANSLATION]->(i18n: i18n {section:"Common", translate:"email", value:"Email"})
SET
  i18n.date_created_timestamp = 1457274107995,
  i18n.date_created = "06/03/2016"
RETURN r

Nous obtiendrons donc la représentation graphique dans Neo4J suivante

i18n-node-js-neo4j-angularjs-graph-lang

Passons à la création de l’API coté NodeJS: