2010-08-05 322 views
0

我正在開發一個Iphone應用程序,它必須支持不同的語言。iphone多語言支持

我看到,語言必須在我的應用程序中設置,而不是在iPhone設置。那麼,我是否必須強制使用該語言才能使用當前語言?我沒有在互聯網上找到例子。所有示例都需要應用程序的當前語言。我希望用戶在應用程序啓動時選擇他的語言,然後我將設置一個cookie和(以iI不知道的方式)該應用程序會自動引用具有不同語言的我的.lproj文件夾。

回答

1

這不可能在iOS中使用默認的本地化機制。默認情況下,系統根據用戶的系統語言選擇.lproj文件夾,並在本地化NIB並使用NSLocalizedString()等情況下自動執行本地化。

如果您確實想更改該行爲並「覆蓋」系統語言,你必須實現自己的版本的NSLocalizedString,手動訪問你想要的.lproj文件夾中的字符串文件。請注意,雖然NIB不使用您的自定義NSLocalizedString函數。因此,要麼根本不使用NIB,要麼使用代碼本地化NIB而不使用不同的NIB。

1

你的問題不是很清楚。沒有什麼說「語言必須在我的應用程序中設置,而不是在iPhone設置中」 - 事實上恰恰相反!

可可有一個非常整潔的本地化系統,很容易使用(抱怨一些關於爛本地化工作流程)Here's the full skinny on it - 基本上,在lproj文件夾中有文件,然後使用NSBundle資源API來定位它們(​​NIB加載和其他子系統自動使用它,所以你甚至不必在那裏工作!)。

0
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"it",@"en", nil] forKey:@"AppleLanguages"]; 

那麼如果iPhone語言設置爲英語,我的iPhone應用程序將始終與「它」一起工作。數組中的第一個。

1

IIRC,你想要NSLocalizedStringFromTable。

您爲每種語言創建一個.strings文件:例如「EN.strings」,「JP.strings」,等等

這些文件會從該表參數NSLocalizedStringFromTable默認捆綁加載。

當用戶選擇一種語言時,切換哪個表(.strings文件)來加載字符串。

問題之一就是iOS字符串仍然會本地化爲用戶的設置,或者您的應用程序本地化到Info.plist中。所以你最終可能會混合使用各種語言。