不同的本地化取决于目标

时间:2016-07-18 15:04:47

标签: ios xcode app-store

我在Xcode的一个项目下有很少的目标。在项目设置中,我看到这样的本地化: enter image description here

但我想做的是让一个目标本地化为德语和波兰语,第二个目标只有德语。这些目标产品是单独的ipa文件,但我想知道我是否将波兰语留空第二个目标波兰的用户是看到德语文本还是空字符串?此外,如果有语言,它会显示appsore中可用的所有语言吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

但我想做的是让一个目标本地化为德语和波兰语,第二个目标只有德语。

不幸的是,由于本地化是基于文件和项目的,如果不对代码库进行重大更改,这是不可能的。根据您的代码和资源文件(故事板,.strings文件等),可能有两个具有不同本地化的项目,这些项目使用与框架中大部分应用程序代码相同的共同框架。但是,我认为这对你的项目来说太大了。

此外,在生成IPA后删除本地化可能更合理。通过删除波兰语本地化资源和文件夹,您实际上可以获得所需的结果,而项目配置不需要更改。

这个目标产品是单独的ipa文件,但是我想知道如果我将波兰语留空第二个目标,波兰的用户会看到德语文本还是空字符串?

如果您将波兰语本地化文件留空,那么您会在应用中看到两个结果:

  1. 对于故事板本地化,你会看到空字符串(即UILabels, UITextFields等将由空)
  2. 对于NSLocalizedString("key", "comment")引用的字符串, 你会看到comment
  3. 如果您完全删除了波兰语本地化文件,那么应用程序将显示您的基本本地化的本地化。

    此外,如果有语言,它会显示appsore中可用的所有语言吗?

    App Store根据生成的构建中的内容而不是项目配置来选择本地化。如果您在构建中有波兰语本地化文件,那么App Store将会看到这些并显示您的应用程序支持该本地化。

答案 1 :(得分:0)

您可以使用定义作为解决方法,例如:

#ifdef ONLY_GERMAN
#define kTitle @"title"
#else
#define kTitle NSLocalizedString(@"kButtonTitle",@"")
#endif

NSString *title = kTitle;

此后,您需要将ONLY_GERMAN宏添加到所需的目标。目标>构建设置>预处理程序宏。该解决方案的不利方面-重复德国本地化。