2010-08-18 78 views
5

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

我加载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.lprojfr.lproj

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

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

第二次尝试:

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

我尝试在模拟器上,但没有成功(我有干净的测试之前的版本):

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

第三次尝试:

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

我尝试在模拟器上,但没有成功(我有干净的测试之前的版本) :

  • 日志指示该路径是:(...)/ myapp.app/presentation.htm
  • 在模拟器加载的文件是用法语,而模拟器是英语。

帮助?

任何想法? 我知道有一个函数: - (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName

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

+0

除去后应用程序从模拟器,它没有工作,但路径已经改变。现在是:(...)/ myapp.app/fr_FR.lproj/presentation.htm – AlexandreD 2010-08-18 13:16:35

回答

16

解决方法是:从模拟器(或设备)

  1. 删除应用程序
  2. 使用简单的局部文件夹,如:en.lproj
  3. 清理生成
+1

这样做!在尝试了所有解决方案后无效,当然硬重置工作。 – 2011-11-15 20:44:45

+0

我希望在花了两个小时之前找到了这篇文章。对我来说,“删除应用程序”是个诀窍。我想它会变得困惑。 – Walter 2012-02-13 01:48:49

+1

我重置我的模拟器,然后得到正确的结果! – sunkehappy 2013-02-21 10:19:52