iOS 和国际化——所有文件都在一个 AppStore 包中?

标签 ios xcode internationalization app-store

我有一个关于国际化的问题,但我没有用谷歌搜索它,所以我决定在这里问。

我正在编写一个包含大量资源(图像和影片剪辑)的应用程序。此外,我需要创建多种语言版本的应用程序。我的首要任务是使包的大小尽可能小,因为我不希望用户被迫下载包含资源所有可能语言版本的包。一种解决方案是创建 N 个项目,每个项目都包含特定语言的资源。它有一个主要缺点 - 维护起来会困难得多。

我的问题是:如果我使用 Apple 本地化应用程序的方式(即我将有几个 .lproj 文件夹),特定国家/地区的 AppStore 是否只会下载特定语言的所需资源?如果没有,不做N个项目怎么实现?

最佳答案

App Store 不会根据用户的 App Store 位置转储其余资源文件。语言和区域设置在设备上确定;用户可以轻松地在设备上切换他们的语言,并使用支持该不同语言的应用程序而无需重新下载。

至于不用创建N个项目的方法,有多种方法:

  • 您可以在线托管您的图像和视频剪辑,并且设备会根据设备语言确定访问哪一个。有了这个,您可以按需下载(但应用程序需要持续的网络访问),或者在应用程序首次运行时下载所有必需的文件(如果设备上的语言发生变化,则重新下载,这不是经常)

  • 这更适用于图像,但图像可以有两个组件。不包含特定语言内容的背景和包含特定语言内容的叠加层。所有语言的背景都将保持不变,并且可以根据语言应用适当的叠加层。如果叠加层只是文本,那么所有这些叠加层的大小将比使用整个图像的情况小很多。

否则,您将需要使用 N 个项目。不过我不喜欢这个想法,因为将来维护起来会很痛苦,但有时如果您的应用程序需要大量媒体,则可能需要这样做。

关于iOS 和国际化——所有文件都在一个 AppStore 包中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780022/

相关文章:

ios - Swift - collectionView 首次加载时如何自动选择单元格?

ios - 隐藏导航栏导致 View 向上移动

ios - Swift 希望 #selector 的参数暴露给 Objective-C

php - 是否使用 "SET NAMES"

ios - 安装 iPhone 配置实用程序时出错

ios - 如何快速添加背景图片并将其放在 UITableViewCell 下?

ios - Unity/XCode : Unity/ObjCRuntime. h 文件未找到

ios - Xcode 11.4 编译错误 'Missing package product <package name>'

jquery - Play 框架和 javascript i18n

ios - ios swift 中的本地化。如何在运行时更改应用程序语言