在XCode中本地化HTML文件

时间:2012-01-25 11:07:19

标签: iphone ios ipad localization uiwebview

我有一个本地化的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结构化为语言代码文件夹,而不是复制必须同时存在的图形。

显然我不理解某些事情 - 我需要做些什么来实现这个目标?

谢谢,

2 个答案:

答案 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没问题。