2016-08-10 3 views
1

Lassen Sie uns sagen, dass ich die folgende Zeichenfolge haben:Wie sollte ich mit mehreren Parametern lokalisieren?

[NSString stringWithFormat:@"Booked for %@ at %@", colleagueName, time]; 

Und ich weiß, ich habe diese Zeichenfolge zu lokalisieren vergessen, so dass ich es ersetzen:

[NSString stringWithFormat:NSLocalizedString(@"bookings.bookedFor", "Booked for user at time"), colleagueName, time]; 

Jetzt Übersetzungen, wenn tun, ich finde, dass die Sprache X die Parameter andersherum benötigt; etwas näher an:

<time> for booking of <colleague> is done. 

Was ist der beste Weg, um die Tatsache zu begegnen, dass ich jetzt den zweiten Parameter meiner formatierten String müssen time sein und die dritte colleagueName bitte sein?

Antwort

1

Wie so oft der Fall ist, mein Kollege die Lösung fast so schnell, wie ich hier hatte, fragte gefunden! Offenbar Objective-C hat Positionsargumente

Die Positionen sind 1-indexiert, so dass sich %[email protected] auf das erste Argument bezieht.

NSString *firstParam = @"1st"; 
NSString *secondParam = @"2nd"; 
NSLog(@"First %[email protected] Second: %[email protected]", firstParam, secondParam); 
NSLog(@"Second %[email protected] First: %[email protected]", firstParam, secondParam); 

Diese Drucke:

First 1st Second: 2nd 
Second 2nd First: 1st 
-1

können Sie wie folgt versuchen:

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
    if ([language isEqualToString:@"X"]) {//X is language code like "fr","de" 
     [NSString stringWithFormat:NSLocalizedString(@"bookings.bookedFor", "Booked for user at time"), time, colleagueName]; 
    } else { 
     [NSString stringWithFormat:NSLocalizedString(@"bookings.bookedFor", "Booked for user at time"), colleagueName,time]; 
    }