Multilinguisme, Symfony, App – Générer un fichier de traduction depuis un csv issu d’un google doc

Le multilinguisme est souvent un élément essentiel dans développement d’un site web ou d’une application. Cette nécessité va de pair avec la difficulté de faire traduire et de partager un document qui sera ensuite exploitable, auprès d’une équipe de traduction disséminée.

Comme dans de précédents articles de ce blog, on a choisi des solutions accesibles et gratuites. Pour gérer la source de traduction, quoi de plus facile que de gérer le tout dans un tableur google doc. Ensuite, ce tableur sera exporté au format CSV pour être transformé en XML ou en XLIFF.

Format de fichier de traduction pour mobile et pour Symfony

Pour Symfony, les fichiers de traduction sont au format .xliff. La structure est assez simple en voici un extrait ci-dessous ainsi que quelques explications : la balise source contient la chaine qui sera appelé dans le template twig et la balise target contient la traduction de cette même chaine.

Extrait d’un fichier .xliff

	<?xml version="1.0" encoding="utf-8"?>
	<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
	  <file date="2014-09-22T17:36:52Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
	    <header>
	      <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
	      <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
	    </header>
	    <body>
	      <trans-unit id="d9b69806431d9c0165fdbede07565b0b4c2a8d73" resname="kw_see_it">
	        <source>kw_see_it</source>
	        <target> See the keyword</target>
	      </trans-unit>
		  ...

Dans le cadre des applications mobiles, on a souvent affaire à des fichiers xml dont la structure peut varier mais cela se révèle entre guillemets beaucoup plus simple.

	<?xml version="1.0" encoding="utf-8"?>
	<resources>
		  <string name="kw_see_it"> See the keyword</string>
		  ...

La question qui reste en suspens est comment convertir rapidement un fichier .csv, issu de notre tableur google doc au format .xliff ou .xml

Transformation à l’aide d’un script PHP

Comme souvent, on livre un script en php qui fera l’affaire permettant une conversion quasi instantané d’un CSV au format .xml ou .xliff. Tout le code est disponible sur Github.

L’objectif de ce script est de faire gagner du temps à un non-développeur, un chef de projet par exemple qui à l’aide d’un tableur google doc et de ce script pourrait gérer bon an, mal an la traduction des futurs interfaces sous Symfony et/ou sous Android/iOS par exemple.

Voir sur github Convert .csv to .xml or .xliff

Un peu d’auto-promo…