我有一个本地化的iOS应用程序,我希望在其中包含一些本地化的HTML文件。我无法理解如何做到这一点。
目前,我的文件夹结构如下所示:
/myapp
/en.lrproj
/Localizable.strings
/fr.lrproj
/Localizable.strings
/webviews
/view1
/index.html
/pic1.png
/view2
/index.html
/pic2.png
如您所见,我目前将视图组织到自己的文件夹中,并附带相关图像。
在XCode中,当我选择Localizable.strings文件时,我可以添加新的本地化。在搜索此问题的解决方案时,我看到其他人对HTML文件也做了同样的事情,但是当我选择HTML文件时,没有显示本地化的选项,所以我想知道文件夹结构是否是问题。
另一方面,我不知道如何将HTML结构化为语言代码文件夹,而不是复制必须同时存在的图形。
显然我不理解某些事情 - 我需要做些什么来实现这个目标?
谢谢,
添
答案 0 :(得分:6)
将index.html安排在Localized.strings旁边,将图片保存在Web视图目录中:
/myapp
/en.lrproj
/Localizable.strings
/view1/index.html
/view2/index.html
/fr.lrproj
/Localizable.strings
/view1/index.html
/view2/index.html
/webviews
/view1
/pic1.png
/view2
/index.html
/pic2.png
构建文件路径:
NSArray* availableLocalizations = [[NSBundle mainBundle] localizations];
NSArray* userPrefered = [NSBundle preferredLocalizationsFromArray:availableLocalizations forPreferences:[NSLocale preferredLanguages]];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"view" forLocalization:[userPrefered objectAtIndex:0]];
html树中的图片现在类似于
/myapp/en.lrproj/view1/index.html
/myapp/webviews/view1/pic1.png
在index.html中,<img>
代码指向../../../webview/pic1.png
(不确定您需要../
的数量。您可能想要打开终端,导航到/myapp/en.lrproj/view1/并使用ls ../../../webview/pic1.png
进行测试。)
答案 1 :(得分:2)
我认为“webviews / view1 / index.html”是英文,“webviews / view2 / index.html”是法文。
NSString *dir = NSLocalizedString("webviews/view1", @"webdir");
NSString *path = [[NSBundle mainBundle]pathForResource:@"index" ofType:@"html" inDirectory:dir];
in Frenchizable.strings of French
/* webdir */
"webviews/view1" = "webviews/view2";
我在ViewController中使用下面的代码测试了上面的代码。
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];
“webviews”目录应该是Xcode中的“文件夹引用”,而不是组。 (蓝色目录图标,不是黄色图标)
另外,请注意不要在目录名后添加斜杠,例如“webviews / view2 /”。 当我在iOS 5.x上运行它时,我发现这可能是一个问题(我在5.0.1和5.1.1上测试过它)。但iOS 6.1.2没问题。