Problèmes de compatibilité entre Entity Framework et le Multilingual App Toolkit ?

Entity Framework et le le Multilingual App Toolkit  (MAT) utilisent tous deux les fichiers de ressources :.

  • EF les utilise pour garder des traces des migrations.
  • MAT les utilise pour trouver les informations à localiser.

EF et MAT sont compatibles?

Si les deux sont utilisées dans un même projet, il est utile de prendre une précaution simple :

  • Pour chaque fichier .xlf manipuler par MAT, il faut marquer les informations de EF comme n’étant pas à traduire.
  • Un fichier de rexs est produit par MAT pour chaque migration. Il est vide, mais ne faut pas le supprimer.

MAT et EF sont alors compatibles.

Où est le problème?

Malgré cela, il peut arriver que le MAT fasse remonter des warnings du type :

Warnings liés à MAT


Côté migration, il manque effectivement des fichiers .fr-FR.resx (2 sur 4).

Liste de fichier produits pour la migration Entity Framework

Dans ce cas, le MAT indique que des ressources ne sont plus présentes. Un développeur les a peut être supprimées par erreur.

Comment s’en sortir?

Pour s’en sortir, il faut créer un fichier fr-FR.rex pour chaque fichier manquant (si cela est possible, aller les chercher dans TFS).

Le fichier peut être créé en faisant une copie du fichier d’origine.

Ensuite, il faut bien vérifier que le fichier fr-FR.xlf indiqué, les ressources sont bien indiquées comme n’étant pas à traduire.

Liste de données marquées comme n'étant pas à traduire


Peut-on avoir une approche plus propre?

Il existe une solution qui n'est pas documentée, mais qui est expliquée sur le Uservoice de MAT. Elle consiste à marquer les fichiers que MAT doit ignorer.

Pour cela il faut ouvrir son fichier .csproj et modifier à la main les noeuds EmbeddedResource qui concernent un fichier à exclure. Pour chaque noeud, on ajoute <SuppressAutomaticLocalization>true</SuppressAutomaticLocalization>.

Noeuds xml à modifier

Moralité

Toujours être vigilant et méthodique quand on utilise des technologies qui exploitent le même type de solutions pour des usages bien différents.

Bien évidemment, l'approche la plus simple consiste à isoler les ressources à localiser dans une autre assembly. Ainsi MAT ne cherchera pas à interagir avec un fichier qui n'est pas à localiser.

Jérémy Jeanson

Comments

You have to be logged in to comment this post.