Uncategorized

Préprocesseur Xaml, partie 2 : utilisation

Ligne de commande

Pour prendre en main le préprocesseur, faire vos premiers tests avec la syntaxe, le mieux est d’expérimenter sur un fichier en utilisant un shell.

prepro.exe SYMBOL_LIST input_file.xml output_file.xml

où SYMBOL_LIST est une liste de symbole de symbole séparée par des point virgules (attention, sensibilité à la casse). Le titre des deux derniers billets est d’ailleurs un peu mensonger : le préprocesseur n’est pas spécifique à XAML et peut s’utiliser de manière générale pour des fichiers XML.

Intégration à Visual Studio

Le problème

Coder le préprocesseur était facile. Par contre j’ai « perdu » plusieurs soirs à tenter de l’intégrer à un projet Visual Studio, c’est à dire à MSBuild. Je met perdu entre guillemets parce que j’ai appris pour le coup à m’en servir, ce n’était donc pas du temps perdu.
Lire la suite « Préprocesseur Xaml, partie 2 : utilisation »

Uncategorized

Préprocesseur Xaml, partie 1 : la syntaxe

Il y a quelque chose de très embêtant avec le XAML, c’est qu’il n’y a pas de directive de compilation conditionnelle. Ainsi on est rapidement embêté dès que l’on cherche à utiliser un code commun pour plusieurs (versions d’une) application(s).

Il faut donc recourir à une solution externe, et c’est ce que j’ai fait. J’ai créé un petit programme qui prend en entrée un fichier XML et qui en produit un en sortie. Entre temps, il lui aura appliqué des traitements spécifiques.

La solution la plus neutre pour ne pas impacter les autres outils se servant des fichiers XAML, en premier lieu Visual Studio, et d’utiliser des commentaires. J’ai en effet lu sur le net une demi-solution utilisant le préprocesseur C++ et le type de directives qui vont avec, mais personnellement je trouve ça très moche.

La directive de base IF

Je me suis inspiré des commentaires conditionnels d’Internet Explorer. La directive de base est :

IF[expression]
Lire la suite « Préprocesseur Xaml, partie 1 : la syntaxe »

Windows Phone

Des ressources multilingues pour vos applications !

Problématique

Internationaliser une application Windows Phone est une étape chronophage lorsqu’on le fait seul. De plus, nous les traduisons généralement vers des langues qui ne sont pas nos langues maternelles, ce qui produit des traductions peu naturelles.

C’est pourquoi je me suis attelé à un projet un peu particulier : celui de rassembler des traductions de termes et expressions couramment employés sur la plateforme pour les langues avec lesquelles je peux me débrouiller (français, anglais, japonais, chinois traditionnel, chinois simplifié).

La particularité de ce projet est de se passer totalement d’outil de mauvaise qualité tel que Google Translate. La méthodologie est d’utiliser les traductions présentes sur le téléphone dans les différentes langues pour établir une base de mots. On peut ainsi les réutiliser pour créer des applications qui utilise le vocable natif. C’est en fait presque du reverse engineering linguistique. D’autre mots sont extraits de textes réels (notamment Wikipédia) ou de termes entendus dans des séries de télévision.

projet_wp_ui

Organisation des données

Sur la capture d’écran ci-dessus, on voit que chaque entrée à un nom (colonne name). Lorsque le projet est exporté sous forme de fichier ressource, c’est ce nom qui utilisé comme clé pour obtenir la valeur d’une entrée.
Lire la suite « Des ressources multilingues pour vos applications ! »

Uncategorized

LangEditor : un éditeur de fichiers .resx

À la fin de l’an dernier, j’ai eu besoin pour un projet d’éditer de nombreux fichiers de ressources au sein de Visual Studio. Mais l’éditeur de ce dernier est particulièrement limité, et ne permet pas d’aligner les données de plusieurs fichiers.

J’ai donc commencé à en écrire un. Seulement voilà, je me suis fait griller la politesse. Une extension Visual Studio qui fait ce que je souhaite est sortie avant que je ne finalise mon programme.

lang_editor_exemple
Mon éditeur de fichier resx.

J’ai néanmoins continué à travailler sur mon programme, car les personnes avec lesquelles je suis susceptible de travailler ne sont pas développeuses. Ainsi, télécharger, installer et utiliser Visual Studio serait déjà bien délicat, pour une utilisation au final malaisée.

Mon programme est un exécutable standalone qui vient avec son installeur. Son avantage principal est de gérer les fichiers .langproj, qui sont des fichiers qui suivent l’Open Packaging Convention et qui empaquètent plusieurs fichiers ressources. Ainsi, il suffit d’envoyer aux traducteurs un seul fichier, et il pourra travailler sur toutes les langues qui lui auront été fournies.

lang_proj_explorer
Un fichier .langproj dans l’explorateur Windows.

Vous pouvez télécharger le programme ici, mais veuillez garder à l’esprit qu’il contient probablement pas mal de bugs. Contactez-moi si certains vous gênent vraiment.

Windows Phone

Un éditeur de ressources multilingue

(Note : il s’agit d’un article longtemps laissé sous forme de brouillon, et qui n’a pas été rédigé autant que souhaité, mais que je publie quand même parce qu’il est relié au suivant.)
Mon précédent billet je vous ai présenté un petit outil en ligne de commande destiné à mieux gérer les fichiers de ressources dans vos projet Visual Studio. Mais comme le problème est plus ample que la simple vérification de la présence ou l’absence d’une ressource, il faut une réponse adaptée.

Éditeur, aperçu de l’interface

Et ma réponse, c’est un nouvel éditeur de fichiers ressources. Les objectifs sont modestes : permettre d’éditer plusieurs fichiers à la fois, et avoir des ressources générées à partir d’autres (on garde ça pour un prochain article). Lire la suite « Un éditeur de ressources multilingue »

Windows Phone

Vérifiez la cohérence de ses fichiers ressources automatiquement

TL;DR

L’internationalisation

Un des aspects essentiels pour les développeurs francophones est de pouvoir livrer nos applications dans différentes langues étrangères, en premier lieu l’anglais, afin de toucher un plus large public que celui de la seule sphère francophone. Le fait de traduire une application est appelé internationalisation (i18n) et celui de l’adapter en fonction d’un pays ou d’une région est appelé localisation (L10n).

Fort heureusement, la plateforme que nous ciblons (le framework.net) prévoit des mécanismes permettant de gérer l’internationalisation et les problématiques afférentes : différentes traductions, mais aussi la présentation des données horaires, monétaires, … Cependant, le moins qu’on puisse dire est que les outils permettant d’en tirer profit sont rares et peu fournis en fonctionnalités. En particulier au niveau de l’édition des ressources.
Lire la suite « Vérifiez la cohérence de ses fichiers ressources automatiquement »

Chinois

Programme : Simple Chinese Segmenter

Avant l’explication, une capture d’écran et le lien de téléchargement (pour ceux qui ne sont pas intéressé par la technique).

Télécharger le programme.

Hier j’avais envie de me mettre sérieusement au chinois, en prenant un texte à bras le corps.
Évidemment il ne m’a pas fallu plus de 30 secondes pour me rendre compte que la non segmentation des phrases allait me poser problème, notamment pour chercher du vocabulaire.

Je me suis donc mis à la recherche du segmenter, un lexer, un word splitter, bref appelez ça comme vous voulez, mais il me fallait quelque chose qui découpe mes phrases.

Comme je n’ai rien trouvé j’ai décidé de faire le travail moi-même, sur la base d’un algorithme particulièrement stupide (d’où le nom réel du programme, qui n’est pas vraiment « simple ») suivant :

On utilise un pointeur sur le caractère courant, initialisé au début de la chaîne
TANT QUE ce pointeur n’a pas atteint la fin de la chaîne à analyser
on regarde si les 4 prochain caractères existent dans le dictionnaires
SI un tel mot existe ALORS on l’affiche sur la sortie et on augmente le pointeur de 4
SINON on ressaye avec une longueur de 3, puis 2, puis 1 et si quelque chose est trouvé on l’affichage et on augmente le pointeur en conséquence.

En fait, comme un dictionnaire est utilisé, l’affichage n’est pas seulement celui de l’élément trouvé : il est également accompagné de sa définition.

Le dictionnaire cfdict.xml à été utilisé. Il a été modifié pour obtenir une version plus petite qui ne contient que les entrées qui existent sous forme traditionnelles et qui font au plus 4 caractères.

Le programme va donc chercher les mots qu’il trouve et les affiche. Il est codé à l’arrache, mais il fait le boulot 🙂
Record personnel du temps de développement d’un soft utile battu : quelques heures.

Japonais

Aventure linuxienne, ou la compilation réussie d’un analyseur morphologique

Suite à ma recherche de projet pour le Google Summer of Code, je me suis à nouveau intéressé à l’analyse lexicale d’une phrase japonaise. J’ai donc relu un papier de recherche sur le sujet, qui fait mention de deux analyseurs morphologiques.

Tous deux sont open-source, et si j’avais déjà téléchargé Chasen en mode source, je n’avais pas poussé la chose plus loin. Cette fois j’ai décidé d’aller voir du côté de Mecab.
Après installation sur Windows il se trouve que le soft a l’air de fonctionner, mais powershell (ni cmd) ne supportant l’affichage de caractères non-ASCII, je ne pouvais pas me rendre compte de la sortie réelle du programme.
Lire la suite « Aventure linuxienne, ou la compilation réussie d’un analyseur morphologique »

Japonais

Lecture et écriture du japonais sur Windows

Dans le cadre d’une de mes activités professionnelles j’ai rédigés 3 documents portant sur l’interaction d’un ordinateur (fonctionnant avec Windows) et de la langue japonaise.

Le premier traite de l’affichage des caractères japonais, et des problèmes qui y sont inhérent.

Le second présente la procédure d’installation de l’IME Microsoft, ainsi que les bases de son utilisation, pour les deux dernières versions de Windows parues (Vista, 7). Le troisième document vient en complément du second et présente l’installation de l’IME sur Windows XP.