2011-10-12 12 views
20

मैं सोच रहा था कि कोई भी res/values ​​निर्देशिका में स्ट्रिंग-एरे को सत्यापित करने के लिए एक अच्छे तरीके से आया है।एंड्रॉइड स्ट्रिंग-सरणी लोकेल सत्यापन

मैं डिफ़ॉल्ट स्थान का उपयोग कर कोड से बना सकते हैं और तरह

<string-array name="array_example1"> 
    <item>One</item> 
    <item>Two</item> 
    <item>Three</item> 
</string-array> 

कुछ का एक संसाधन हो सकता है फिर जब अनुप्रयोग के लिए अनुवादकों उनके अनुवाद वे भी एक स्ट्रिंग-सारिणी निर्मित करते हैं। कभी-कभी यदि एक अनुवाद संसाधन फ़ाइलों में से किसी एक के पीछे है, तो सरणी में कई प्रविष्टियां नहीं हो सकती हैं (शायद उपरोक्त उदाहरण से केवल "वन" और "दो")

क्या यह सत्यापित करने का कोई आसान तरीका है कि कोई है प्रविष्टियों की संख्या में मेल नहीं खाता? एक मेल नहीं होने से कोड में समस्याएं हो सकती हैं, लेकिन ऐप के पास कई भाषाओं में स्ट्रिंग-एरे के 10 हैं, क्योंकि वे सभी मैच अप लेने का समय ले रहे हैं।

दूसरों के लिए इसके लिए क्या दृष्टिकोण है?

+1

शायद एक छोटी सी स्क्रिप्ट बनाएं जो फ़ाइलों को पार करती है और उनसे मेल खाती है? –

+0

कोई भी जिसे मैं जानता हूं। कुछ कस्टम एक्सएमएल तुलना उपकरण, हो सकता है? – njzk2

उत्तर

41

मुझे क्रैश को रोकने के लिए एक बेहतर तरीका मिल गया है। मुझे एहसास हुआ कि नहीं था कि स्ट्रिंग-सरणियों निम्नलिखित तरीके से स्ट्रिंग संसाधन देखें सकता है:

<string-array name="array_example1"> 
    <item>@string/resOne</item> 
    <item>@string/resTwo</item> 
    <item>@string/resThree</item> 
</string-array> 

फिर

<string name="resOne">One</string> 
<string name="resTwo">Two</string> 
<string name="resThree">Three</string> 

इसलिए इस तरह से जोड़ने अगर वहाँ एक बेमेल डिफ़ॉल्ट भाषा के सिर्फ दिखाए जाएंगे है वह विकल्प और विभिन्न आकार की सूचियों के कारण दुर्घटनाओं को रोकें

+0

बिल्कुल सही समाधान! मुझे लगा कि यह संभव था, मुझे सिंटैक्स नहीं पता था :) –

+0

साझा करने के लिए धन्यवाद। – Sathesh

+0

मैं '' तत्व को 'translatable = "false" विशेषता को सेट करने की भी अनुशंसा करता हूं। यदि किसी अन्य भाषा फ़ाइल में यह सरणी मौजूद है तो इस तरह आपको लिंट द्वारा अधिसूचित किया जाएगा। – Robyer

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