首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载localizable.strings

无法加载localizable.strings
EN

Stack Overflow用户
提问于 2012-10-05 00:16:40
回答 1查看 2.3K关注 0票数 1

删除项目的一种语言后,项目中其他现有的可本地化文件无法正确加载。文件包含在包资源中,但是它们没有正确加载,load方法不会返回localizable.strings文件中包含的字符串键的任何值。

load方法如下:

代码语言:javascript
复制
-(NSString*) languageSelectedStringForKey:(NSString*) key
{

    NSString *path;

    NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
    NSArray *languages = [currentDefaults objectForKey:@"AppleLanguages"];
    NSString *selectedLanguage = [languages objectAtIndex:0];

    if([selectedLanguage isEqualToString:@"es"])
        path = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"];
    else if([selectedLanguage isEqualToString:@"en"])
        path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];

    NSBundle* languageBundle = [NSBundle bundleWithPath:path];
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];

    path=nil;

    languages=nil;

    selectedLanguage=nil;

    languages=nil;

    languageBundle=nil;

    return str;

}

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-05 00:57:57

在大多数情况下,您可以只使用NSLocalizedString查找字符串的翻译。例如:

代码语言:javascript
复制
myLabel.text = NSLocalizedString(@"The String Key", @"Comment for translators");

为了探索查找这些字符串的问题,我有两个建议:

  • 仔细检查iPhone /模拟器是否设置为您要显示的语言。是的,这应该很明显,但为了安全起见,
  • 在模拟器中运行你的应用程序,并记录以下路径:

NSLog(@"Bundle path is: %@", [[NSBundle mainBundle] bundlePath]);

从那里你可以浏览你的应用程序用来执行特定语言查找的文件树(使用Finder或Terminal来检查该目录中有哪些文件)。您应该会看到直接位于上面记录的路径中的目录,这些目录看起来像{ios-language-code}.lproj,并且每个目录中都应该有一个名为Localizable.strings的文件(假设您使用的是默认转换设置)。例如,英语为en.lproj,法语为fr.lproj

因此,我建议验证这些文件的格式是否正确,如here所述。了解用于处理这些文件的工具也是很好的,这些文件在here中有描述。

如果文件结构不是您所期望的,一种可能的方法是在Xcode中检查目标的构建阶段,并验证"Copy Bundle Resources“部分中是否列出了Localization.strings

我非常确定,如果您的捆绑包中有正确的.lproj目录,并且这些目录中有正确的.strings文件,那么NSLocalizedString应该可以按预期工作--因此,即使上面的建议不能完全解决您的问题,您也可以将问题减少到修复主捆绑包文件结构。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12731472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档