2010-08-18 26 views
5

के साथ स्थानीयकृत संसाधनों को लोड नहीं कर सकता है मेरे पास एक आईफोन ऐप है जिसे स्थानीयकृत करने की आवश्यकता है। तारों के साथ कोई समस्या नहीं है, लेकिन, मुझे संसाधनों में समस्या हो रही है: मुझे स्थानीयकृत HTML पृष्ठों को लोड करने की आवश्यकता है। फ़ाइलें इस प्रकार हैं: प्रस्तुति.htm फ़ाइलों को उस फ़ोल्डर में जोड़ा जाता है जहां वे हैं (एचटीएमएल /), और यह फ़ोल्डर को फ़ोल्डर के रूप में कहते हैं।स्वचालित रूप से pathforResource

मैं इस कोड के साथ एचटीएमएल पृष्ठों को लोड:

NSString *pathPresentation = [[NSBundle mainBundle] pathForResource:@"presentation" ofType:@"htm"]; 

if(!pathPresentation) { 
    NSLog(@"Could not find presentation.htm"); 
} 
NSURL *url = [NSURL fileURLWithPath:pathPresentation]; 
NSLog(@"-> path presentation.htm : %@", pathPresentation); 
UIWebView *webViewPresentation = [[UIWebView alloc] init]; 
NSData *htmlData = [NSData dataWithContentsOfFile:pathPresentation]; 
if (htmlData) { 
    [webViewPresentation loadData:htmlData MIMEType:@"text/html" textEncodingName:@"Latin-1" baseURL:url]; 
} 

पहला प्रयास:

मैं इस वेबसाइट I Can Localize के संकेत का पालन किया है, के बाद से वहाँ अभी तक अनुप्रयोग में संसाधनों स्थानीय था। फ़ोल्डरों का नाम है: en.lproj और fr.lproj

मैं सिम्युलेटर पर यह कोशिश, लेकिन यह सफल नहीं हुआ:

  • लॉग इंगित करता है कि मार्ग है: (...)/myapp.app/presentation.htm
  • फ़ाइल सिम्युलेटर में लोड फ्रेंच में है, जबकि सिम्युलेटर अंग्रेजी में है।

दूसरा प्रयास करें:

फिर, मैं संसाधनों को नष्ट करने और उन्हें अपने समूह फ़ोल्डर (संसाधन/html /) में पुन: जोड़ें। मैंने जानकारी बटन दबाया, और "फ़ाइल को स्थानीय बनाने योग्य" बनाने का चयन किया। फ़ाइल को अंग्रेजी.lproj फ़ोल्डर में जोड़ा गया था। फिर मैं "स्थानीयकरण जोड़ें", और "फ्रेंच" चुनता हूं।

मैं सिम्युलेटर पर यह कोशिश, लेकिन यह सफल नहीं हुआ (मैं परीक्षण से पहले स्वच्छ बनाने के लिए):

  • लॉग इंगित करता है कि मार्ग है: (...)/myapp.app /presentation.htm
  • सिम्युलेटर में लोड की गई फ़ाइल फ्रेंच में है, जबकि सिम्युलेटर अंग्रेजी में है।

तीसरा प्रयास करें:

iPhone OS 4.0 पर this page लोड हो रहा है स्थानीय संसाधनों के बारे में पढ़ने के बाद, मैं संसाधनों स्थानीय फ़ोल्डर में (संसाधनों हटाने के लिए, और en_UK में फ़ोल्डर का नाम बदलने बदल दिया है। lproj और fr_FR.lproj

मैं सिम्युलेटर पर यह कोशिश, लेकिन यह सफल नहीं हुआ (मैं परीक्षण से पहले स्वच्छ निर्माण किया है) :, (...)/myapp.app/presentation.htm

  • फ़ाइल सिम्युलेटर में लोड में फ्रेंच है, जबकि सिम्युलेटर में अंग्रेज़ी है:

    • लॉग इंगित करता है कि मार्ग है।

    मदद?

    कोई विचार? मैं जानता हूँ कि समारोह है: - (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName

    लेकिन मैं इसे संभव के रूप में स्वत: होना चाहता हूँ, और निर्देशिका या localizationName तरह बातें मेरे ऐप रोक सकता है फिक्सिंग स्वत: हो सकता है।

  • +0

    को हटाने के बाद सिम्युलेटर से ऐप, यह काम नहीं किया, लेकिन पथ बदल गया है। अब यह है: (...)/myapp.app/fr_FR.lproj/presentation.htm – AlexandreD

    उत्तर

    16

    समाधान है: सिम्युलेटर (या डिवाइस) से

    1. निकालें आवेदन
    2. उपयोग सरल स्थानीय फ़ोल्डर, के रूप में: en.lproj
    3. स्वच्छ निर्माण
    +1

    ऐसा करें! किसी भी प्रभाव के हर समाधान की कोशिश करने के बाद, निश्चित रूप से हार्ड रीसेट काम किया। –

    +0

    मेरी इच्छा है कि मैंने दो घंटे बिताए जाने से पहले मुझे यह पोस्ट मिल गया था। मेरे लिए "एप्लिकेशन को हटाएं" चाल थी। मुझे लगता है कि यह भ्रमित हो जाता है। – Walter

    +1

    मैं अपने सिम्युलेटर को रीसेट करता हूं तो सही परिणाम प्राप्त करता हूं! – sunkehappy

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