2010-09-13 16 views
5

मैं सिर्फ xib फ़ाइलों के स्थानीयकरण से परिचित हो रही है और वहाँ plists सीधे की बात कर रहा द्वारा xib भीतर तार स्थानीयकृत का एक तरीका है सोच रहा था के लिए iPhone स्थानीयकरण ...xib फ़ाइलें

कुछ विचार की सराहना।

उत्तर

1

ऐप्पल ने ऐसा करने का तरीका सुझाया है .strings फाइलों में तारों को निकालने के लिए, जो कोको के स्थानीयकरण ढांचे द्वारा स्विच किया जाएगा।

एक्सकोड xib से .strings फ़ाइलों को उत्पन्न कर सकता है, जो स्थानीयकरण को बहुत सीधे आगे बढ़ाता है।

एक्सकोड में xib फ़ाइल पर राइट क्लिक करें, और Get Info चुनें। General टैब का चयन करें और नीचे Make File Localizable पर क्लिक करें। फिर आप उसी टैब पर Add Localization पर क्लिक करके स्थानीयकरण जोड़ सकेंगे।

मैं चरण-दर-चरण जानकारी (और सुंदर चित्र) के लिए this tutorial की अनुशंसा करता हूं।

+1

धन्यवाद। असल में, मैं XIB तारों के लिए en_Strings.plist/fr_Strings.plists जैसे plists को सीधे संदर्भित करने का प्रयास कर रहा हूं। मैं एक en_XIB, fr_XIB बनाने से बचना चाहता हूं। – Mansi

7

यदि आप सीधे .xib फ़ाइलों को स्थानीयकृत नहीं करना चाहते हैं, तो आप .strings फ़ाइलों में मौजूद टेक्स्ट को निकाल सकते हैं और, एक बार .strings फ़ाइलों का अनुवाद करने के बाद, उन्हें स्थानीयकृत करने के लिए अपनी .xib फ़ाइल में वापस इंजेक्ट करें संस्करणों। ये निकालने/इंजेक्शन ऑपरेशंस ibtool उपयोगिता का उपयोग करके किए जाते हैं।

मुझे this website पर ऐसा करने के तरीके पर विस्तृत निर्देश मिले।

3

मेरी विधि @Clafou उत्तर से थोड़ी दूर है, हालांकि यह थोड़ा और सरल हो सकता है। मैं बस अपने .h नियंत्रक के भीतर अपने बटन और लेबल तारों (xib पर बनाया गया) के लिए आईबीओटलेट सेट करता हूं।

@interface DetailViewController : UIViewController { 


IBOutlet UILabel *TitleLabelMain; 

} 

फिर मेरे। एम नियंत्रक के पास गया और इन लेबलों और बटनों को NSLocalizableStrings के साथ एक मान दिया।

- (void)viewWillAppear:(BOOL)animated { 

TitleLabelMain.text = NSLocalizedString(@"titleLabel",nil); 

और निश्चित रूप से आप मैं स्थानीय बनाना xibs सीधे एक अच्छा विकल्प नहीं है लगता है एक मूल्य Localizable.strings

"titleLabel" = "THIS TEXT IS LOCALIZED!"; 
0

में परिभाषित की आवश्यकता होगी। मैं https://github.com/steipete/Aspects का उपयोग कर UILabel की जागृत FromNib विधि को हुक करने और वहां टेक्स्ट को स्थानीयकृत करने के लिए उपयोग कर रहा हूं। उदाहरण:

#define Localized(_v_) NSLocalizedString(_v_, nil) 
NSError *err = nil; 
[UILabel aspect_hookSelector:@selector(awakeFromNib) 
       withOptions:AspectPositionAfter 
        usingBlock:^(id<AspectInfo> aspectInfo) { 
         UILabel *label = aspectInfo.instance; 
         NSString *lStr = Localized(label.text); 
         if (lStr) { 
          label.text = lStr; 
         } 
} error:&err]; 
संबंधित मुद्दे