2016-08-24 5 views
9

मुझे I18n का उपयोग करके अनुवाद के मेरे रेल ऐप में कोई समस्या है। मैं इस [:this_is_a, 5, :which_is_a_number, "."] जैसे सरणी में गतिशील वाक्यों को बनाता हूं जिसके लिए मैं प्रत्येक शब्द को एक-एक करके अनुवाद करता हूं।I18N अनुवाद "।" या "%" सभी अनुवादों की एक पूर्ण सरणी का कारण बनता है

जब मैं इसके माध्यम से पुन: प्रयास करता हूं और I18n.t ("।") का अनुवाद करता हूं तो मुझे अपने पूरे ऐप में सभी अनुवादों की पूर्ण सरणी मिलती है जो 1000+ सरणी टेक्स्ट आउटपुट करता है। यह I18n.t ("%") के लिए भी सच प्रतीत होता है।

क्या ऐसी कोई सेटिंग है जो इसे होने से रोकती है? फिलहाल इस के लिए मेरा एकमात्र हैक समाधान सभी को बदलना है। " "।" लेकिन मुझे आशा है कि एक बेहतर समाधान होगा। कोई सलाह?

+0

आप उन टोकन कैसे प्राप्त कर रहे हैं? क्या आप एक वाक्य और टोकनिंग को पार्स कर रहे हैं या क्या आप उन समूहों को किसी अन्य तरीके से बना रहे हैं? – Azolo

+0

मुझे 100% यकीन नहीं है कि टोकन द्वारा आपका क्या मतलब है लेकिन मान लें कि आप सरणी आइटम का मतलब है। गणना के परिणामस्वरूप वे गतिशील रूप से बनाए जाते हैं। यह हो सकता है [: this_is_a, "ए",: what_is_a_letter, "!"] साथ ही। इसलिए, अनुवाद प्री-सेट हैं लेकिन तारों का अलग-अलग उपयोग किया जाता है। मैं "।" रखना नहीं चाहता उदाहरण के लिए, उस कारण के अनुवाद के अंदर। – Christoffer

उत्तर

4

"।" अनुवाद कुंजी नामों के लिए प्रयोग किया जाता है। यदि आपके पास इस तरह की फ़ाइल है:

module1: 
    key_a: "Module1 Translation A" 
    key_b: "Module1 Translation B" 
module2: 
    key_a: "Module2 Translation A" 

तब आप उन लोगों तक पहुंच सकते हैं। "

I18n.t("module1.key_a") 
I18n.t("module2.key_a") 

तुम सिर्फ I18n.t(".") का उपयोग करते हैं यह पूरी शीर्ष स्तर के नाम स्थान दे देंगे। आप विभाजक

I18n.t("[email protected]_a", separator: "@") 

बदलते बस कुछ चरित्र है कि जैसा कि आप जानते टोकन दिखाई नहीं देगा चुनें करके इस व्यवहार को बदल सकते हैं।

"%" चरित्र प्रक्षेप के लिए प्रयोग किया जाता है:

module1: 
    name: "My name is %{name}" 

और फिर

I18n.t("module1.name", name: "John") 

यह नहीं दिखता है जैसे आप "%" कुछ और है क्योंकि यह हार्डकोडेड है बदल सकते हैं। लेकिन इसे अनुवाद की पूरी सरणी वापस नहीं करनी चाहिए। इसे सिर्फ "अनुवाद गायब" त्रुटि वापस करनी चाहिए। I18n मणि के मेरे संस्करण पर कम से कम यही है।

+0

धन्यवाद, आपका समाधान काम करता है। अंत में मुझे एहसास हुआ कि मैं इसे इस सवाल के दायरे से बाहर एक बहुत ही खास तरीके से बाईपास करने में सक्षम था। मेरे प्रश्न के लिए आपका जवाब सही था। – Christoffer

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