mercredi 19 octobre 2016

La traduction normalisée avec Gettext


Pour cet article, je vais vous parler de l'internationalisation de contenu et plus précisément de la traduction liée au domaine du numérique et plus précisément d'un standard qui existe depuis 1995 : Gettext

Le principe est de fournir des fichiers de traduction pour chaque langue que l'on veut distribuer dans son programme et par extension son site web.


Dans le schéma ci-dessus, le foo.c correspond au fichier source de notre programme chargé des traductions (ici en C). Évidemment, dans un autre langage, le fichier sera différent : en php par exemple on peut assigner une classe Translation contenue dans Translation.php chargée de faire un appel aux traductions.

Le fichier .POT est un template contenant le texte avec la langue d'origine à traduire et permet de créer les différents fichiers .PO, le nom du fichier .POT n'a pas vraiment d'importance.
Les fichiers .PO contiennent la traduction de chaque texte dans la langue voulue, chaque fichier est par convention nommé avec le diminutif de la langue après traduction ou avec le diminutif de la langue et du pays concerné. (fr.po, fr_FR.po)
Dans l'exemple ci-dessus, il est fort probable que la langue originelle soit l'anglais et que les traductions découlent de celle-ci. Mais il est tout à fait possible de partir d'une autre langue d'origine.

La modification des fichiers .POT et .PO peuvent se faire aussi bien avec un éditeur de texte standard qu'avec un logiciel en ligne de commande ou graphique. Tout dépend de vos besoins, si vous souhaiter modifier ces fichiers manuellement vous pouvez regarder une des documentations qui en décrit l'architecture :
https://fr.opensuse.org/Equipe_de_traduction/Les_fichiers_PO_et_POT
Si vous préférez utiliser un logiciel avec interface graphique quelques logiciels gratuits existent :
https://userbase.kde.org/Lokalize
http://www.omegat.org/fr/omegat.html
https://poedit.net/
https://poeditor.com/ (gratuit pour utilisation avec moins de 1000 strings ou pour projets OpenSource)

Les fichiers .MO sont les fichiers binaires qui correspondent aux traductions, ils sont utilisés par le programme pour récupérer les chaînes à remplacer, ils n'ont pas forcément le nom de la langue car définissent plutôt un contexte.

Voilà pour la description générale du concept de Gettext mais ça ne nous indique pas vraiment comment récupérer les traductions pour les inclure dans notre programme. Pour ça, il faut passer par une bibliothèque qui sera liée à votre projet. Il en existe énormément pour chaque langage de programmation, je vous laisse le soin de chercher mais si vous ne trouvez pas, vous pouvez toujours en faire la demande en commentaire.

Tuto Gettext PHP avec Composer

Je vais vous expliquer comment utiliser une de ce bibliothèques très facile à implémenter en PHP.

Prérequis :

  1. Un serveur PHP (tuto XAMPP bientôt disponible)
  2. Composer

(Tuto vidéo bientôt disponible)

De base, je travaille avec Composer qui permet de récupérer des librairies très facilement, j'admets donc qu'il est déjà lié à votre projet.
Pour récupérer la librairie Gettext la plus connue, il suffit de faire dans le terminal :
$ composer require gettext/gettext 
La librairie permet de générer les fichiers .MO dont on aura besoin par la suite mais propose une alternative plutôt intéressante, la création d'un fichier .PHP qui contiendra les traductions sous forme d'objets. Cette seconde solution peut-être utilisée pour se passer de la bibliothèque si par exemple nous ne voulons pas l'inclure sur un environnement de production.

Page à traduire


Le fichier .PHP contenant le code HTML devra contenir les chaînes de caractères à traduire sous un format spécifique. Par exemple, pour une chaîne de caractères à traduire, j'utilise la notation :

<h1><?= __("Texte à traduire"); ?></h1>

à la place de :

<h1>Texte à traduire</h1>

La méthode __() est un raccourci pour la méthode gettext()

 

Génération des .POT et .PO

La génération des .POT et .PO se fait par l'utilisation d'un logiciel tiers ou de l'éditeur de texte. Vous pouvez partir de votre page à traduire en faisant un import. Cela permet de récupérer automatiquement les textes à traduire, il ne reste plus qu'à faire la traduction de chaque chaîne de caractères.

Génération des .MO

Les MO peuvent être générés avec les logiciels tiers mais je conseille de le faire avec la librairie en passant par la méthode :
use Gettext\Translations;
//import from a .po file:
$translations = Translations::fromPoFile('locales/fr.po');
//and export to a .mo file
$translations->toMoFile('Locale/fr/LC_MESSAGES/messages.mo');
Ceci permet de garder l'arborescence obligatoire pour les fichiers .MO.
En effet ils doivent être placés dans Locale/{langue}/LC_MESSAGES/

Remplacement du texte

Le remplacement du texte dans la page à traduire se fait avec le contexte et le domaine de la langue. En début de fichier :
<?php
use Gettext\GettextTranslator;
//Create the translator instance
$->setLanguage('gl');
$t->loadDomain('messages', 'Locale');
?>  
 Nous pouvons imaginer une liste déroulante qui change la valeur du langage de la page à la volée ou un détecteur de langue liée au navigateur.
Vous trouverez les sources (bientôt) d'un petit projet de traduction.

Liens utiles :

http://tassedecafe.org/fr/internationaliser-site-web-php-gettext-2878
https://github.com/oscarotero/Gettext

jeudi 13 octobre 2016

Centralisation des projets!

Bonjour à tous,

Cette section est destinée à tous les nouveaux projets de création logiciels, d'applications et de bibliothèques.
Comme Kunzisoft est en développement et que la section de création n'est pas encore accessible au public, vous pouvez décrire vos besoins ici et évidemment c'est gratuit.



Si vous avez des idées, des fonctionnalités que vous souhaitez implémenter, des besoins client ou que vous souhaitez simplement aider alors n'hésitez pas à écrire un commentaire.

Merci de décrire les fonctionnalités voulues de votre application ou de votre logiciel, nos développeurs professionnels seront ravis de vous aider dans votre construction. :)

Projet en cours :

Note : 
  • vous pouvez demander la création d'un billet pour centraliser les informations d'un projet, il suffit d'en faire la demande (cette fonctionnalité sera implémentée dans Kunzisoft)

vendredi 7 octobre 2016

L'e-mailing

Une petite mise à jour du site me permet de vous parler de l'e-mailing.
L'e-mailing est un concept marketing (oui je sais les marketeux sont très angloconcept) permettant la diffusion d'informations par e-mails et la récupération d'une base e-mail d'utilisateurs.


La définition c'est bien, mais le plus intéressant c'est de savoir à quoi ça nous sert et comment le mettre en place :
Le but premier, c'est la création de newsletter, des emails à large diffusion pour tenir informé le visiteur d'informations quelconques. C'est aussi pour la publicité avec la mise en visibilité des promotions en cours ou encore pour notifier d'un changement ou d'un message reçu.

Mais l'e-mailing ne s'arrête pas là, il permet de gérer finement la diffusion groupée des e-mail en fonction de critères spécifiques, tranche d'âge, situation professionnelle, etc... afin de cibler au mieux les personnes en fonction de l'information à transmettre.

Voilà pour la théorie, pour la pratique il existent plusieurs solutions clés en main afin de se lancer dans l'e-mailing.


Pour le moment Kunzisot ne possède pas encore de base d'utilisateurs et n'est encore qu'à l'étape d'un site vitrine hébergé sur un site non dynamique. L'hébergement d'un site web dynamique et du programme d'e-mailing est encore prématuré car le projet n'est qu'à ses balbutiements, il faut donc se tourner vers une autre solution.
Après avoir cherché, des solutions open source et gratuites (pour peu d'utilisateurs au mois) permettent de résoudre ces problèmes, je me suis donc pencher vers phpList.

La solution est très simple à mettre en place et ne nécessite que l'intégration HTML et javascript, fonctionne donc sur une page statique simple, ce qui nous convient pour le moment parfaitement (et peut-être vous convient aussi si vous faites votre "landing page" et lisez cet article).

Évidemment, la base utilisateurs créée sur Kunzisoft ne sera utilisée que pour envoyer les mises à jour et l'évolution du projet par e-mail. :)

Pour mettre en place une page de souscription avec phpList :
Config -> Subscribe Pages



Vous pouvez faire en sorte que la souscription se fasse sur une et même page de votre site avec l'Ajax :
Documentation en ligne sur https://www.phplist.com/ajaxdemo
(si vous avez des soucis notamment avec l'implémentation de la bibliothèque javascript vous pouvez me demander)

J'espère que cet article plus technique vous a plus, il est vrai que la transparence est une notion que nous apprécions, vous savez donc à quoi servira vos e-mails mais aussi quelle a été notre réflexion pour la mise en place de cet outil. :)

Le "Lean Startup"

Pour ce nouvel article, je vais vous parler du "Lean Startup" et de quelques concepts qui y sont attachés.



Tout d'abord qu'est-ce que le Lean Startup ? Je ne connais le concept marketing que depuis peu mais les méthodologies se rapprochent sensiblement de la méthode agile en génie logicielle, la différence c'est que l'un est dans le domaine marketing, l'autre dans le domaine du développement! :p


Le démarrage d'une startup se fait, de par sa définition, très rapidement. Cependant, de par le manque de ressources de certains entrepreneurs, des méthodes ont émergées afin que les entreprises créées se développent avec peu d'investissement pour un maximum d’efficacité.

Ces méthodes se basent sur l'apprentissage par itération ! L'apprentissage par itération consiste à tester un concept du produit, si les fonctionnalités du produit testé sont validées par le client alors on itère avec l'ajout de nouvelles fonctionnalités et ainsi de suite.

L'idée consiste à tester le plus rapidement possible une version minimale du produit (MVP minimum viable product) afin de diagnostiquer si celui-ci correspond bien aux attentes des clients tout en minimisant les risques.
L'esprit du créateur doit se focaliser sur une et une seule chose : la satisfaction client.



A contrario, si un produit est développé en amont par soucis du technique sans s'occuper du public visé alors il y a de grandes chances que celui-ci ne fonctionne pas car ne résout pas un problème du consommateur. La solution est encore une fois de se remettre en question et d'écouter les clients.

Un autre concept, le Growth Hacking plus flou car ne détermine pas de lignes directrices claires, consiste à utiliser des moyens (parfois détournés) peu coûteux pour atteindre un objectif. Par exemple, des entreprises de publicités n'hésitent pas à mettre une case à cocher par défaut sur les installeurs de logiciels, vous acceptez rapidement sans faire attention et l'entreprise diffuse largement sa publicité.

Ces concepts m'ont été donnés lors d'ateliers à la CCI et d'intervenants dans des salons dont http://www.entreprendre-ouest.fr/ . Je vous conseille fortement d'échanger sur ces sujets afin de vous créer un réseau et pour augmenter vos skills. ;)

Autres conseils :
Si l'idée de base de la création de la startup n'est pas encore finalisée, rien n'est grave et c'est même mieux car il n'y a pas d'apriori sur les habitudes et les fonctionnalités que les clients aimeraient posséder pour leur produit. Il suffit de rester à l'écoute et d'agir en conséquence.

Si votre activité n'est pas encore lancée (comme Kunzisoft actuellement), rien ne vous empêche de faire une "Landing Page", une page internet très simple, chargée de décrire l'activité et de créer une base d'utilisateurs.

C'est vraiment intéressant de comparer les préceptes Marketing et de Développement logiciel, beaucoup de concepts récents se rapprochent et partent d'une logique de création dont le but final (la communauté) est identique.
Voilà pour la fin de cet article très marketeu, RDV pour le prochain épisode.

mardi 4 octobre 2016

La création d'entreprise numérique



La création d'une entreprise n'est pas une mince à faire. Il faut de l'énergie, du temps, de l'argent, des compétences multiples, des relations mais aussi et surtout (et j'insiste encore sur ce dernier point) beaucoup de volontés (zut je vous ai déjà perdu).

C'est une voie qui est cependant très gratifiante car les résultats sont le fruit de notre propre travail, on ne peut pas tricher, ni ne rien faire de ses journées ou trouver des raccourcis.
Il n'y a pas de secret, mais si l'on se donne tous les moyens nécessaires, il est possible de réaliser une entreprise rentable et pérenne.

C'est d'autant plus vrai dans le numérique, ou les techniques, les technologies et les canaux de diffusions évoluent constamment.
Il faut rester en éveil, à l'écoute de son environnement et de ses clients.

Avec ces idées en tête, je me dis qu'il est bon de créer des articles sur la création d'entreprise. Car oui, la technique c'est très bien, mais après avoir mis le premier pied dans le plat, on se rend compte que c'est loin de suffire.
Je ferai donc des articles sur différents sujets utiles, divers et variés mais tous liés à la création numérique.

Pour la section création d'entreprise, j'y aborderai les points qui concernent les pièges à éviter, les conseils que l'on m'a donné et que je peux diffuser ou encore les aides que l'on peut recevoir d'organismes privés ou publiques.
Bien évidemment, vous pouvez laisser vos commentaires pour des échanges, car vous comme moi, nous en apprenons tous les jours et c'est toujours plus sympa à plusieurs.

Les premiers conseils :
  • Aller voir la chambre du commerce et de l'industrie (CCI).Ce sont les spécialistes de la création d'entreprise, un conseiller ou une conseillère répondra à vos questions, vous serez suivis et pourrez même avoir accès à des ateliers.
  • Créer votre business plan afin de déterminer votre cible, vos partenaires, votre budget, les prévisions de votre projet.
  • Faire les choses dans l'ordre, "ne pas vendre la peau de l'ours avant de l'avoir tué" comme on dit. On ne vend pas une application alors que le concept n'est pas encore sur papier.
  • Parler en à votre entourage, ça permet d'avoir un retour constructif sur ce que vous voulez créer (même les critiques négatives sont constructives)
  • Rester à l'écoute. C'est pour moi le point à souligner, il faut être à l'écoute, savoir se remettre en question, reconnaître avoir tord ou avoir échouer. Il est vrai que le cœur français n'aime pas échouer mais c'est une erreur, c'est le meilleur moyen d'apprendre et d'évoluer.
Voilà pour le petit mot de la fin, je suis conscient que c'est très généraliste mais c'est un point de départ qui sera détaillé par la suite de l'aventure. :)

dimanche 2 octobre 2016

Fonctionnalités de Kunzisoft

La création du site n'est encore qu'à ces débuts et nécessite de l'investissement pour être à la hauteur des fonctionnalités voulues :
  • Définition d'un projet communautaire avec :
    • idée de base et fonctionnalités associées
    • ressources nécessaires
    • nom du projet
    • liens vers les outils collaboratifs (Github etc)
    • une section de demandes lié au projet (demande de création logo, problème particulier ...)
    • gestion de projet gantz
    • section de dons
  • Gestion des utilisateurs avec :
    • domaines de compétences
    • domaines d'apprentissage
    • liens vers comptes personnels (outils communautaires)
    • statistiques de contribution
    • montant des donations
  •  Notes des projets par la communauté avec critères :
    • d'intérêt fonctionnel
    • montant des donations
    • nombre d'acteurs 
  • Plusieurs langues :
    • Anglais
    • Français

Le code serveur est destiné à être développé en PHP avec le framework Synfony Laravel et le javascript avec AngularJS
Pour le moment, aucun serveur dynamique n'est déployé, son achat se fera lorsque le site sera financé.
Vous pouvez soumettre vos idées en commentaires, contribuer au code sur github ou faire des dons sur le site officiel.

Bienvenue sur le blog de Kunzisoft.


Que vous soyez graphiste, développeur, commercial, chef de projet, entrepreneur, chef d'entreprise, simplement curieux ou avec une idée saugrenue en tête, vous êtes le/la bienvenu(e) !

Voici le premier article de ce blog qui raconte l'histoire de Kunzisoft, un projet de création de programmes et d'applications communautaires.

Vous allez vous demander "mais qu'est-ce donc ça" ?

Ce projet vient de l'idée que beaucoup de personnes veulent déployer des concepts ou des fonctionnalités liés à la création de logiciels et d'applications mais pas forcément les compétences ou les ressources pour les réaliser.
A contrario, beaucoup de personnes possèdent les compétences et / ou les ressources pour développer des logiciels ou sont en cours d'apprentissage mais ne possèdent pas les idées ou des exemples pour parfaire leur enseignement ou leur potentiel créatif.

Afin de mettre en relation ces différents acteurs, Kunzisoft déploie sa solution et propose une plateforme de gestion des projets communautaires.


Sachez que nous ne réinventons pas la roue, de nombreux outils existent pour le développement, pour la communication, la gestion et la diffusion d'un projet logiciel, et nous vous incitons à utiliser ces outils. Pour nous il ne manque que la structuration communautaires autour de ceux-ci.

Nous militons pour le logiciel libre et encourageons les partenaires à adhérer à cette philosophie de partage qui augmente la qualité, la sécurité et le potentiel de diffusion des projets.
Évidemment, tout travail mérite salaire et comme la liberté d'expression et la gratuité est au cœur du logiciel libre, nous faisons appel au cœur des clients et des créateurs satisfaits des idées ou du travail accompli pour financer les projets par un système de donation complètement sécurisé.

La passion doit retourner au centre de l'esprit de création, c'est pourquoi nous encourageons les personnes à diffuser leurs idées, leurs compétences, leurs projets et à aider la communauté afin de devenir des Kunzites (magnifiques pierres précieuses scintillantes à la lumière nocturne).


Note importante :

Kunzisoft est actuellement en développement et reprend ses propres concepts, vous pouvez donc participez à son développement, soumettre vos idées, vos expertises et même le financer, rdv sur le site officiel : http://www.kunzisoft.com/