如何通过以下方法获取 iPhone 设备语言到服务器?
$_SERVER['HTTP_ACCEPT_LANGUAGE']
如果您询问如何接收设备语言,您可以这样做:
NSString *userLocale = [[NSLocale currentLocale] localeIdentifier];
NSString *userLanguage = [userLocale substringToIndex:2];
if([userLanguage isEqualToString:@"en"]){
//English
}
else if([userLanguage isEqualToString:@"es"]){
//Spanish
}
else if([userLanguage isEqualToString:@"fr"]){
//French
}
对于其余的语言代码,您可以访问此网站。iOS 的代码是最后一列中的 ISO 639-1 代码。
上面的答案对我不起作用,因为[[NSLocale currentLocale] localeIdentifier]
总是会返回en_US
。这是因为在模拟器中更改语言首选项是由[NSLocale preferredLanguages]
. 这是检查设备语言设置的另一种方法:
NSString *preferredLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
NSLog(@"%@", preferredLanguage);
if ([preferredLanguage isEqualToString:@"en_US"])
{
// English
}
else if([preferredLanguage isEqualToString:@"es"])
{
// Spanish
}
获取设备的当前语言
NSLocale.preferredLanguages()[0] as String
输出:
输入
获取应用程序的语言
NSBundle.mainBundle().preferredLocalizations[0] as NSString
笔记:
它获取您在info.plist的CFBundleDevelopmentRegion中给出的语言
如果CFBundleAllowMixedLocalizations在 info.plist 中为真,则返回 info.plist中CFBundleLocalizations的第一项
PHP
浏览器通常会发送一个名为 Accept-Language 的 HTTP 标头,指示用户愿意获得哪些语言
$_SERVER['HTTP_ACCEPT_LANGUAGE']
Swift:通过原生 API 获取设备语言
let language = NSLocale.preferredLanguages()[0] as String
'HTTP_ACCEPT_LANGUAGE'
Contents of the Accept-Language: header from the current request, if there is one. Example: 'en'.
http://php.net/manual/en/reserved.variables.server.php
基本上,您只需要找出代码是什么。您可能应该检查以下内容:
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] != "")
{
$currentLanguage = "en";
}
我有一段时间没有接触过 PHP,但是浏览器有可能不会报告语言,具体取决于存在的浏览器。您将需要一个默认值。
我知道这是一篇旧帖子,但今天我需要做 Monk 要求的事情,而 qegal 发布的解决方案对我不起作用,所以我发布了我的答案。但它确实让我走上了正确的轨道,所以我对 qegal 投了 +1 票。
在我的应用程序中,当手机设置为瑞典语时,我需要做一些事情,所以在启动应用程序时会检查语言是否设置为瑞典语,如果是,请调用适当的方法。代码嵌套在 viewDidLoad: 方法中。记得将手机设置中的区域格式设置为对应的语言。
NSString *userLocale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"%@", userLocale);
if ([userLocale isEqualToString:@"sv_SE"]) {
// Swedish, do something when phone is set to Swedish or whatever language you prefer
}