Super global dummy method for gettext + rails 2.2


#1

Hi,

since rails 2.2 doesn’t work with gettext anymore I decided to use a
gettext dummy method until the gettext team relases a working version
for rails 2.2. My application doesn’t need any i18n support right now
and this way i figured it would be very easy to integrate gettext
later. Just setup the plugin and go.

So I need a method called _ which is available in alle models, views,
controllers, helpers, doing of nothing else then:

def _(str)
str
end

I’m still a newbie so I tried a lot but didn’t come to a good
solution. I just don’t know where to define this method to make it
globally available.

I would really appreciate your help!

Olaf


#2

On Nov 17, 2008, at 2:04 PM, Olaf wrote:

Perhaps it would be acceptable in your situation to do:

class Object

def _(str)
str
end
end

somewhere in your environment.rb or in an initializer.

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#3

Thanks, I tried that, but it doesnt work. I added to the end of
enviroment.rb the following code:

class Object
def _(s)
s
end
end

I also tried

class ActiveRecord::Base
def _(s)
s
end
end

But I still get a method missing error for:

class Customer < ActiveRecord::Base
validates_inclusion_of :gender, :in => [‘f’, ‘m’],
:allow_blank => true,
:message => _(“Required field cannot be left blank”)
end

Any other ideas? What am I doing wrong?

Thanks for your help!


#4

Try adding

class ActiveRecord::Base
def self._(s)
s
end
end

Since _ will be called as a Class method on Customer at that point.

-Rob

On Nov 17, 2008, at 4:02 PM, Olaf wrote:

I also tried
validates_inclusion_of :gender, :in => [‘f’, ‘m’],

controllers, helpers, doing of nothing else then:

I would really appreciate your help!

Olaf

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid
+1 513-295-4739
Skype: rob.biedenharn


#5

I tried both

class ActiveRecord::Base
def self._(s)
s
end
end

class Object
def self._(msg)
return msg
end
end

but nothing worked. I also looked at the gettext gem and it looks to
me that they just have a module where the _() method is defined and
this module is then required in the enviroment.rb, so I tried that
also but without any luck.

It can’t be that hard to make a method globally available, or can it?

Thanks for your help!


#6

Sorry, my fault, I moved the following code to a file called

config/initializers/gettext_dummy.rb

class Object
def self._(msg)
return msg
end
end

The problem was that the definition was outside the init block in the
enviroment.rb. STUPID! everithing works now! Thanks


#7

You probably need both:

class ActiveRecord::Base
def self._(s); s; end
end
class Object
def _(s); s; end
end

Together! Not one or the other.

You might add other class methods as needed. (FYI, I have no idea
what gettext does, but this is just Ruby stuff.)

-Rob

On Nov 17, 2008, at 5:18 PM, Olaf wrote:

def self._(msg)

Thanks, I tried that, but it doesnt work. I added to the end of
class ActiveRecord::Base
:message => _(“Required field cannot be left blank”)

since rails 2.2 doesn’t work with gettext anymore I decided to
controllers, helpers, doing of nothing else then:

Olaf

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid
+1 513-295-4739
Skype: rob.biedenharn

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid
+1 513-295-4739
Skype: rob.biedenharn


#8

Glad you figured it out.
-Rob