dynamic constant assignment

I have a constant set up like that : ALL_LOCALES => {"it"=>"Italian", "fr"=>"Français", "de"=>"Deutsch", "en- GB"=>"English (UK)", "es"=>"Español (España)", "pt-PT"=>"Português", "pl"=>"Polski", "en-US"=>"English (US)", "pt-BR"=>"Português (Brasil)"}

my locale is set : I18n.locale => :"en-US"

based on the current locale , dynamically changed, I would like to define a new constant, AVAILABLE_LOCALES which would be the ALL_LOCALES minus the current locale...

AVAILABLE_LOCALES => {"it"=>"Italian", "fr"=>"Français", "de"=>"Deutsch", "en- GB"=>"English (UK)", "es"=>"Español (España)", "pt-PT"=>"Português", "pl"=>"Polski", "pt-BR"=>"Português (Brasil)"}

I dont' see how todo that ? any clue ?

thanks a lot fyh erwin

I also tried :

          AVAILABLE_LOCALES = ALL_LOCALES.dup          AVAILABLE_LOCALES.delete_if{|key, value| key == I18n.locale }

but get also an error ... dynamic constant assignment (SyntaxError) with the dup ... I don't understand as I can do it with irb ....

Quoting Erwin <yves_dufour@mac.com>:

I also tried :

          AVAILABLE_LOCALES = ALL_LOCALES.dup          AVAILABLE_LOCALES.delete_if{|key, value| key == I18n.locale }

but get also an error ... dynamic constant assignment (SyntaxError) with the dup ... I don't understand as I can do it with irb ....

> I have a constant set up like that : > ALL_LOCALES > => {"it"=>"Italian", "fr"=>"Français", "de"=>"Deutsch", "en- > GB"=>"English (UK)", "es"=>"Español (España)", "pt-PT"=>"Português", > "pl"=>"Polski", "en-US"=>"English (US)", "pt-BR"=>"Português > (Brasil)"} > > my locale is set : I18n.locale > => :"en-US" > > based on the current locale , dynamically changed, I would like to > define a new constant, AVAILABLE_LOCALES which would be the > ALL_LOCALES minus the current locale... > > AVAILABLE_LOCALES > => {"it"=>"Italian", "fr"=>"Français", "de"=>"Deutsch", "en- > GB"=>"English (UK)", "es"=>"Español (España)", "pt-PT"=>"Português", > "pl"=>"Polski", "pt-BR"=>"Português (Brasil)"} > > I dont' see how todo that ? any clue ?

What is constant about a variable that changes everytime the locale changes? And if you have multiple users with different locales, potentially changes with every request? Given how changeable it is, why do you want to confuse the future maintainer by implying it is constant when it isn't.

Or put another way, why can't the variable be named available_locales.

Shrug,   Jeffrey