在iOS上以编程方式本地化info.plist

在iOS上以编程方式本地化info.plist,ios,objective-c,swift,Ios,Objective C,Swift,我在iOS上遇到了一个具体的翻译问题。 我目前正在使用的应用程序从web服务获取它显示的所有文本。我在任何地方都能实现这一点,只有一个例外: 我还没有找到一种方法以编程方式修改info.plist中的文本,这些文本在我无法控制的代码中从系统中使用。我需要处理的是“隐私-摄像头使用说明”。到目前为止,我找到的任何文档都告诉我为info.plist添加本地化的文本版本,但在这种情况下,这对我没有帮助,因为不同的客户可能会为同一种语言指定不同的文本,有时我甚至不知道文本使用的是什么语言,因此,我不能仅

我在iOS上遇到了一个具体的翻译问题。 我目前正在使用的应用程序从web服务获取它显示的所有文本。我在任何地方都能实现这一点,只有一个例外:

我还没有找到一种方法以编程方式修改info.plist中的文本,这些文本在我无法控制的代码中从系统中使用。我需要处理的是“隐私-摄像头使用说明”。到目前为止,我找到的任何文档都告诉我为info.plist添加本地化的文本版本,但在这种情况下,这对我没有帮助,因为不同的客户可能会为同一种语言指定不同的文本,有时我甚至不知道文本使用的是什么语言,因此,我不能仅仅依靠应用程序中的静态数据来选择正确的文本版本


是否有任何方法可以通过编程方式设置此类文本,或者如果无法捕获显示该文本的警报并将其替换为我自己的文本?

不,不可能,我们无法更改Info.plist运行时。但是如果我代替你,我会做一件事作为解决办法显示带有api中指定文本的自定义alertview。它会问“我们将使用你的相机”。如果用户说“确定”,则使用静态本地化字符串显示系统的权限alertview。它需要两次交互,但可以彻底指导用户。

您可以本地化
info.plist
文件本身。 从project中,转到您的
info.plist
文件,打开实用程序选项卡,点击本地化。 对于不同的本地化,在指定的键上使用不同的字符串


我自己没有试过,只是检查一下它是否可以本地化。还有一件事,使用这种方式,应用程序将使用设备的本地化(您不能使用库来切换应用程序使用的字符串表)

info.plist可以本地化,就像InfoPlist.strings和localizable.strings一样。如果这没有用,那么你别无选择。没有进一步讨论的必要。@ChristophO这些字符串是权限请求,所以它们很敏感,在发布应用程序之前,苹果会对它们进行审查。为了安全起见,您无法在不将新版本重新上传到iTunes Connect的情况下更改它们。我当然知道这一点,但这无助于我在编译时无法指定文本的实际情况。就像我说的,我从网络服务中获取所有文本。根据客户的配置,同一商品可能有不同的文本。哦,在这种情况下,您必须按照其他人的建议执行。因为它是在coreOS级别实现的,无论发生什么情况,你都无法访问它(除非使用privateAPI),你可以在其中放入空字符串,然后弹出另一个警报或该警报的特定页面(就像facebook那样)。苹果不会拒绝这种方法,苹果只是强调用户知道他授予许可的目的,如果你事先提供页面或警告,说明你为什么需要这种许可,他们会同意。谢谢你的提示。我想这就是我给客户的建议。我觉得奇怪的是,从来没有人认为这些文本在编译时是不可确定的。对于我所做的事情,客户可以通过一个web界面输入他们希望与静态默认值不同的文本的自定义版本,然后在登录时发送到应用程序,这是一个常见的过程,但我发现在iOS上完成这项工作非常复杂,因为它都是面向静态提供的翻译的。