Localize IOS button label

14,443

Solution 1

In Interface Builder, you can set 4 strings, one for each of the states in the "State Config" dropdown.

OR, alternatively, in code, you set the button title for each state:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:NSLocalizedString(@"21.title", @"Norm!") forState:UIControlStateNormal];
[button setTitle:NSLocalizedString(@"21.title-highlighted", @"hi btn") forState:UIControlStateHighlighted];
[button setTitle:NSLocalizedString(@"21.title-selected", @"sel btn") forState:UIControlStateSelected];
[button setTitle:NSLocalizedString(@"21.title-disabled", @"dis btn") forState:UIControlStateDisabled];

Edit: To be clear, you'll add the localization strings into your Localizable.strings file. As long as you copy that into your app, you'll get the substitution; and of course you can support multiple languages. Localization Tutorial and Localize in IB

Solution 2

"21.title" = "It should be the localized text"; //does not work

should read

"21.normalTitle" = "It should be the localized text"; //does work

instead.

Share:
14,443
Tom
Author by

Tom

Updated on June 06, 2022

Comments

  • Tom
    Tom almost 2 years

    I use localization strings to localize UI elements. Everything works, except localizing title of a button.

    "21.title" = "It should be the localized text"; //does not work

    I think it would be caused by state of button (...forState:UIControlStateNormal...), title can be set by view state. How can I defie it in the localization file?

    How can I define button title in localization string? What is the trick?

    NOTE: I know how to do it from source code, my question is about how to do it by localization string file. So: i know how to use localization strings to localize UI, except buttons.

  • Tom
    Tom over 11 years
    So, what is the syntax to do it in localizable strings file for a button title? NOT in code! Again: I can do it for other things, it works, I don't need that explonation. The problem is only with button titles!
  • Gereon
    Gereon over 11 years
    Localizable.strings does not have any special syntax for button titles.
  • Daij-Djan
    Daij-Djan over 11 years
    "KEY" = "String"; /*ALWAYS - in strings file*/
  • Tom
    Tom over 11 years
    But for button NEVER works. "21.title" = "It should be the localized text"; //does not work
  • Dave
    Dave over 11 years
    As @Daji-Djan said, the .strings file only maps the base string to the localized string. It has no context about where you're using the text. There is nothing special to do for a button. You need to let us know if you see "21.title" show up or nothing at all, and if you are using Interface Builder or creating the button programmatically. What style button are you using? Did you set an image on the button? etc. What have you tried?
  • ToddB
    ToddB over 9 years
    I agree this is the correct answer. Also, the original question is quite valid IMHO.
  • NSP
    NSP almost 9 years
    I have used the same, but not working for me. Can you please help me to solve this. My code is like "lXg-Tj-A7t.normalTitle"="Send"; Where "lXg-Tj-A7t" is objectID of Button