iphone - reading from Localizable.strings file as a key-value in a dictionary

后端 未结 4 1220
别跟我提以往
别跟我提以往 2020-12-08 16:56

I want to read the text from the localizable.strings file. I am collecting the strings for translation from several directories and file in one .strings file. But then I hav

4条回答
  •  醉话见心
    2020-12-08 17:13

    I am happy to find an excellent API in NSString class. The code is below.

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings"];
    NSString *fileText = [NSString stringWithContentsOfFile:filePath encoding: NSUnicodeStringEncoding error:nil];
    NSDictionary *stringDictionary = [fileText propertyListFromStringsFileFormat];
    
    NSArray *allKeys = [stringDictionary allKeys];
    
    NSArray *sortedKeys = [allKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
    
    NSString *documentsDirectory;   
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);  
    if ([paths count] > 0)  {       
        documentsDirectory = [paths objectAtIndex:0];       
    }
    
    NSString *outputPath = [documentsDirectory stringByAppendingString:@"/Localizable.strings"];
    NSLog(@"Strings contents are writing to: %@",outputPath);
    [[NSFileManager defaultManager] createFileAtPath:outputPath contents:nil attributes:nil];
    NSFileHandle *outputHandle = [NSFileHandle fileHandleForWritingAtPath:outputPath];
    [outputHandle seekToEndOfFile];
    
    for(id key in sortedKeys){
        NSString *line = [NSString stringWithFormat:@"\"%@\" = \"%@\";\n", key, [stringDictionary objectForKey:key]];
        NSLog(@"%@",line);
        [outputHandle writeData:[line dataUsingEncoding:NSUnicodeStringEncoding]];
    }
    }
    

提交回复
热议问题