Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Localize IOS button label

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.

like image 231
Tom Avatar asked Feb 03 '13 00:02

Tom


2 Answers

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

should read

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

instead.

like image 89
Volker Mohr Avatar answered Nov 02 '22 04:11

Volker Mohr


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

like image 27
Dave Avatar answered Nov 02 '22 02:11

Dave