禁用Xcode中的目标本地化

时间:2015-08-25 20:54:18

标签: ios xcode localization

在我们的项目中,我们有多个构建目标,每个目标使用英语,法语和基础(英语)本地化文件。其中一些是字符串文件,而另一些是已构建为包含这两种语言的本地化故事板文件。

在单个构建目标上,最好的方法是限制本地化,以便它只使用英语和而不是法语,同时保持它,以便所有其他构建目标仍然具有英语和法语本地化工作?我尝试不为该特定版本包含法语本地化,但删除了整个本地化文件,因为这似乎是在项目级别完成的。

我在这里发现了一些帖子,但没有任何条款可以用于从特定的构建目标中禁用单个本地化语言,而只留下其他人。

我们目前正在使用Xcode 6。

1 个答案:

答案 0 :(得分:1)

我不确定这正是您正在寻找的内容,但如果您想强制您的应用以特定语言显示,则可以在不从项目中删除其他本地化的情况下执行此操作。您可以将main.m实现更改为:

int main(int argc, char *argv[])
{
    @autoreleasepool
    {
        if (/*Some condition for this build*/)
        {
            NSString *newLanguage = [[NSUserDefaults standardUserDefaults] objectForKey:kNewLanguageCode];

            [[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:newLanguage, nil] forKey:@"AppleLanguages"];
        }
        else // If you want other conditions, or just do nothing if you want to support the device's current localization settings
        {
            [[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];
        }

        [[NSUserDefaults standardUserDefaults] synchronize];

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

我知道这不完全是你提出的问题,但我认为它可以从一个稍微不同的方向解决你的问题,所以我希望这会有所帮助。祝你好运!