Bonjour !
J’ai un problème de “rafraîchissement” avec Globalize sur les textes
statiques (<%=“mon_texte”.t%>).
Quand Je modifie la traduction, celle-ci n’est prise en compte qu’après
redémarrage du serveur (mongrel). Hors, la nouvelle traduction a bien
été enregistrée en base (table globalize_traductions).
Pour tester, j’ai utilisé 2 méthodes différentes pour afficher dans la
vue le même texte traduit :
<%= “mon texte”.t %> : méthode classique, le “rafraîchissement” ne
fonctionne pas
Et
<%= mon_objet_ViewTranslation.text %>: là par contre le
“rafraîchissement” fonctionne et j’obtiens mon texte modifié
Il me semble que le problème vienne d’une mauvaise gestion du système de
cache de Globalize
(globalize/lib/globalize/localization/db_view_translator.rb)…
En effet, pour tester j’ai dévalider la gestion du cache de Globalize
((globalize/lib/globalize/localization/db_view_translator.rb) :
def fetch_from_cache(key, language, real_default, num, namespace =
nil)
return real_default if language.nil?
zero_form = num == 0
plural_idx = language.plural_index(num) #
language-defined plural form
zplural_idx = zero_form ? 0 : plural_idx # takes zero-form into
account
#—Suppression de la gestion du cache pour test—
cached = cache_fetch(key, language, zplural_idx, namespace)
if cached
result = cached
else
result = fetch_view_translation(key, language, zplural_idx,
namespace)
# set to plural_form if no zero-form exists
result ||= fetch_view_translation(key, language, plural_idx,
namespace) if zero_form
cache_add(key, language, zplural_idx, result, namespace)
end
result ||= real_default
end
Et là … bingo ça fonctionne…par contre je n’ai plus de gestion de
cache à l’affichage…pas top
J’ai vu dans l’api de Globalize que la classe
Globalize::DbViewTranslator possédait une méthode cache_reset() qui
pourrait être utile (ma première idée serait de faire un raz du cache Ã
chaque fois que je modifie une traduction pour forcer la lecture en
base)
Avant d’aller plus loin dans ma réflexion, quelqu’un a-t’il déjà eu ce
problème ? Et trouver une solution ?
Merci pour toutes vos réponses.
J.
Pickabee
Communication Visuelle & Multimédia
6 rue Jacques de la Roque - 13100 Aix-en-Provence
Tél. 04 42 96 98 13 - 06 32 60 31 86