我正在開發一個Iphone應用程序,它必須支持不同的語言。iphone多語言支持
我看到,語言必須在我的應用程序中設置,而不是在iPhone設置。那麼,我是否必須強制使用該語言才能使用當前語言?我沒有在互聯網上找到例子。所有示例都需要應用程序的當前語言。我希望用戶在應用程序啓動時選擇他的語言,然後我將設置一個cookie和(以iI不知道的方式)該應用程序會自動引用具有不同語言的我的.lproj文件夾。
我正在開發一個Iphone應用程序,它必須支持不同的語言。iphone多語言支持
我看到,語言必須在我的應用程序中設置,而不是在iPhone設置。那麼,我是否必須強制使用該語言才能使用當前語言?我沒有在互聯網上找到例子。所有示例都需要應用程序的當前語言。我希望用戶在應用程序啓動時選擇他的語言,然後我將設置一個cookie和(以iI不知道的方式)該應用程序會自動引用具有不同語言的我的.lproj文件夾。
這不可能在iOS中使用默認的本地化機制。默認情況下,系統根據用戶的系統語言選擇.lproj文件夾,並在本地化NIB並使用NSLocalizedString()等情況下自動執行本地化。
如果您確實想更改該行爲並「覆蓋」系統語言,你必須實現自己的版本的NSLocalizedString,手動訪問你想要的.lproj文件夾中的字符串文件。請注意,雖然NIB不使用您的自定義NSLocalizedString函數。因此,要麼根本不使用NIB,要麼使用代碼本地化NIB而不使用不同的NIB。
你的問題不是很清楚。沒有什麼說「語言必須在我的應用程序中設置,而不是在iPhone設置中」 - 事實上恰恰相反!
可可有一個非常整潔的本地化系統,很容易使用(抱怨一些關於爛本地化工作流程)。 Here's the full skinny on it - 基本上,在lproj文件夾中有文件,然後使用NSBundle
資源API來定位它們(NIB加載和其他子系統自動使用它,所以你甚至不必在那裏工作!)。
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"it",@"en", nil] forKey:@"AppleLanguages"];
那麼如果iPhone語言設置爲英語,我的iPhone應用程序將始終與「它」一起工作。數組中的第一個。
IIRC,你想要NSLocalizedStringFromTable。
您爲每種語言創建一個.strings文件:例如「EN.strings」,「JP.strings」,等等
這些文件會從該表參數NSLocalizedStringFromTable默認捆綁加載。
當用戶選擇一種語言時,切換哪個表(.strings文件)來加載字符串。
問題之一就是iOS字符串仍然會本地化爲用戶的設置,或者您的應用程序本地化到Info.plist中。所以你最終可能會混合使用各種語言。