-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hallo!
Hab gerade nen kleines Problem mit caching und gettext.
Gettext überschreibt die
fragment_cache_key
und
expire_fragment
def fragment_cache_key_with_gettext(name)
ret = fragment_cache_key_without_gettext(name)
if ret.is_a? String
ret.gsub(/:/, ".") << "_#{normalized_locale}"
else
ret
end
end
alias_method_chain :fragment_cache_key, :gettext
def expire_fragment_with_gettext(name, options = nil)
return unless perform_caching
key = fragment_cache_key_without_gettext(name)
if key.is_a?(Regexp)
self.class.benchmark "Expired fragments matching: #
{key.source}" do
fragment_cache_store.delete_matched(key, options)
end
else
key = key.gsub(/:/, “.”)
self.class.benchmark “Expired fragment: #{key}, lang = #
{available_locales.inspect}” do
available_locales.each do |lang|
fragment_cache_store.delete("#{key}_#{lang}", options)
end
end
end
end
alias_method_chain :expire_fragment, :gettext
dazu benutzt es
def available_locales
unless (GetText.cached? and @@available_locales)
@@available_locales = (Dir.glob(File.join(RAILS_ROOT,
“locale/[a-z]*”)).map{|path| File.basename(path)} <<
“en”).uniq.sort.reverse
end
@@available_locales
end
und
# Returns a normalized locale which is in available_locales.
# * locale: a Locale::Object or nil.
def normalized_locale(locale = nil)
locale ||= GetText.locale
(available_locales &
[locale.to_general, locale.to_s, locale.language,
Locale.default.language, “en”].uniq)[0]
end
Das Problem ist, dass aber immer nur _en an die cache files gehängt
wird, egal welche locale ausgewählt ist und beim expire nie etwas
expired wird, weil es da wohl nicht geht…
ist da jemandem was aufgefallen? Ich glaube es liegt an der
available_locales, die wohl nicht so recht funktionieren will.
Bin über jede Idee dankbar!
Gruß
Manuel
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
iD8DBQFISOxNs/WwCK0ZZEARAnApAKC7ODTUiGTDh4gdcvVGOuPPYeCooACglOJ4
peGOV1HYDEfO2wkyhhRAQp4=
=SnCC
-----END PGP SIGNATURE-----