本地化IOS按钮标签

15

我使用本地化字符串来本地化UI元素。一切都有效,除了按钮标题的本地化。

"21.title" = "应该是本地化后的文本"; //不起作用

我认为这可能是由于按钮状态(...forState:UIControlStateNormal...)引起的,标题可以通过视图状态设置。如何在本地化文件中定义它呢?

如何在本地化字符串中定义按钮标题?有什么技巧吗?

注意:我知道如何从源代码中完成,我的问题是如何通过本地化字符串文件完成。所以:我知道如何使用本地化字符串来本地化UI,但不包括按钮。


1
这是一个有效的问题。 - ToddB
3个回答

36
"21.title" = "It should be the localized text"; //does not work
应该阅读
"21.normalTitle" = "It should be the localized text"; //does work

反而。


1
我同意这是正确的答案。而且,在我看来,原始问题也非常合理。 - ToddB
我使用了相同的代码,但对我不起作用。你能帮我解决一下吗?我的代码如下:"lXg-Tj-A7t.normalTitle"="发送";其中 "lXg-Tj-A7t" 是按钮的 objectID。 - NSP
如果 "xyz.normalTitle" 无法正常工作,请在 Interface Builder 中将按钮样式从 'Plain' 更改为 'Default'。请注意,这也会使按钮文本变小,因此之后请增加字体大小。 - Jekapa

7
在界面构建器中,你可以设置4个字符串,分别对应“状态配置”下拉菜单中的每个状态。
或者,你也可以在代码中为每个状态设置按钮标题。
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];

编辑:为了明确起见,您需要将本地化字符串添加到Localizable.strings文件中。只要将其复制到您的应用程序中,您就可以获得替换;当然,您也可以支持多种语言。本地化教程IB本地化

那么,在本地化字符串文件中为按钮标题执行此操作的语法是什么?不是在代码中!再说一遍:我可以为其他事情做到这一点,它有效,我不需要那个解释。问题只出现在按钮标题上! - Tom
Localizable.strings 对于按钮标题没有任何特殊的语法。 - Gereon
"KEY" = "字符串"; /始终在字符串文件中/ - Daij-Djan
但是按钮永远不起作用。"21.title" = "它应该是本地化的文本"; //不起作用 - Tom
正如@Daji-Djan所说,.strings文件仅将基本字符串映射到本地化字符串。它没有关于您在哪里使用文本的上下文。对于按钮没有特殊要求。如果您看到“21.title”或根本没有显示,请告诉我们,并说明您是使用Interface Builder还是通过编程创建按钮。您使用了什么样式的按钮?您在按钮上设置了图像吗?等等。您尝试过什么? - Dave

0
在我的情况下,我已经把文件发送出去进行翻译。当它们回来时,有一个微妙的错误。
"0ZD-ku-bT7.title" = “Fechar";

注意到他们使用了两个不同的双引号!这会以微妙的方式破坏文件,但编译器不会报错。

正确的代码应该是

"0ZD-ku-bT7.title" = "Fechar";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接