I found the problem: I also had to overwrite the methods in
TranslationHelper that forward their calls to I18n.translate

Have a look at the plugin if you want, there are some new features :-)

On 2 Jan., 12:03, Don Darone <[email protected]> wrote:
> Hi,
>
> you guys helped me very much the last time,
> maybe you could help me again with a more general issue.
>
> I would like to overwrite the translate method (and t alias) within
> Rails' core I18n module.
>
> I tried several things, first of all this one...
>
> module I18n
>   class << self
>     alias_method :old_translate, :translate
>
>     def translate(key, options = {})
>       # my own translate method
>       options[:default] = 'blabla'
>     end
>
>     alias_method :t, :translate
>   end
> end
>
> This is required in my init.rb and even used, but only within my own
> plugin. All the translate calls within my Rails app do not use it.
>
> I also tried naming my module I18nHacks and using "extend I18n" or
> "class << I18n".
>
> How could I do this? Could you also drop some words about what
> possibilities there are in general for extending/overwriting other
> module's stuff?
>
> Thank you so much!
>
> Don
>
> On 30 Dez. 2008, 20:09, Don Darone <[email protected]> wrote:
>
> > Thanks for your replies.
>
> > Guess I wasn't sure on how to use with_options.
>
> > I made a small plugin with the methods I asked for.
> > I tried to put in on git hub (first time working with)
> > underhttp://github.com/DonDarone/localization_scopes/tree/master
>
> > So check it out!
> > All kinds of construcitve comments appreciated :-)
>
> > Don
>
> > On 30 Dez., 17:39, "Iain Hecker" <[email protected]> wrote:
>
> > > Hi,
>
> > > I've experimented with automatic scopes for views, but I lacked a good
> > > way of deciding which scope to use, especially in the case of
> > > partials. Say you have a product partial in the products controller.
> > > How should that be scoped? You can scope per action, which can be
> > > desirable (the submit button gets another text if it is edit or new)
> > > or general for one that partial, but that means that you'd have to
> > > translate double. If it is dependent on the file it is in, you cannot
> > > make a distinction any more.
>
> > > The first can be done with something like:
>
> > > def t_with_view_scope(key, options = {})
> > >   t_without_view_scope(key, options) if options[:scope]
> > >   scope = __FILE__.sub(/.*\/app\//, "").sub(/\..*/,'').gsub(/\//,".")
> > > # remove directory structure untill app and remove extension and
> > > replace dir-separators with dots
> > >   t_without_view_scope(key, options.merge(:scope => scope))
> > > end
>
> > > The second:
>
> > > def t_with_view_scope(key, options = {})
> > >   t_without_view_scope(key, options) if options[:scope]
> > >   scope = params[:controller] + '.' + params[:action]
> > >   t_without_view_scope(key, options.merge(:scope => scope))
> > > end
>
> > > alias_method_chain :t, :view_scope
>
> > > (just out of the top of my head, so there might be problems with this 
> > > code)
>
> > > Cheers,
> > > iain
>
> > > On Tue, Dec 30, 2008 at 13:49, Sven Fuchs <[email protected]> 
> > > wrote:
>
> > > > Hi Don,
>
> > > > not sure, but here's a quick answer.
>
> > > > How about using with_options?
>
> > > > with_options :scope => :scope do |s|
> > > >   s.t(:key)
> > > > end
>
> > > > calls t(:key, :scope => :scope)
>
> > > > On 30.12.2008, at 13:14, Don Darone wrote:
>
> > > > > Hi,
>
> > > > > we recently switched to Rails 2.2 and with that, also from the
> > > > > simple_localization plugin to Rails core localization.
>
> > > > > Since the plugin had two nice features that I couldn't find yet in
> > > > > Rails core, I was wondering whether some of you already addressed
> > > > > them.
>
> > > > > In Rails localization you can add a scope to a single translation
> > > > > using t(:my_key, :scope => 'general.scope')
>
> > > > > 1. Scope blocks
> > > > > In simple_localization you could open a block and let every
> > > > > translation in there have the same scope, which was quite helpful
> > > > > sometimes:
> > > > > l_scope 'general_scope' do
> > > > >  t(:my_key)
> > > > >  t(:next_key)
> > > > >  t(:other_key)
> > > > > end
> > > > > (I omitted the Erb stuff to just give the idea).
>
> > > > > 2. Scope contexts
> > > > > In simple_localization you could use another method called lc to use
> > > > > the scope of the context you are in, which was determined by the file
> > > > > it was in. For example in a settings_controller, you could use lc
> > > > > (:heading) which would correspond to t(:heading, :scope => 'settings')
> > > > > for Rails core.
>
> > > > > In a views/settings/list.html.erb you could to lc(:heading) to
> > > > > automatically get a scope 'settings.list', like calling t
> > > > > (:heading, :scope => 'settings.list')
>
> > > > > I found these features very cool and was just wondering whether some
> > > > > of you would miss them, too ;-)
>
> > > > > Thanks for your comments!
>
> > > > > Don
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"rails-i18n" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rails-i18n?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to