2012-03-05 89 views
0

我創建了兩個本地化目錄,名爲en.lproj和fr.lproj。我在這些本地化的目錄中放置了兩個具有相同名稱like.png的不同圖像。如何在運行時更改本地化圖像

現在我創建了一個分別具有兩行「英文」和「法文」文本的表格視圖控制器。

選擇第一行或第二行後,我在運行時獲取包路徑並更改我的應用程序的整個本地化文本。

代碼:

-(NSString*) languageSelectedStringForKey:(NSString*) key 
{ 

    NSString *path; 
    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; 
    if([[userDefault valueForKey:@"language_Selected"] intValue] == 0) 
     path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
    else if([[userDefault valueForKey:@"language_Selected"] intValue] == 1) 
     path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"]; 

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

通過上述代碼動態我可以改變正在運行的應用的語言。 但如何從該捆綁中獲取圖像?

任何想法?

感謝

+0

使路徑變量並使用路徑獲取圖像,從上面的代碼中已經有路徑爲動態的。 – 2012-03-05 13:10:00

+0

感謝您的回覆。 。 :) ..明白了,它的工作原理 – 2012-03-06 07:30:15

+0

任何棄權的理由? – 2012-04-13 11:17:34

回答

1

想必,你不想改變每一個形象,只包含文本或其他文化相關的內容的圖像。對於這些圖像,您可以向包含給定語言的圖像路徑的localizable.strings文件添加條目,並使用此路徑代替硬編碼路徑。

也就是說,在很多情況下,您將在UI中包含圖像作爲.xib的一部分。在這些情況下,您需要做的就是對xib進行本地化(即,爲每種語言製作不同版本的.xib - 您可以通過屬性面板中的語言控件在XCode中執行此操作),並且只需更改每種語言版本中的圖像使用Interface Builder的.xib。