Localize IOS button label
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.
Tom
Updated on June 06, 2022Comments
-
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 over 11 yearsSo, 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 over 11 yearsLocalizable.strings does not have any special syntax for button titles.
-
Daij-Djan over 11 years"KEY" = "String"; /*ALWAYS - in strings file*/
-
Tom over 11 yearsBut for button NEVER works. "21.title" = "It should be the localized text"; //does not work
-
Dave over 11 yearsAs @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 over 9 yearsI agree this is the correct answer. Also, the original question is quite valid IMHO.
-
NSP almost 9 yearsI 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