NSLocalizedString with format

前端 未结 4 643
粉色の甜心
粉色の甜心 2020-12-09 15:01

How would I use NSLocalizedString for this string:

[NSString stringWithFormat:@\"Is “%@“ still correct for “%@“ tap “OK“ otherwise tap “Change“          


        
相关标签:
4条回答
  • 2020-12-09 15:08

    Given sentences can be constructed with the variable parts in a different order in some languages then I think you should use positional arguments with [NSString stringWithFormat:]:

    NSString *format = NSLocalizedString(@"number_of_items", @"Number of items");
    

    Which would load the following string for English:

    @"Is \"%1$@\" still correct for \"%2$@\" tap \"OK\" otherwise tap \"Change\" to choose new contact details"
    

    And perhaps something else for French (I don't know French so I won't attempt a translation, but it could well have the first and second argument in a different order):

    "French \"%2$@\" french \"%1$@\" french"
    

    And you can safely format the string as normal:

    NSString *translated = [NSString stringWithFormat:format individual.contactInfo, individual.name];
    
    0 讨论(0)
  • 2020-12-09 15:13
    [NSString stringWithFormat:NSLocalizedString(@"Is “%@“ still correct for “%@“ tap “OK“ otherwise tap “Change“ to choose new contact details", @"Query if parm 1 is still correct for parm 2"), individual.contactInfo, individual.name];
    
    0 讨论(0)
  • 2020-12-09 15:20

    Swift

    //Localizable.strings

    "my-localized-string" = "foo %@ baz";

    Example:

    myLabel.text = String(format: NSLocalizedString("my-localized-string", 
                                           comment: "foo %@ baz"), "bar") //foo bar baz
    
    0 讨论(0)
  • 2020-12-09 15:22

    I just want to add one very helpful definition which I use in many of my projects.

    I've added this function to my header prefix file:

    #define NSLocalizedFormatString(fmt, ...) [NSString stringWithFormat:NSLocalizedString(fmt, nil), __VA_ARGS__]
    

    This allows you to define a localized string like the following:

     "ExampleScreenAuthorizationDescriptionLbl"= "I authorize the payment of %@ to %@.";
    

    and it can be used via:

    self.labelAuthorizationText.text = NSLocalizedFormatString(@"ExampleScreenAuthorizationDescriptionLbl", self.formattedAmount, self.companyQualifier);
    
    0 讨论(0)
提交回复
热议问题