2016-05-09 9 views
5

मैं अपने आवेदन को स्थानीयकृत करने के लिए Localize-Swift लाइब्रेरी (Link) का उपयोग कर रहा हूं और यह .strings फ़ाइलों के साथ ठीक काम करता है। समस्या यह है कि मुझे एक ऐसी भाषा में स्थानांतरित करना है जो बाएं से दाएं है और मुझे इंटरफ़ेस बिल्डर स्टोरीबोर्ड के माध्यम से स्थानीयकरण करना है, इसलिए मैं आरटीएल प्रारूप में दृश्य नियंत्रक को सही दिख सकता हूं। प्रश्न यह है कि मैं वास्तविक समय में उपयोगकर्ता चयनित भाषा में स्टोरीबोर्ड कैसे सेट करूं?स्विफ्ट: ऐप के अंदर भाषा कैसे बदलें?

उदाहरण के लिए

मैं 2 स्टोरीबोर्ड फ़ाइलें:

1- ... /ProjectName/Base.lproj/Main.storyboard

2- ... /ProjectName/fa-IR.lproj/Main .स्टोरीबोर्ड

मैं वास्तविक समय में उनके बीच कैसे स्विच करूं?

मुझे पहले से ही पता है कि मैं इसे योजनाओं और डिवाइस भाषा में बदल सकता हूं लेकिन मैं इसे वास्तविक समय करना चाहता हूं और मैं नहीं चाहता कि उपयोगकर्ता अपने डिवाइस को पुनरारंभ करें।

धन्यवाद

+1

मुझे पहले भी यही समस्या थी और मैंने मेरे साथ काम किया समाधान पोस्ट किया: http://stackoverflow.com/a/37111734/1752899 –

उत्तर

5

मेरा उत्तर मिल गया! यदि कोई भी एप्लिकेशन को पुनरारंभ करने का समाधान ढूंढ सकता है तो कृपया मुझे सूचित करें।

+1

अपने प्रश्नों में मेरी टिप्पणी देखें। मैं –

+0

@HossamGhareeb को पुनरारंभ किए बिना ऐप को स्थानांतरित कर रहा हूं। ऐप को पुनरारंभ किए बिना हम कैसे प्राप्त कर सकते हैं। कृपया मुझे बताओ –

3

आप NSBundle+Language तीसरे पक्ष के वर्ग का उपयोग कर सकते हैं।

NSUserDefaults.standardUserDefaults().setObject(["language identifier"], forKey: "AppleLanguages") 
NSUserDefaults.standardUserDefaults().synchronize() 

दुर्भाग्य उपयोगकर्ता एप्लिकेशन को पुनरारंभ करना होगा:

+0

आपका समाधान इतना छोटा है, मैंने इसे जल्दी पाया लेकिन कोशिश नहीं की। अब दिनों के बाद मैंने कोशिश की और मुझे खुशी हुई .. मैंने इसका इस्तेमाल किया: https://github.com/maximbilan/ios_language_manager यह बिल्कुल वही कोड है (कॉपी पेस्ट?!?!) लेकिन जोड़ों के साथ, उपयोग के उदाहरणों के साथ कोई बग नहीं, एक चल रहा ऐप। 10 मिनट इसे मेरे प्रोजेक्ट में लागू किया गया था =] – Yitzchak

0

शायद the RSMultiLanguage pod आपके लिए कुछ उपयोगी है? मैंने इसे अपने ऐप्स में उपयोग किया है और यह ऐप में उपयोगकर्ता भाषा को बदलने की संभावना प्रदान करता है। मुझे पूरा यकीन है कि आप इसे एक उपयोगकर्ता लूप के साथ उपयोगकर्ता स्थान के आधार पर सेट कर सकते हैं। इस तरह आपको ऐप को पुनरारंभ करने की आवश्यकता नहीं हो सकती है।

RSMultiLanguage

प्रयोग

उदाहरण परियोजना चलाने के लिए, रेपो क्लोन, और फली पहले उदाहरण निर्देशिका से स्थापित चलाने के लिए।

स्थापना

RSMultiLanguage CocoaPods के माध्यम से उपलब्ध है। यह स्थापित करने के लिए, बस अपने Podfile में निम्न पंक्ति जोड़ें:

pod "RSMultiLanguage" 

लेखक

रॉय एनजी, [email protected]

लाइसेंस

RSMultiLanguage के तहत उपलब्ध है एमआईटी लाइसेंस। अधिक जानकारी के लिए LICENSE फ़ाइल देखें।

0
  1. एप्लिकेशन को फिर से प्रारंभ की आवश्यकता है। कोड की रेखाओं के नीचे का पालन करें।

    उपयोगकर्ता डिफ़ॉल्ट। मानक।सेट ([ "भाषा पहचानकर्ता"], forKey: "AppleLanguages") UserDefaults.standard.synchronize (एप्लिकेशन का)

  2. पुनः प्रारंभ नहीं की आवश्यकता है (उत्तर प्रदान की स्रोत कोड में अनुकूलन की आवश्यकता हो सकती है)। प्रदत्त वेब लिंक का पालन करें।

http://www.factorialcomplexity.com/blog/2015/01/28/how-to-change-localization-internally-in-your-ios-application.html

1

मुझे लगता है कि KababChi के जवाब सही था। हालांकि, स्विफ्ट NSUserDefaults के नए संस्करणों में UserDefaults द्वारा प्रतिस्थापित किया गया है। तो कोड इस तरह दिखेगा:

UserDefaults.standard.set(languages[indexPath.row], forKey: "AppleLanguages") 
UserDefaults.standard.synchronize() 

ऐप को अभी भी इन परिवर्तनों को लागू करने के लिए पुनरारंभ करने की आवश्यकता है।

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