8

के लिए स्ट्रिंग का स्थानीय संस्करण प्राप्त करें IOS के लिए एक एप्लिकेशन बना रहा हूं जो अंग्रेजी और फ्रेंच दोनों भाषाओं में उपलब्ध होगा। मैंने अंतर्राष्ट्रीयकरण के आसपास कुछ ट्यूटोरियल पढ़े हैं और मुझे समझ है कि यह कैसे काम करता है और मुझे क्या करना है।आईओएस एक विशिष्ट भाषा

मेरी समस्या यह है कि एक विशिष्ट मामला है जहां मैं एक अंग्रेजी उपयोगकर्ता के लिए फ्रेंच तार लोड करना चाहता हूं।

मुझे लगता है कि पूरे एप्लिकेशन के लिए भाषा सेट करना संभव है, लेकिन इससे पहले कि इसे प्रभावित होने से पहले एप्लिकेशन को पुनरारंभ करना आवश्यक हो। मैं इससे बचना चाहता हूं, और इसके बजाय मांग पर फ्रेंच या अंग्रेजी तारों को लोड करने में सक्षम हूं।

क्या किसी विशिष्ट भाषा के लिए प्रोग्रामिंग से स्ट्रिंग्स को लोड करना संभव है?

+0

संबंधित: [लिंक] (http://stackoverflow.com/q/13816451/335858)। – dasblinkenlight

+0

@dasblinkenlight एक अच्छा समाधान की तरह दिखता है, धन्यवाद। – raydowe

उत्तर

6

हां, यह संभव है, लेकिन यह पूरा करना आसान नहीं है।

मेरे पास सिर्फ मामला है, जहां मुझे GAI (आईओएस के लिए Google Analytics) के लिए व्यू कंट्रोलर के एक और एक ही नाम (सभी भाषाओं के लिए) भेजना चाहिए।

पूर्व शर्त:

1) मैं यहाँ https://stackoverflow.com/a/20257557/3883492 से NSBundle एक्सटेंशन का उपयोग - हो सकता है यह एक अच्छा विचार है कि वहाँ पहले को देखने के लिए है।

func getFrenchString(forKey key: String) -> String { 
    if let currentLanguage = (NSUserDefaults.standardUserDefaults().arrayForKey(AppleLanguages)?.first as? String) { 
     if currentLanguage == "fr" { 
      return NSLocalizedString(key, comment: "") 
     } 
     else { 
      //the application is not currently on `fr` 
      //change application to `fr` 
      NSBundle.setLanguage("fr") 

      //get the localized string on `fr` 
      let frString = NSLocalizedString(key, comment: "") 

      //return the application to the old language 
      NSBundle.setLanguage(currentLanguage) 

      return frString 
     } 
    } 

    return "" 
} 

इसके अलावा, आप "fr होना चाहिए:

2) मैं तेजी से 2

उपयोग कर रहा हूँ यहाँ है एक बहुत ही सरल कोड नमूना मेरा विचार वर्णन करने के लिए (यह बहुत ईमानदारी से प्रतिभाशाली है)। lproj "फ़ोल्डर में आपकी परियोजना में स्थानीय स्ट्रिंग के साथ फ़ोल्डर।

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