2010-08-05 62 views
3

是否有可能使我的應用程序以不同於OS中設置的語言運行的語言運行?我想在我的應用程序設置菜單中設置語言切換,用戶可以在其中進行切換。選擇德語爲應用程序,而他的系統是用英語運行。iPhone應用程序使用不同於OS /設備中設置的語言的語言?

從我已經閱讀過了,現在看來,這是不可能的,而不必我自己的本地化機制...

你覺得呢?

Cheerz,pawi

回答

-1

您需要實現您的自定義資源加載機制來實現這一點。例如,你將不再能夠使用NSLocalizedString宏或[NSBundle pathForResource:]。您將始終必須指定包含本地化的路徑(如de.lproj/MyStrings.strings而不僅僅是MyStrings.strings)。除非絕對必要,否則我會建議不要這樣做。

10

雖然我花了幾個星期的工作如何我;-)

有一個叫做IDEX一個iPhone應用程序是一個羅馬尼亞字典就可以輕鬆完成。在iPad上,羅馬尼亞語不能用作UI語言,所以我想讓用戶選擇在應用程序設置中選擇羅馬尼亞語,因爲設備設置不包括它。

你需要做的是國際化應用程序並像往常一樣本地化。然後,在main方法,設置標準NSUserDefaults到您所選擇的語言和國家的AppleLanguages關鍵,像這樣

int main(int argc, char *argv[]) { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[NSArray arrayWithObject:@"ro_RO"] forKey:@"AppleLanguages"]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool drain]; 
    return retVal; 
} 

這是勢在必行您設置前AppleLanguages關鍵您運行的是UIApplicationMain(),因爲此時已加載UIKit框架並確定了默認語言。

指定語言和國家(例如@「ro_RO」而不僅僅是「ro」)同樣重要,否則在設置密鑰時,您的應用程序可能會崩潰。

通過這樣做,支持本地化的所有對NSBundle的調用都將查找您編程建立的語言,而不是設備上設置的語言。

希望可以幫助...

+0

從我所見過的Apple文檔中,只提到了此AppleLanguages鍵值的檢索。您是否遇到過將應用程序提交到App Store的困難? – 2012-01-11 16:30:16

+0

我在App Store上有一個應用程序,它完全使用此代碼。這是大約一年前的最後一次更新,沒有問題... – fedmest 2013-06-21 14:05:32

相關問題