2012-02-22 38 views
3

我有2套iPhone應用程序本地化圖像。我應該如何放置圖像?我怎樣才能加載到應用程序?iOS:管理本地化圖像

的文件夾結構如下:

For English version: 
/MyApp/en.lproj/Localizable.strings , InfoPList.strings 
/MyApp/en.lproj/*.png (images) 

For Traditional Chinese version: 
/MyApp/zh-Hant.lproj/Localizable.strings , InfoPList.strings 
/MyApp/Resources/*.png (images) 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *locale = [[defaults objectForKey:@"AppleLanguages"] objectAtIndex:0]; 
NSString* path= [[NSBundle mainBundle] pathForResource:locale ofType:@"lproj"]; 
NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 
SomeViewController *vc = [[SomeViewController alloc] initWithNibName:@"SomeViewController" bundle:languageBundle]; 

我想用相同的文件名兩個組圖像,使其自動加載。可能嗎?

現在我遇到一個問題。在調試控制檯中,它說:

NSBundle </Users/SomeUser/Library/Application Support/iPhone Simulator/5.0/Applications/1DC22505-1E78-4B5E-A794-DBF72DC786AE/MyApp.app/zh-Hant.lproj> (not yet loaded) 

我該如何解決它?

回答

7

爲什麼你的語言捆綁自己嗎?你可以只定位圖像文件名像這樣:

NSString *imageName = NSLocalizedString(@"myimage_jp", @"localized image"); 
UIImage *image = [UIImage imageNamed:imageName]; 

而在Localizable.strings文件只是映射的是圖像的名字,像這樣(假設日本是默認的語言):

@"myimage_jp" = @"myimage_cn" 

當然你就必須有2個版本的資源(myimage_jpmyimage_cn

+0

哪裏應該把圖像的圖像嗎?相同的文件夾(全部在'/ MyApp/Resources /'或者他們的'.lproj')? – Raptor 2012-02-22 06:54:16

+1

在Resources文件夾中 – 2012-02-22 06:54:47

+0

如果我在視圖控制器的初始化中將bundle設置爲'nil',則在重新啓動應用程序後,圖像效果不錯。有什麼方法可以在不重新啓動的情況下更改應用圖片嗎? – Raptor 2012-02-22 07:40:32