2013-09-04 14 views
15

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

कोई भी सुझाव उपयोगी होगा।

धन्यवाद

उत्तर

61

iOS के में एक पुश सूचना में स्थानीयकृत पाठ प्रदर्शित करने के दो तरीके हैं:

अपने सर्वर

इस मामले में में संदेश का स्थानीयकरण करें, तो आप उपकरण भाषा भेजना होगा आपके सर्वर पर कोड आप अपने iOS एप्लिकेशन को जोड़ने की जरूरत है निम्नलिखित करने के समान होगा:

NSString *preferredLanguage = [[NSLocale preferredLanguages] objectAtIndex:0]; 
const char *langStr = [preferredLanguage UTF8String]; 
[self sendCurrentLanguage:langStr]; // Method that communicates with your server 

तो फिर तुम अधिसूचना JSON पेलोड में alert कुंजी का उपयोग करके उपयुक्त भाषा में सूचना संदेश भेज सकते हैं।

अधिसूचना पेलोड के साथ एक स्थानीयकरण स्ट्रिंग भेजें

आप पेलोड में स्थानीयकृत स्ट्रिंग भेज सकते हैं। alert कुंजी एक बच्चे loc-key महत्वपूर्ण यह है कि आप एक स्थानीय स्ट्रिंग भेजने के लिए उपयोग कर सकते हैं स्वीकार करता है:

"My Localized String" = "The localized string in the language you want."; 

हैं: तो

"alert" : { 
    "loc-key" : "My Localized String", 
    ... 
} 

और संवाददाता भाषा पहचानकर्ता के अंदर अपने Localizable.strings फ़ाइल में,, निम्नलिखित जोड़ें आपको अंतिम स्थानीयकृत स्ट्रिंग बनाने के लिए तर्क पारित करने की आवश्यकता है, आप अधिसूचना पेलोड में loc-args JSON सरणी के रूप में इसे पास कर सकते हैं:

"alert" : { 
     "loc-key" : "My Localized String", 
     "loc-args" : [ "First argument", "Second argument" ], 
     ... 
    } 

और, अपनी Localizable.strings:

"My Localized String" = "The localized string with first argument %@, and second argument %@." 

या, यदि आप पदों को बदलने की जरूरत:

"My Localized String" = "The localized string with second argument %[email protected], and first argument %[email protected]"; 
+0

लेकिन मैं गतिशील पाठ जो व्यक्ति का नाम बहुत तो शामिल है कि यह कैसे प्रबंधनीय हो जाएगा? – iEinstein

+0

@AshutoshMishra मेरा अद्यतन जवाब देखें। आप 'लोक-तर्क' के अंदर तर्क पारित कर सकते हैं और स्थितित्मक प्रतिस्थापन के लिए प्रारूप विनिर्देशों का उपयोग कर सकते हैं। –

+0

क्या यह $ या @ है? और यह कैसे पता चलेगा कि पहले तर्क कहां रखा जाए और दूसरा कहां रखा जाए। संख्याओं से है (1 और 2)? – iEinstein

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