2010-12-08 96 views
2

有人可以给我一个想法如何找到问题。 我有一个名为“MyApp”的应用程序。我想将应用程序名称本地化为德语。我在主项目目录中有一个目录de.lproj。它包含一个文件Localizable.strings并且工作正常。 我添加了一个InfoPlist.strings文件,并在那里我把:CFBundleDisplayName的本地化无法工作,无论我尝试

CFBundleDisplayName =“Applikationsname”;

但它不会显示已翻译的名称,它会保留在“MyApp”上。以下是我试过到目前为止:

  • 三重检查拼写和大小写
  • 清洁从设备上的所有
  • 删除应用程序,并在 模拟器
  • 在模拟器
  • 删除用户目录
  • 改变了英语应用在MyApp-Info.plist中的名称 - 工作。
  • 重读任何我能找到的 苹果文档和大量的谷歌搜索,确认 它应该工作。

无论我尝试过什么,应用程序名称都是MyApp-Info.plist中的一个。 我也是在应用程序委托记录此:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; 
NSString *currentLanguage = [languages objectAtIndex:0]; 
NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
NSString *prodName = [info objectForKey:@"CFBundleDisplayName"]; 
NSLog(@"Product Name:%@",prodName); 
NSLog(@"Current Locale: %@", [[NSLocale currentLocale] localeIdentifier]); 
NSLog(@"Current language: %@", currentLanguage); 

输出是:

2010-12-08 12:51:00.886 MyApp[25148:207] Product Name:MyApp 
2010-12-08 12:51:00.946 MyApp[25148:207] Current Locale: de_DE 
2010-12-08 12:51:00.946 MyApp[25148:207] Current language: de 

所以语言设置是正确的,但应用程序将无法读取InfoPlist.strings文件? 任何想法如何从这里继续?

在此先感谢您的回复。

回答

1

好吧,它似乎终于工作。我想我错误地创建了InfoPlist.strings: 从资源选项卡中选择字符串文件,并指定de.lproj作为目标文件夹。

删除文件并在项目根目录中创建一个新文件后,创建可本地化的版本就完成了。 如果有人绊倒这一点,请注意,您还必须在en.lproj中编辑相应的文件。

1

我今天解决了这个问题。您应该使用NSBundle-localizedInfoDictionary方法得到字典,因此,你可以得到本地化的字符串CFBundleDislplayName

3

就我而言,我的Xcode项目只有用于本地化:

  • 英语(开发语言)
  • 日本

(和 “使用基地国际化” 选中)

...但是我的InfoPlist。字符串文件只有本地化:

  • 基地
  • 日本

当我添加的文件的英语版本,它开始工作。 在此之前,无论我尝试什么,应用程序图标都会显示目标名称(产品名称)。

我是“基地”作为默认值(即“所有的语言不明确支持”)的假设下,但似乎实际行为更为复杂...

希望这有助于有人。

+1

Nicolas:我注意到了。我认为当应用程序打开时(即接口),Base本地化为默认启动。你有没有深入一点? – allaire 2016-12-04 15:42:42

相关问题