Ios iphone多语言支持

Ios iphone多语言支持,ios,iphone,cocoa-touch,multilingual,Ios,Iphone,Cocoa Touch,Multilingual,我正在开发一个Iphone应用程序,它必须支持不同的语言 我看到语言必须在我的应用程序中设置,而不是在iphone设置中设置。那么,我是否必须强制使用当前语言?我没有在网上找到例子。所有示例都需要应用程序的当前语言。我希望用户在应用程序启动时选择自己的语言,然后我会设置一个cookie,并且(以我不知道的方式)应用程序会自动引用不同语言的.lproj文件夹。你的问题不是很清楚。没有人说“语言必须在我的应用程序中设置,而不是在iphone设置中设置”——事实恰恰相反 Cocoa有一个非常整洁的本地

我正在开发一个Iphone应用程序,它必须支持不同的语言


我看到语言必须在我的应用程序中设置,而不是在iphone设置中设置。那么,我是否必须强制使用当前语言?我没有在网上找到例子。所有示例都需要应用程序的当前语言。我希望用户在应用程序启动时选择自己的语言,然后我会设置一个cookie,并且(以我不知道的方式)应用程序会自动引用不同语言的.lproj文件夹。

你的问题不是很清楚。没有人说“语言必须在我的应用程序中设置,而不是在iphone设置中设置”——事实恰恰相反


Cocoa有一个非常整洁的本地化系统,非常容易使用(抱怨一些糟糕的本地化工作流程)基本上,将文件放在lproj文件夹中,然后使用
NSBundle
资源API来定位它们(NIB加载和其他子系统自动使用它,因此您甚至不必在那里工作!)。

您的问题不是很清楚。没有人说“语言必须在我的应用程序中设置,而不是在iphone设置中设置”——事实恰恰相反


Cocoa有一个非常整洁的本地化系统,非常容易使用(抱怨一些糟糕的本地化工作流程)基本上,将文件放在lproj文件夹中,然后使用
NSBundle
资源API来定位它们(NIB加载和其他子系统自动使用它,因此您甚至不必在那里工作!)。

在iOS中使用默认的本地化机制是不可能的。默认情况下,系统根据用户的系统语言选择.lproj文件夹,如果您有本地化的NIB并使用NSLocalizedString()等,系统将自动执行本地化


如果确实要更改该行为并“覆盖”系统语言,则必须实现自己版本的NSLocalizedString,手动访问所需.lproj文件夹中的字符串文件。请注意,NIB不使用自定义NSLocalizedString函数。因此,要么根本不使用NIB,要么在代码中对NIB进行本地化,而不是使用不同的NIB。

在iOS中使用默认的本地化机制是不可能的。默认情况下,系统根据用户的系统语言选择.lproj文件夹,如果您有本地化的NIB并使用NSLocalizedString()等,系统将自动执行本地化

[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"it",@"en", nil] forKey:@"AppleLanguages"];
如果确实要更改该行为并“覆盖”系统语言,则必须实现自己版本的NSLocalizedString,手动访问所需.lproj文件夹中的字符串文件。请注意,NIB不使用自定义NSLocalizedString函数。因此,要么根本不使用NIB,要么在代码中本地化NIB,而不是使用不同的NIB

[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"it",@"en", nil] forKey:@"AppleLanguages"];
然后,如果iPhone语言设置为英语,我的iPhone应用程序将始终与“it”配合使用。数组的第一个元素


然后,如果iPhone语言设置为英语,我的iPhone应用程序将始终与“it”配合使用。数组的第一个。

IIRC,您需要NSLocalizedStringFromTable

您可以为每种语言创建一个.strings文件:例如“EN.strings”、“JP.strings”等

这些文件可以通过表参数从默认包加载到NSLocalizedStringFromTable

当用户选择一种语言时,您可以切换从哪个表(.strings文件)加载字符串


一个问题是,iOS字符串仍将本地化为用户的设置,或您的应用程序在Info.plist中本地化为的任何内容。因此,最终可能会混合使用多种语言。

IIRC,您需要NSLocalizedStringFromTable

您可以为每种语言创建一个.strings文件:例如“EN.strings”、“JP.strings”等

这些文件可以通过表参数从默认包加载到NSLocalizedStringFromTable

当用户选择一种语言时,您可以切换从哪个表(.strings文件)加载字符串

一个问题是,iOS字符串仍将本地化为用户的设置,或您的应用程序在Info.plist中本地化为的任何内容。因此,您可能最终会混合使用多种语言