2010-07-08 9 views
0

J'ai un léger désagrément avec le plugin javascript_I18n, qui génère des versions js-friendly des tables de traduction I18n, afin que vous puissiez localiser votre javascript. Tout fonctionne bien, mais cela fonctionne en appelant to_json sur le hachage de traduction de chaque locale et en produisant les résultats dans un fichier. Quand vous appelez to_json sur un hash, la chaîne résultante est une seule ligne, ce qui signifie que vous vous retrouvez avec des fichiers avec une énorme ligne à la fin. Ceci à son tour empêche git de fusionner les changements, car la fusion fonctionne ligne par ligne et ne peut pas traiter une seule ligne massive avec des changements au milieu quelque part. Ce n'est pas un gros problème car je peux toujours générer de nouveau le fichier de traduction compatible avec js avec une tâche de rake fournie avec le plugin (qui remplace le fichier mid-merge par un nouveau dans lequel je peux juste valider), mais c'est juste un peu ennuyeux. Il m'est apparu que si le json était sorti sur des lignes différentes, au lieu de toutes les lignes, cela ne poserait pas de problème, et cela ne rendrait même pas le fichier beaucoup plus grand, en insérant simplement deux caractères (\ n) par ligne. Avant d'essayer de hacher la chaîne résultante avec un gsub pour la diviser en plusieurs lignes, y a-t-il une meilleure façon d'appeler to_json sur un hash et d'afficher les résultats sur des lignes séparées? Ou une meilleure façon de résoudre ce problème en général? (Je ne peux pas trouver beaucoup utile dans la documentation pour javascript_I18n).Rails: Hash # to_json - divisé sur plusieurs lignes?

Grateful pour tout conseil - max

Répondre

0

ne pas vous répondre à la question, mais de donner une suggestion:

Il serait probablement plus facile d'ignorer tous les fichiers de traduction js générés. En effet, même si vous séparez la traduction en plusieurs lignes, il existe toujours des risques de conflits de fusion, que vous avez probablement déjà résolus une fois dans votre fichier yaml.

Je définiriez cette façon:

1). gitignore tous les fichiers de traduction js.

2). Dans ActionController, ajoutez un filtre before pour générer les fichiers js automatiquement sur chaque chargement en mode développement uniquement.

3). Modifiez votre fichier deploy.rb pour générer les fichiers js après la mise à jour du code.

Fini les conflits de fusion! (au moins pour les fichiers de traduction js): D

Aaron Qian

Questions connexes