iphone多语言支持

问题描述:

我正在开发一个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中。所以你最终可能会混合使用各种语言。