From fa16d2528e17518cb2be926c0c0fcf2c73d84e31 Mon Sep 17 00:00:00 2001 From: Francesco Frison Date: Wed, 17 Jul 2013 13:56:32 +0100 Subject: [PATCH] import and exports correctly --- Strings/ZFLangFile.m | 2 +- Strings/ZFStringScanner.m | 1 + Strings/ZFStringsConverter.h | 2 +- Strings/ZFStringsConverter.m | 26 ++++++++++++-------------- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/Strings/ZFLangFile.m b/Strings/ZFLangFile.m index 29afbe0..b581059 100644 --- a/Strings/ZFLangFile.m +++ b/Strings/ZFLangFile.m @@ -121,7 +121,7 @@ - (id)initWithURL:(NSURL *)url { translations = [converter translationsForXMLAtURL:url]; break; case ZFLangTypeCSV: - translations = [converter translationsFromCSVAtURL:url]; + translations = [converter translationsFromCSVAtURL:url idiom:lang]; break; default: break; diff --git a/Strings/ZFStringScanner.m b/Strings/ZFStringScanner.m index 049f893..72f6b21 100644 --- a/Strings/ZFStringScanner.m +++ b/Strings/ZFStringScanner.m @@ -164,6 +164,7 @@ - (void)importCSVAtURL:(NSURL *)URL { [self.files enumerateObjectsUsingBlock:^(ZFTranslationFile *file, NSUInteger idx, BOOL *stop) { [file.languages enumerateObjectsUsingBlock:^(ZFLangFile *original, NSUInteger idx, BOOL *stop) { if (![original isEqual:lang]) return; + if (![original.idiom isEqual:lang.idiom]) return; // Found, now substitute [lang.translations enumerateObjectsUsingBlock:^(ZFTranslationLine *line, NSUInteger idx, BOOL *stop) { diff --git a/Strings/ZFStringsConverter.h b/Strings/ZFStringsConverter.h index 295732c..0d22162 100644 --- a/Strings/ZFStringsConverter.h +++ b/Strings/ZFStringsConverter.h @@ -25,7 +25,7 @@ // CSV - (NSString *)csvFromFromLang:(ZFLangFile *)file defaultLang:(ZFLangFile *)defaultFile missingOnly:(BOOL)isMissingOnly; -- (NSArray *)translationsFromCSVAtURL:(NSURL *)stringsURL; +- (NSArray *)translationsFromCSVAtURL:(NSURL *)stringsURL idiom:(NSString *)idiom; - (NSString *)convertFormatForString:(NSString *)input isFromIOS:(BOOL)isFromIOS; diff --git a/Strings/ZFStringsConverter.m b/Strings/ZFStringsConverter.m index 296a1a3..55ea906 100644 --- a/Strings/ZFStringsConverter.m +++ b/Strings/ZFStringsConverter.m @@ -303,37 +303,35 @@ - (NSString *)csvFromFromLang:(ZFLangFile *)file defaultLang:(ZFLangFile *)defau return csvString; } -- (NSArray *)translationsFromCSVAtURL:(NSURL *)stringsURL { +- (NSArray *)translationsFromCSVAtURL:(NSURL *)stringsURL idiom:(NSString *)idiom { if (!stringsURL) return nil; - NSArray *allComponents = [NSArray arrayWithContentsOfCSVFile:stringsURL.path options:CHCSVParserOptionsSanitizesFields]; + NSArray *allComponents = [NSArray arrayWithContentsOfCSVFile:stringsURL.path options:CHCSVParserOptionsSanitizesFields|CHCSVParserOptionsFirstLineAsKeys]; NSMutableArray *translations = [NSMutableArray array]; __block NSRange range; - [allComponents enumerateObjectsUsingBlock:^(NSArray *components, NSUInteger idx, BOOL *stop) { - NSInteger count = [components count]; - if (count == 0) return; - NSString *key = [components objectAtIndex:0]; + [allComponents enumerateObjectsUsingBlock:^(NSDictionary *dict, NSUInteger idx, BOOL *stop) { + if ([[dict allKeys] count] == 0) return; + + NSString *key = [dict objectForKey:@"keys"]; if (key.length == 0) return; ZFTranslationLine *line = [ZFTranslationLine line]; [line setKey:key]; - NSString *value = @""; - if (count > 1) { - value = [components objectAtIndex:1]; + NSString *value = [dict objectForKey:idiom]; + if (value.length > 0) { + value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; [line setValue:value]; } - else { - [line setType:ZFTranslationLineTypeUntranslated]; - } + else [line setType:ZFTranslationLineTypeUntranslated]; [line setPosition:idx]; - range.location += range.length; - range.length = (key.length + value.length); + if (value) range.length = (key.length + value.length); + [line setRange:range]; [translations addObject:line];