为每个目标创建不同的可本地化文件

时间:2015-02-10 12:26:56

标签: ios objective-c localization

我想问一下我在使用与本地化相关的iOS应用程序时遇到的问题。我的应用程序有一些目标,我们使用为每个客户端个性化的相同应用程序库,这意味着每个目标都有自己的设计,颜色,字体,并且最好是每个目标视图和标签的不同文本。

我们有一个参数化来维护应用程序的个性化,但我的本地化问题。我希望为不同语言中的每个目标设置一组不同的本地化字符串,因为可能在一个目标中,视图必须显示“自行车站”,而在另一个目标中显示“车站”(使用相应的语言)。

我可以为每种语言提供一个唯一的本地化文件,其中不同的参数为每个目标字符串添加前缀,但这不是那么可维护的。我正在尝试找到一种方法来维护结构简单,每个应用程序只需要更改每个客户在每个标签上需要的文本。

我尝试定义两个不同的Localizable文件,并将每个文件都标记为一个唯一的目标,如下图所示

Localization by target

但是当我打开第二个目标时,会识别出任何可本地化的字符串

您知道我的问题可能是什么,或者如何为每个目标定义多种语言的不同本地化文件?

提前感谢您的帮助:)

1 个答案:

答案 0 :(得分:3)

我有一个Translation课,我有一个forKey:NSString方法。

NSString *text = NSLocalizedStringFromTable(key, @"Localizable_base", nil);
text = NSLocalizedStringWithDefaultValue(key,
                                         @"Localizable_target",
                                         [NSBundle mainBundle],
                                         text,
                                         nil);
if(!text)
    text = key;

首先获取默认值。然后将其作为默认值传递给特定目标。如果您的字符串未在base中列出,请首先获取特定于目标的字符串,检查是否存在值,如果没有,请将text设置为默认值。

您还可以查看我的旧问题,该问题必须处理目标的不同语言: Allow only specific translations for different schemes/targets