2013-06-07 4 views
0

Mon problème est que j'ai un ensemble de base de Localizable.strings pour plusieurs langues, mais je ne veux pas à leur permettredans toutes mes constructions-cibles/schémas (certains de nos clients ne veulent que ceux-là, d'autres seulement les langues autorisées).Autoriser que des traductions spécifiques pour différents systèmes/cible

Parce que l'ensemble est le même pour tous et sera étendu à chaque mise à jour, je veux éviter de copier les fichiers plus profondément dans le dossier hirarchy et de maintenir chaque cible. J'utilise NSLocalizedStringWithDefaultValue et NSLocalizedString, mais je n'ai pas trouvé d'option pour leur donner les localisations permises.

Merci d'avance.

Répondre

1

J'ai fini par changer mon chemin d'utiliser le NSLocalizedString aux fichiers nommés spécifiques à la langue (pour l'allemand Localizable_de.strings, pour l'anglais Localizable_en.strings et ainsi de suite).

à la suite

https://stackoverflow.com/a/12004482/883799

J'utilise dans ma classe de traduction

NSString *tbl = [@"Localizable_" stringByAppendingString:[MyLibrary currentLocalization]]; 
NSString *fname = [[NSBundle mainBundle] pathForResource:tbl ofType:@"strings"]; 
if(!localStrings) 
    localStrings = [[NSDictionary dictionaryWithContentsOfFile:fname] retain]; 

NSString *value = [localStrings objectForKey:key]; 

[MyLibrary currentLocalization]; est

+(NSString *)currentLocalization 
{ 
    NSString *currentLocCode = [[NSLocale preferredLanguages] objectAtIndex:0]; 

    if([[AppSettings supportedLocales] containsObject:currentLocCode]) 
     return [currentLocCode substringToIndex:2]; 

    return [AppSettings defaultLocalization]; 
} 

AppSettings est-cible selon un [AppSettings supportedLocales]; est

+(NSArray *)supportedLocales 
{ 
    return [NSArray arrayWithObjects: 
    @"de", 
    @"de_AT", 
    @"de_BE", 
    @"de_CH", 
    @"de_DE", 
    @"de_LI", 
    @"de_LU", 
    // 
    @"en", 
    @"en_AS", 
    @"en_AU", 
    @"en_BB", 
    @"en_BE", 
    @"en_BM", 
    @"en_BS", 
    @"en_BW", 
    @"en_BZ", 
    @"en_CA", 
    @"en_FJ", 
    @"en_FM", 
    @"en_GB", 
    @"en_GM", 
    @"en_GU", 
    @"en_GY", 
    @"en_HK", 
    @"en_IE", 
    @"en_IN", 
    @"en_JM", 
    @"en_MH", 
    @"en_MP", 
    @"en_MT", 
    @"en_MU", 
    @"en_MW", 
    @"en_NA", 
    @"en_NZ", 
    @"en_PG", 
    @"en_PH", 
    @"en_PK", 
    @"en_PW", 
    @"en_SB", 
    @"en_SC", 
    @"en_SG", 
    @"en_SL", 
    @"en_SZ", 
    @"en_TT", 
    @"en_UM", 
    @"en_US", 
    @"en_US_POSIX", 
    @"en_VI", 
    @"en_ZA", 
    @"en_ZW", 
    // 
    @"es", 
    @"es_419", 
    @"es_AR", 
    @"es_BO", 
    @"es_CL", 
    @"es_CO", 
    @"es_CR", 
    @"es_DO", 
    @"es_EC", 
    @"es_ES", 
    @"es_GQ", 
    @"es_GT", 
    @"es_HN", 
    @"es_MX", 
    @"es_NI", 
    @"es_PA", 
    @"es_PE", 
    @"es_PR", 
    @"es_PY", 
    @"es_SV", 
    @"es_US", 
    @"es_UY", 
    @"es_VE", 
    // 
    @"fr", 
    @"fr_BE", 
    @"fr_BF", 
    @"fr_BI", 
    @"fr_BJ", 
    @"fr_BL", 
    @"fr_CA", 
    @"fr_CD", 
    @"fr_CF", 
    @"fr_CG", 
    @"fr_CH", 
    @"fr_CI", 
    @"fr_CM", 
    @"fr_DJ", 
    @"fr_FR", 
    @"fr_GA", 
    @"fr_GF", 
    @"fr_GN", 
    @"fr_GP", 
    @"fr_GQ", 
    @"fr_KM", 
    @"fr_LU", 
    @"fr_MC", 
    @"fr_MF", 
    @"fr_MG", 
    @"fr_ML", 
    @"fr_MQ", 
    @"fr_MR", 
    @"fr_NE", 
    @"fr_RE", 
    @"fr_RW", 
    @"fr_SC", 
    @"fr_SN", 
    @"fr_TD", 
    @"fr_TG", 
    @"fr_YT", 
    // 
    @"it", 
    @"it_CH", 
    @"it_IT", 
      nil]; 
} 

mais accepte toujours des modifications à ce si quelqu'un a une meilleure solution :)

Questions connexes