2012-01-25 15 views
10

के साथ I18n मुझे पता है कि एंड्रॉइड में 18 एन एप्लिकेशन के लिए समर्थन है, लेकिन क्या मैं ऐसी स्ट्रिंग को पैरामीटर दे सकता हूं? रेल में, मैं कुछ इस तरह कर सकते हैं:एंड्रॉइड: पैरामीटर

en: 
    hello: "Hello %{name}! You've got %{count} messages." 

t("hello", name: "Klaus", count: 5) 

वहाँ एंड्रॉयड में कुछ इसी तरह है या मैं इसे अपने आप क्या करना होगा?

उत्तर

12

पर विस्तार करने के लिए देखें हेइको का जवाब, और यदि आप एक से अधिक स्ट्रिंग चाहते हैं, तो अपना विशिष्ट उदाहरण दिखाने के लिए आपको उन्हें नंबर देने की आवश्यकता है:

<string name="hello">Hello %1$s! You've got %2$d messages.</string> 

इस तरह आप प्रत्येक अनुवाद में तारों का क्रम स्विच कर सकते हैं। इसका उपयोग करना होगा:

String hello = getString(R.strings.hello, "Klaus", 5); 
+0

दस्तावेज़ीकरण के अनुसार आपको केवल संख्या की आवश्यकता है, फिर आपको वस्तुओं को पुन: व्यवस्थित करने की आवश्यकता है: _ आर्ग्यूमेंट इंडेक्स। आम तौर पर, प्रत्येक प्रारूप विनिर्देशक प्रारूप के लिए अगले तर्क का उपभोग करता है। सुविधाजनक स्थानीयकरण के लिए, तर्कों को पुन: व्यवस्थित करना संभव है ताकि वे आउटपुट में ऑर्डर की तुलना में आउटपुट में एक अलग क्रम में दिखाई दें। उदाहरण के लिए, "% 4 $ s" स्ट्रिंग के रूप में चौथे तर्क (4 $) को स्वरूपित करता है। <के साथ तर्क का पुन: उपयोग करना भी संभव है। उदाहरण के लिए, प्रारूप ("% o% neworld

4

आप क्या कर सकते हैं एक ही

strings.xml में आप

<string name="xyz">Do you really want to report [%s] as spammer?</string> 

और फिर अपने कोड में डाल सकते हैं आप

String foo = getString(R.strings.xyz,"Joe Doe"); 

डाल Context.getString()