उदाहरण के लिए:रेल 3 में डिफ़ॉल्ट अनुवाद के रूप में i18n कुंजी का उपयोग कैसे करें?
I18n.t('something')
चाहिए उत्पादन केवल
something
अगर अनुवाद गायब है।
उदाहरण के लिए:रेल 3 में डिफ़ॉल्ट अनुवाद के रूप में i18n कुंजी का उपयोग कैसे करें?
I18n.t('something')
चाहिए उत्पादन केवल
something
अगर अनुवाद गायब है।
नहीं, संभव नहीं है। यदि आप I18 का उपयोग करते हैं तो आपको उस फ़ाइल की आवश्यकता होती है जो भाषा से मेल खाती है अन्यथा I18n शिकायत करेगी।
बेशक आप अपनी पर्यावरण.आरबी फ़ाइल में डिफ़ॉल्ट भाषा सेट कर सकते हैं। नीचे के पास होना चाहिए और आप इसे जो भी भाषा चाहते हैं उसके लिए सेट कर सकते हैं लेकिन आपके locales/
फ़ोल्डर में आपको yml
अनुवाद होना चाहिए।
यह संभव है: देखें अनुभाग 4.1.2 चूकRails Internationalization (I18n) API पर।
I18n.t :missing, :default => 'Not here'
# => 'Not here'
अतिरिक्त नोट: इस पता लगाना क्या रेल सोचता है कि वर्तमान क्षेत्र है मदद कर सकता है (उदाहरण के लिए उपयोग करते समय ".something")
http://unixgods.org/~tilo/Rails/which_l10n_strings_is_rails_trying_to_lookup.html
इस तरह से आप बेहतर होने से बच सकते हैं लापता L10n-file/गलत कुंजी
डेविड का उत्तर प्रश्न का सही समाधान है, इसे करने के लिए एक और (अधिक verbose) तरीका है फिर से अनुवाद स्ट्रिंग्स के गलत स्थान की वजह से अनुवाद स्कू और कुंजी वापस करें:
def translate_nicely(key)
begin
I18n.translate!(key)
rescue
key
end
end
रेल पर 4 आप अपवाद हैंडलर बदल सकते हैं।
जोड़े निम्नलिखित config/initializers/i18n.rb
रहे हैं:
module I18n
class MissingTranslationExceptionHandler < ExceptionHandler
def call(exception, locale, key, options)
if exception.is_a?(MissingTranslation)
key
else
super
end
end
end
end
I18n.exception_handler = I18n::MissingTranslationExceptionHandler.new
अब पर आप तुम सिर्फ कर सकते हैं विचार: इस विषय पर
<p><%= t "Not translated!" %></p>
गाइड: http://guides.rubyonrails.org/i18n.html#using-different-exception-handlers
कोई इसे केवल एक विशिष्ट वातावरण के लिए ही चाहता है। इसे प्रारंभकर्ता सीमा की संभावनाओं के रूप में जोड़ना। लेकिन लिंक के लिए धन्यवाद। –
अपवाद तर्क का उपयोग करने के लिए सशर्त प्रवाह आम तौर पर है बुरा अभ्यास रिफैक्टरिंग पुस्तक से: http://www.refactoring.com/catalog/replaceExceptionWithTest.html –
मैं मानता हूं कि यह आम तौर पर खराब अभ्यास है, मैंने यह भी कहने का एक मुद्दा बना दिया है कि डेविड का समाधान वापस गिरने का सही तरीका है एक डिफ़ॉल्ट मान। निस्संदेह (व्यावहारिक) मामले भी हैं जहां आप नहीं चाहते हैं कि एप्लिकेशन किसी त्रुटि का खुलासा करे और एक बेहतर उपयोगकर्ता अनुभव प्रदान करने के लिए एक समझदार डिफ़ॉल्ट का उपयोग करें। मैं कहूंगा कि दिशानिर्देशों से भटकना उचित है और जब यह मामला है तो त्रुटियों को अच्छी तरह से संभालना उचित है। – Steventux