我有一个需要本地化的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]; }
第一次尝试 :
我已经按照本网站的说明我可以本地化,因为应用程序中还有本地化的资源.文件夹名为:en.lproj和fr.lproj.
我在模拟器上尝试它,但它没有成功:
日志表明路径是:(...)/ myapp.app/presentation.htm
模拟器中加载的文件是法语,而模拟器是英文的.
第二次尝试:
然后,我删除资源并将其重新添加到其组文件夹(Resource/html /)中.我按下了"信息"按钮,然后选择"使文件可本地化".该文件已添加到English.lproj文件夹中.然后我选择"添加本地化"和"法语".
我在模拟器上尝试它,但它没有成功(我在测试前清理了构建):
日志表明路径是:(...)/ myapp.app/presentation.htm
模拟器中加载的文件是法语,而模拟器是英文的.
第三次尝试:
在阅读有关在iPhone OS 4.0上加载本地化资源的此页面后,我更改了本地化文件夹中的资源(删除资源,并重命名en_UK.lproj和fr_FR.lproj中的文件夹)
我在模拟器上尝试它,但它没有成功(我在测试前清理了构建):
日志表明路径是:(...)/ myapp.app/presentation.htm
模拟器中加载的文件是法语,而模拟器是英文的.
救命 ?
任何的想法 ?我知道有这个功能:
- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName
但我希望它尽可能自动化,修复目录或localizationName之类的东西可能会阻止我的应用程序自动化.
解决方案是:
从模拟器(或设备)中删除应用程序
使用简单的本地化文件夹,如:en.lproj
干净的身材