Если и есть за что не любить Ruby и Rails, так это за такое вот...
begin
require 'locale'
# Do as if we are gettext
module Locale
# FreeBSD has ALL, and OS X has LC_ALL. And ruby-gettext has ALL but does not work.
if defined?(LC_ALL)
ALL = LC_ALL
end
def self.switch(name)
if self.respond_to?(:setlocale)
send :setlocale, Locale::ALL, name
elsif self.respond_to?(:set)
send :set, Locale::ALL, name
end
end
end
# I hate Rails and Ruby because of things like
class Date
def strftime(*args)
# might be with args
unless args.empty?
to_time.strftime(*args)
# might be with without - thx Date, idiots.
# ActiveRecord and YAML actually use this juz' like that
else
to_time.strftime(fmt='%F')
end
end
end
rescue LoadError
# Do as if we are gettext
module Locale
def self.switch(name)
RAILS_DEFAULT_LOGGER.warn "Cannot switch locales"
end
end
end
#ifdef нервно курит за дверью. Когда же они возьмут себя в руки...
Это к вопросу о том, что ruby-gettext вообще не поддерживает форматирование дат. В смысле совсем.
UPD: А вместо того чтобы не портить наши буковки они строят вот такую вот CORBA:
What others said
Макс Лапшин
Ты будешь смеяться, но ровно сегодня я ковырялся именно с таким же кодом.
Мне нужно было просто $10,000 или 10 000 р.
Возникает желание взять это как-то в свои руки.
Julik
Так ведь и берут... http://rubyforge.org/projects/icu4r/ только в последний раз когда я игрался с этой штукой она не могла склеить обычную строку с неюникодной :-(
Макс Лапшин
Хм. А он заводит новый класс для юникодных строк?
Julik
Да, отдельный 16-битный класс для строк (не печатаемый по дефолту даже в терминал), не совместимый с обычным - которому еще и свои регулярки надо подавать и так далее... короче говоря, "увы".
Julik
То есть не "увы" - проект хороший но реализация из языков, ничего с Руби не имеющих - "давайте дружно кастить" называется
meadow.nnick
Хотя есть желание просто прибить этот тупой проект (icu4r), как глючный и бесполезный, для желающих в качестве эксперимента добавлено автопреобразование String->UString, Regexp->URegexp в методах UString, где это кажется целесообразным. если все строки - в UTF8, то вроде проблем быть не должно.
Кому интересно - можете потестить http://rubyforge.org/frs/download.php/11088/icu4r-0.1.4.2006.06.15-experimental.tar.gz
meadow.nnick
Чуть исправленный:
http://rubyforge.org/frs/download.php/11089/icu4r-0.1.4.2006.06.15-experimental.tar.gz a.rb(main):001:0> a = "что за XXX!".u => \u0447\u0442\u043E\u0020\u0437\u0430\u0020\u0058\u0058\u0058\u0021 a.rb(main):002:0> puts a что за XXX! => nil a.rb(main):003:0> a[/([а-я]+)\s+(\w+)\s+(\w+)/i,2]='shön mädhen' => "sh\303\266n m\303\244dhen" a.rb(main):004:0> puts a что shön mädhen XXX! => nil a.rb(main):005:0> a[/([а-я]+)\s+(\w+)\s+(\w+)/i,3]='shön mädhen' => "sh\303\266n m\303\244dhen" a.rb(main):006:0> puts a что shön shön mädhen XXX! => nil a.rb(main):007:0> a << " еще строка" ; puts a что shön shön mädhen XXX! еще строка => nil a.rb(main):008:0> puts a + " и ишшо" что shön shön mädhen XXX! еще строка и ишшо
ЗЫ звыняюсь за спам
Зверёк Харьковский
Хотя есть желание просто прибить этот тупой проект (icu4r)...
Done. http://rubyforge.org/forum/forum.php?forum_id=7361 ICU4R - ICU binding for Ruby: project is dead