gpt4 book ai didi

objective-c - 无法加载localizable.strings

转载 作者:行者123 更新时间:2023-12-01 19:16:56 25 4
gpt4 key购买 nike

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

这是加载方法:

-(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;

}

非常感谢您的帮助。

最佳答案

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

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中目标的构建阶段,并验证 Localization.strings是否在“复制捆绑资源”部分下列出。

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

    关于objective-c - 无法加载localizable.strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12731472/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com