无法使用pathForResource自动加载本地化资源

时间:2010-08-18 12:48:50

标签: iphone html objective-c localization

我有一个需要本地化的iPhone应用程序。 字符串没问题,但是,我遇到了资源问题:我需要加载本地化的HTML页面。 文件类似于:presentation.htm 这些文件在项目中添加了文件夹(html /),并添加了名为文件夹的组。

我使用以下代码加载html页面:

NSString *pathPresentation = [[NSBundle mainBundle] pathForResource:@"presentation" ofType:@"htm"];

if(!pathPresentation) {
    NSLog(@"Could not find presentation.htm");
}
NSURL *url = [NSURL fileURLWithPath:pathPresentation];
NSLog(@"-> path presentation.htm : %@", pathPresentation);
UIWebView *webViewPresentation = [[UIWebView alloc] init];
NSData *htmlData = [NSData dataWithContentsOfFile:pathPresentation];  
if (htmlData) {  
    [webViewPresentation loadData:htmlData MIMEType:@"text/html" textEncodingName:@"Latin-1" baseURL:url];  
}

首先尝试:

我已按照此网站I Can Localize的说明进行操作,因为应用中还有本地化资源。 文件夹名为: en.lproj fr.lproj

我在模拟器上尝试,但没有成功:

  • 日志表明路径为:(...)/ myapp.app/presentation.htm
  • 模拟器中加载的文件是法语,而模拟器是英文。

第二次尝试:

然后,我删除资源并将其重新添加到其组文件夹(Resource / html /)中。我按下了“信息”按钮,然后选择“使文件可本地化”。 该文件已添加到 English.lproj 文件夹中。 然后我选择“添加本地化”和“法语”。

我在模拟器上尝试它,但它没有成功(我在测试前清理了构建):

  • 日志表明路径为:(...)/ myapp.app/presentation.htm
  • 模拟器中加载的文件是法语,而模拟器是英文的。

第三次尝试:

在阅读有关在iPhone OS 4.0上加载本地化资源的this page后,我更改了本地化文件夹中的资源(删除资源,并重命名 en_UK.lproj 中的文件夹fr_FR.lproj

我在模拟器上尝试它,但它没有成功(我在测试前清理了构建):

  • 日志表明路径为:(...)/ myapp.app/presentation.htm
  • 模拟器中加载的文件是法语,而模拟器是英文。

帮助?

有什么想法吗? 我知道有这个功能: - (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName

但我希望它尽可能自动化,修复目录或localizationName之类的东西可能会阻止我的应用程序自动化。

1 个答案:

答案 0 :(得分:16)

解决方案是:

  1. 从模拟器(或设备)中删除应用程序
  2. 使用简单的本地化文件夹,如: en.lproj
  3. clean build