Ruby on Rails türkçeleştirme

Bu yazı, Ruby on Rails’in scaffolding özelliği ve tarih formatlama fonksiyonları için türkçeleştirme işlemi yapmak isteyenler için. Ruby on Rails’i ya da scaffolding’in nasıl yapıldığını yazmayacağım, bunları zaten bildiğinizi farz ederek sadece türkçeleştirmeden bahsetmek istiyorum.

Ruby on Rails’i türkçe projelerde kullanmak için birkaç noktaya dikkat etmeniz gerekli. Bunlardan ilki encoding.

Diğer bir nokta, Ruby on Rails’in scaffolding özelliği ve tarih formatlama özellikleri amerikan formatına göre hazırlanmış. Ancak biraz kurcalayarak bu özelliklerden türkçe projeler için de yararlanabiliriz. Türkçeleştirme işleminden sonra proje hazırlama hızınız daha da artacaktır.

Bu yazıda bahsettiğim dosyaları biraz kurcalayarak scaffolding ile oluşturulan sayfalar için kendinize özgü bir tasarım da yaratabilirsiniz. Özellikle yönetim arabirimleri için ideal olan scaffolding sayfalarına kendinize ait bir tarz oluşturduktan sonra tasarımıyla hiç vakit kaybetmeden müşterilerinize sunabileceksiniz.

Ayrıca RadRails için de iki önemli ipucu. RadRails hiç çalışmıyorsa ve RadRails’in encoding desteği ile ilgili…

Encoding

Benim gibi PHP tabanlıysanız muhtemelen latin5 (iso-8859-9) encodingi kullanıyor olabilirsiniz. Artık UTF-8’e geçmenin zamanıdır. RoR’un varsayılan encoding’i zaten UTF-8. UTF-8 karakter seti aslında tam bir türkçe desteği sağlıyor o nedenle değiştirmeye gerek yok, zira çok uğraşırsınız. Ayrıca Ajax kullanacaksanız zaten diğer encodingleri kullandığınızda karakter sorunu yaşamanız muhtemel, çünkü javascript de utf-8 kullanır. O yüzden iyisi mi siz baştan UTF-8 çalışın.

Burada dikkat etmeniz gereken nokta, veritabanını da UTF-8 kullanacak şekilde ayarlamanız gerekli. Ayrıca UTF-8 desteklemeyen bir text editörü ile dosyalarınızı açarsanız türkçe karakterlerin bozuk gözükmesine neden olmanız muhtemel. Neyseki günümüzdeki editörlerin çoğunluğu UTF-8 destekli.

Scaffolding ve Varsayılan Tarih Formatı

Varsayılan tarih formatı da ingilizce. Ancak bunu değiştirmeniz mümkün:
Önce, tarih formatını düzeltmek için config/environment.rb dosyasına:

[source:ruby]

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.update(:default => ‘%d/%m/%Y %H:%M’)
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.update(:default => ‘%d/%m/%Y’)
require ‘overrides’

[/source]

satırlarını ekledikten sonra az önce require ettiğimiz overrides dosyasını lib/overrides.rb adı altında yaratıp içerisine gün ve ayların türkçe karşılıklarını yazabiliriz:

[source:ruby]

Date::MONTHS = { ‘Ocak’ => 1, ‘Şubat’ => 2, ‘Mart’ => 3, ‘Nisan’ => 4, ‘Mayıs’ => 5, ‘haziran’ => 6, ‘Temmuz’ => 7, ‘Ağustos’ => 8, ‘Eylül’=> 9, ‘Ekim’ =>10, ‘Kasım’ =>11, ‘Aralık’ =>12 }
Date::DAYS = { ‘Pazar’ => 0, ‘Pazartesi’ => 1, ‘Salı’ => 2, ‘Çarşamba’=> 3, ‘Perşembe’ => 4, ‘Cuma’ => 5, ‘Cumartesi’ => 6 }
Date::ABBR_MONTHS = { ‘Oca’ => 1, ‘Şub’ => 2, ‘Mar’ => 3, ‘Nis’ => 4, ‘May’ => 5, ‘Haz’ => 6, ‘Tem’ => 7, ‘Ağu’ => 8, ‘Eyl’ => 9, ‘Eki’ =>10, ‘Kas’ =>11, ‘Ara’ =>12 }
Date::ABBR_DAYS = { ‘Paz’ => 0, ‘Pzt’ => 1, ‘Sal’ => 2, ‘Çar’ => 3, ‘Per’ => 4, ‘Cum’ => 5, ‘Cmt’ => 6 }
Date::MONTHNAMES = [nil] + %w(Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık)
Date::DAYNAMES = %w(Pazar Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi)
Date::ABBR_MONTHNAMES = [nil] + %w(Oca Şub Mar Nis May Haz Tem Ağu Eyl Eki Kas Ara)
Date::ABBR_DAYNAMES = %w(Paz Pzt Sal Çar Per Cum Cmt)

class Time
alias :strftime_nolocale :strftime

def strftime(format)
format = format.dup
format.gsub!(/%a/, Date::ABBR_DAYNAMES[self.wday])
format.gsub!(/%A/, Date::DAYNAMES[self.wday])
format.gsub!(/%b/, Date::ABBR_MONTHNAMES[self.mon])
format.gsub!(/%B/, Date::MONTHNAMES[self.mon])
self.strftime_nolocale(format)
end
end

[/source]

Aktif hale geçmesi için web server’ın restart edilmesi gerektiğini unutmayın…

Kişiselleştirme

Her proje için bütün bunları tekrar etmenize gerek yok aslında. Ruby on Rails’in yeni proje yaratırken baz aldığı template dosyalarını bir sefere mahsus güncellemeniz yeterli olacaktır. Windows kurulumunda ilgili referans dosyaları aşağıdaki dizinlerde mevcut.

C:\ruby\lib\ruby\gems\1.8\gems\rails-1.1.6\environments

Scaffolding ile yaratılan dosyalara kendinize ait bir tarz vermek için şablon dosyalar ise şu dizinde:
C:\ruby\lib\ruby\gems\1.8\gems\rails-1.1.6\lib\rails_generator\generators\components\scaffold\templates

Bu dizinlerdeki dosyaları güncelledikten sonra her yeni proje yaratışınızda, projeniz belirlediğiniz ayarlarda yaratılacaktır.

RadRails

RadRails kullanmadıysanız ya da kullanmak isteyip windows üzerinde bir türlü çalıştıramadıysanız daha önce RadRails ile ilgili yazdığım kısa yazıya bakabilirsiniz.

İlgili Yazılar

1 Yorum

  1. selam
    linuxmint “katya”+ruby1.9+rails+sqlite3 … kurdum.
    rails server açıp dosyaya “merhaba dünya” dediğimde “turkish” characters error alıyorum .
    ama “merhaba dunya” yazarsam sorun yok.

    Reply
  2. Woah! I’m really enjoying the template/theme of this blog. It’s simple, yet effective. A lot of times it’s very difficult to get that “perfect balance” between usability and visual appeal. I must say that you’ve done a excellent job with this. Additionally, the blog loads extremely quick for me on Chrome. Exceptional Blog!

    Reply

Leave a Comment.