[英]Can I load a localizable.strings file into an iOS app over-the-air
让我们说我的应用程序只运行英文。 但我不想每次添加新语言时都发布新版本。 我的建议是将这个localizable.strings
文件远程加载到我的应用程序中。
我的应用程序可以从ftp站点加载文件。
你们认为有可能以这种方式加载语言吗? 或者App是否必须在编译时编译语言文件?
从包中提取所有本地化的字符串资源(以及许多其他类型的资源)。 通常,应用程序使用“主捆绑”,这是由XCode与您的应用程序一起创建的。 但是你可以单独创建任何其他包,只要你使用正确的结构,然后你可以在你的应用程序中下载它,最后使用NSLocalizedStringFromTableInBundle()函数提取本地化的字符串。
所以,假设您提取了一个关键的“KEY”语言翻译,那么正常的语法将是:
NSString *translated = NSLocalizedStringFromTable(@"key",nil,nil);
但是此选项的变体允许您指定包:
NSString *translated = NSLocalizedStringFromTableInBundle(@"key",nil,myBundle,nil);
在标准情况下,用[NSBundle mainBundle]
替换myBundle
但是如果要使用另一个包,可以用这种方式指定它:
NSString *myBundlePath = "the path to the downloaded bundle";
NSBundle *myBundle = [NSBundle bundleWithPath:myBundlePath];
NSString *translated = NSLocalizedStringFromTableInBundle(@"key",nil,myBundle,nil);
捆绑包的完整结构可以在Apple文档的“捆绑编程指南”中看到,但在您的情况下,您可以通过以下方式创建:
你会注意到最后一个操作,现在这个对象被视为一个独立的对象,但实际上它是一个目录。
现在,您可以决定使用多捆绑方法或遵循单捆绑技术:在后一种情况下,您可以打包所有语言,然后使用自动系统本地化规则使用唯一更新捆绑包进行语言转换; 在另一种情况下,您可以为每种语言创建一个包,然后 - 根据当前选择的语言 - 加载相应的包并为您的翻译选择它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.