我们正在构建一个包含我们希望本地化的动态数据的应用程序。 我们知道如何在iOS和Android中本地化字符串,但在这种情况下,数据将从服务器动态下载,因此我们需要动态下载本地化文件。
通常我们将字符串文件存储在语言文件夹中。当文件来自服务器时我们该怎么做?
答案 0 :(得分:11)
当文件来自服务器时我们该怎么做?
您不能,因为应用程序包在iOS设备上不可写。
但是,NSLocalizedStringFromTableInBundle()
允许您指定可以加载.strings
文件的其他捆绑包。我没有尝试,但我想这个包也可以驻留在你的应用程序的Documents或Library文件夹中。
答案 1 :(得分:3)
是的,这是可能的,但不是使用标准手段。检查this github repository以获得简单而优雅的解决方案。
它使用包含本地化信息的.json文件,可以从服务器下载。所有控制器都需要订阅本地化类发送的通知,并实现一个负责(重新)设置所有文本的方法。
答案 2 :(得分:-1)
我们公司想的是将设备的语言和上次更新语言的时间发送到服务器。然后,服务器检查数据库中的语言,如果该语言存在,则发送,如果不存在,则默认发送英文翻译列表。响应由 key: value 数据数组的列表以及上次更新时间组成,每次应用启动时都会发送。所以手机应该缓存翻译列表,只使用缓存中的数据。在这种情况下,您不需要使用本地化的 xml 文件,并且由于服务器正在检查它上次更新的时间,因此您不必每次都刷新键值数据,而只需刷新您从服务器获取的数据。