2009-08-28 20 views
16

मैं अपने डेटाबेस में अपने अनुवादों को संग्रहीत करने के लिए देशी रेल i18n का विस्तार करने के लिए एक प्लगइन/मणि समाधान खोज रहा था। हो सकता है कि मैंने गलत खोज शब्द का इस्तेमाल किया, लेकिन मुझे जो जानकारी मिली वह जानकारी थी, बैकएंड को बदलना वास्तव में संभव है और यह blog entry है जो मेरे स्वयं के बैकएंड को लिखने का वर्णन करता है।रेल: डेटाबेस में स्टोर अनुवाद

यह कल्पना करना मुश्किल है कि उन सभी रेल अनुप्रयोगों में उनके अनुवाद yml-files में संग्रहीत किए गए हैं या प्रत्येक डेवलपर ने स्वयं बैकएंड लिखा है!

क्या आप इसके लिए समाधान समाधान जानते हैं? Yml में multiline ग्रंथों को संग्रहीत वास्तव में मुझे नीचे ले जाता है! ;)

धन्यवाद और बधाई दी,

जो

उत्तर

19

i18n डेटाबेस बैकएंड के रूप में डेटाबेस का उपयोग करने के लिए अंतर्निहित समर्थन है। सामग्री के साथ config/initializers/i18n.rb में एक प्रारंभकर्ता

create_table :translations do |t| 
    t.string :locale 
    t.string :key 
    t.text :value 
    t.text :interpolations 
    t.boolean :is_proc, :default => false 
    end 

फिर जोड़ने:

एक प्रवास में इस कोड का उपयोग एक तालिका बनाएं

I18n.backend = I18n::Backend::ActiveRecord.new 

और आखिरी ... डाल अनुवाद तालिका में। कुछ ऐसा:

locale key  value 
en  Cool  Cool 
es  Cool  Frio 
en  nav.Home home 
es  nav.Home casa 
... 

i18n 0.5 के रूप में।0 मेरा मानना ​​है कि उन्होंने इस कोड को अपने स्वयं के मणि में ले जाया है ... मैं भूल जाता हूं कि उस मणि को क्या कहा जाता है।

+0

रेल गाइड के पास इस विषय पर कुछ चीजें हैं (http://guides.rubyonrails.org/i18n.html#using- अलग-backends)। @ जेसन में अंतराल भरने के लिए धन्यवाद! – captainpete

1

आप का प्रयास करना चाहें http://github.com/joshmh/globalize2/tree/master

+1

हैलो अराम, ठीक है, वैश्वीकरण मॉडल से संबंधित सामग्री का अनुवाद करना आसान बनाता है, लेकिन सभी स्थिर सामग्री जैसे छाप, के बारे में, ई-मेल सामग्री इत्यादि के बारे में क्या? – xijo

+0

मुझे लगता है कि आपको अपना बैकएंड लिखना होगा। वास्तव में आप क्या करने की कोशिश कर रहे हैं? –

+0

मेरी वर्तमान परियोजना को कई विवरण ग्रंथों के साथ संभालना है - लेकिन भविष्य में यह अधिक गतिशील हो जाएगा, हमने शुरुआत से रेल का उपयोग करने का निर्णय लिया है। अब हमारी वाईएमएल फाइलों में 1000 से अधिक लाइनें हैं! शायद मैं एक मॉडल तैयार करूंगा और इसमें धारावाहिक कुंजी-मूल्य जोड़े स्टोर करूंगा। बिल्कुल सुंदर नहीं, लेकिन एक समझौता .. – xijo

9

मैं अंत में पाया है कि मैं क्या स्वेन फुच्स की मदद से तलाश कर रहे थे:

http://github.com/dylanz/i18n_backend_database/tree/master

डायलन स्टैमेट द्वारा यह बहुत ही बढ़िया प्लगइन बिल्कुल सही है जो नाम इंगित करता है और अतिरिक्त रूप से कैशिंग को संभालता है!

स्वेन भी उल्लेख किया है, कि i18n/active_record की वर्तमान शाखा के रूप में अच्छी तरह से एक ActiveRecord बैकएंड प्रदान करता है:

http://github.com/svenfuchs/i18n/blob/active_record/lib/i18n/backend/active_record.rb

इस विषय के बारे में कुछ चर्चा Goolge i18n उपयोगकर्ता समूह में चल रहा है :

http://groups.google.com/group/rails-i18n/browse_thread/thread/6b7ba3c401890a7e

समस्या हल हो गई, श्री I18n धन्यवाद स्वेन फूच! ;)

+0

अच्छा! सुनकर अच्छा लगा कि आपके पास एक अच्छा समाधान है। साझा करने के लिए भी धन्यवाद। –

0

हम fast_gettext

यह एक डीबी समर्थित बैकएंड जो वेब पर अनुवाद करने के लिए एक नियंत्रक के साथ आता है के साथ एक अच्छा अनुभव था। कैशिंग अंतर्निहित है, हालांकि हमें बूट पर सभी अनुवादों के प्री-लोडिंग को कोड करना था (यह बहुत तेज है तो उन्हें कैशिंग के साथ एक-एक करके प्राप्त करें)।

+0

क्या आप fast_gettext विकी में प्रीलोडिंग साझा कर सकते हैं, तो अन्य इसका पुन: उपयोग कर सकते हैं? – grosser

+0

मुझे वह भी चाहिए! – caesarsol

संबंधित मुद्दे