我目前正在开发一款iOS应用,并将其本地化为多种语言,但却遇到了令人讨厌(不会破坏)的问题。
当我为我的故事板添加新的本地化时,xcode会自动填充字符串,这非常好。我遇到的问题是我有多个接口,都有一个后退按钮。关于这些的文本当然是相同的,他们的翻译也是如此。 我想知道的问题是,有可能,不使用strings.localizable,以某种方式将多个对象翻译合并为一个?
这就是目前的样子:
"Pnu-Ec-HAj.normalTitle" = "Back";
"Rtx-fT-rdc.normalTitle" = "Back";
但如果存在诸如
之类的语法,那将会更容易 "Pnu-Ec-HAj.normalTitle", "Rtx-fT-rdc.normalTitle" = "Back";
(这种语法显然不正确)
我已经看了很久但还没有找到这个问题的任何答案。
感谢阅读。
答案 0 :(得分:2)
我建议在代码中引用故事板中的每个文本,并在viewDidLoad上设置文本,例如:
buyButton.titleLabel.text = NSLocalizedString(@"SHOP_BUY_BUTTON_TEXT",@"Button for buying product in detail view");
如果你有大量的故事板,那么工作量很大,但最后你会得到一个干净的Localizable.strings
简洁的密钥和注释,为你的译员提供必要的背景。
我在键前加上应用的部分,例如SHOP_***
,USER_SETTINGS_***
等。
此外,我们使用像OneSky这样的服务来在线组织我们的翻译并从云中更新它们(不属于它们,并且它也不是没有出牙问题)。
答案 1 :(得分:0)
不幸的是.strings
个文件是key-value files,并且本质上必须有一个键(由元素的nib ID后跟属性组成)和相关的字符串值。 / p>
正如Apple在先例链接中描述的那样:
标准字符串文件格式由一个或多个键值对以及可选注释组成。给定对中的键和值是用双引号括起来并用等号分隔的文本字符串。
然后,.strings
文件不支持您的想法。
支持该功能的唯一方法是在代码中使用NSLocalizedString
。