Hi,
I am using Globalize plug-in extensively and I made some "tuning" to
it.
1.	First I have added a method to search for strings that should be 
translated (not visiting every page from the site).
2.	Then I added a new method to be able to pass an array of arguments to 
a string like: "%s likes %s and %s gave him %d bottles of %s".t /John 
/milk /Doe /5 /beer This result into many strings added to the DB 
because .t method is called for each replacement.
I added .t_p method that works like:
"%s likes %s and %s gave him %d bottles of %s".t_p("John",
"milk",
"Doe", 5, "beer")
3.	Then a simple class with one method to auto translates strings using 
bublefish powered by Systran.
All are very simple codes, but I think that it might help on a starting 
project with globalize.
Codes:
2. In core_ext.rb add this:
	      def translate_p(arg = nil, default= nil)
        Locale.translate(self, default, arg)
      enD
      alias :t_p :translate_p
Then in db_view_translator.rb change the fetch methid with this one:
def fetch(key, language, default = nil, arg = nil) # :nodoc:
      # hack for "%d %d".t / [1,2]
      if arg.kind_of?(Array)
        real_default = default || key
        result = fetch_from_cache(key, language, real_default, 1)
        arg.each do |x|
          if x.kind_of?(Numeric)
            result.sub!(''%d'',x.to_s)
          else
            result.sub!(''%s'',x.to_s)
          end
        end
        return result
     # end of hack
      else
        # use argument as pluralization number, if number
        num = arg.kind_of?(Numeric) ? arg : nil
        # if there''s no translation, use default or original key
        real_default = default || key
        result = fetch_from_cache(key, language, real_default, num)
        if num
          return result.sub(''%d'', num.to_s)
        else
          return arg.nil? ? result : result.sub(''%s'',
arg.to_s)
        end
      end
    end
1.add this to any controller and call it
def get_translateable_strings
    Locale.clear_cache
    Locale.translator.cache_reset
    @strs = []
    #getting untraslated strings from views (.rhtml files)
    Dir.glob("#{RAILS_ROOT}/app/views/**/*.rhtml").collect do |f|
      ll = File.read(f).scan(/[\"]([^\"]*)[\"]\.[t|t_p]/)
      @strs << ll
      ll =
File.read(f).scan(/[\'']([^\'']*)[\'']\.[t|t_p]/)
      @strs << ll
    end
    #getting untraslated strings from helpers
    Dir.glob("#{RAILS_ROOT}/app/helpers/**/*.rb").collect do |f|
      ll = File.read(f).scan(/[\"]([^\"]*)[\"]\.[t|t_p]/)
      @strs << ll
      ll =
File.read(f).scan(/[\'']([^\'']*)[\'']\.[t|t_p]/)
      @strs << ll
    end
    #getting untraslated strings from controllers
    Dir.glob("#{RAILS_ROOT}/app/controllers/**/*.rb").collect do |f|
      ll = File.read(f).scan(/[\"]([^\"]*)[\"]\.[t|t_p]/)
      @strs << ll
      ll =
File.read(f).scan(/[\'']([^\'']*)[\'']\.[t|t_p]/)
      @strs << ll
    end
    #getting untraslated strings from environment.rb
    Dir.glob("#{RAILS_ROOT}/config/environment.rb").collect do |f|
      ll = File.read(f).scan(/[\"]([^\"]*)[\"]\.[t|t_p]/)
      @strs << ll
    end
    @new_strs=Array.new
    @new_strs=@strs.flatten.uniq.sort
    LOCALES.values.each do |loc|
      Locale.set "#{loc}"
      @new_strs.each do |str|
        str.to_s.translate
      end
#translate error messages
      ActiveRecord::Errors.default_error_messages.each_value do 
|error_msg|
        error_msg.translate
      end
    end
3.
require ''net/http''
require ''uri''
class Systran
  TRANSLATOR_ENGINE = "http://www.babelfish.altavista.com/tr"
  #Available options for trans_key:
  #zh_en=>Chinese-simp to English
  #zt_en=>Chinese-trad to English
  #en_zh=>English to Chinese-simp
  #en_zt=>English to Chinese-trad
  #en_nl=>English to Dutch
  #en_fr=>English to French
  #en_de=>English to German
  #en_el=>English to Greek
  #en_it=>English to Italian
  #en_ja=>English to Japanese
  #en_ko=>English to Korean
  #en_pt=>English to Portuguese
  #en_ru=>English to Russian
  #en_es=>English to Spanish
  #nl_en=>Dutch to English
  #nl_fr=>Dutch to French
  #fr_nl=>French to Dutch
  #fr_en=>French to English
  #fr_de=>French to German
  #fr_el=>French to Greek
  #fr_it=>French to Italian
  #fr_pt=>French to Portuguese
  #fr_es=>French to Spanish
  #de_en=>German to English
  #de_fr=>German to French
  #el_en=>Greek to English
  #el_fr=>Greek to French
  #it_en=>Italian to English
  #it_fr=>Italian to French
  #ja_en=>Japanese to English
  #ko_en=>Korean to English
  #pt_en=>Portuguese to English
  #pt_fr=>Portuguese to French
  #ru_en=>Russian to English
  #es_en=>Spanish to English
  #es_fr=>Spanish to French
  def self.translate_string(string, trans_key)
    url = URI.parse(TRANSLATOR_ENGINE)
    http = Net::HTTP.post_form(url,
                               {"doit"=>"done",
                                   "intl"=>"1",
                                   "tt"=>"urltext",
                                   "trtext"=>"#{string}",
                                   "lp"=>"#{trans_key}",
                                  
"btnTrTxt"=>"Translate"})
    begin
      doc = http.body.split(''<input type=hidden name="q"
value="'')
      doc = doc[1].split(''"><input type='')
    rescue
      doc = http.body.split(''<td bgcolor=white class=s><div 
style=padding:10px;>'')
      doc = doc[1].split(''</div></td>'')
    end
    @translated_text=doc[0].to_s
    return @translated_text
  end
end
-- 
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---