我有一个需要本地化的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
    但我希望它尽可能自动,并且修复Directory或localizationName之类的内容可能会阻止我的应用程序自动运行。

    最佳答案

    解决方案是:

  • 从模拟器(或设备)中删除应用程序
  • 使用简单的本地化文件夹,例如:en.lproj
  • 清洁构建
  • 关于iphone - 无法使用pathForResource自动加载本地化资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3512213/

    10-13 06:47