【问题标题】:xcode - I want to receive the device languagexcode - 我想接收设备语言
【发布时间】:2012-04-15 06:54:14
【问题描述】:

如何通过以下方法将 iPhone 设备语言获取到服务器?

$_SERVER['HTTP_ACCEPT_LANGUAGE']

【问题讨论】:

  • 您是要在 iPhone 客户端检索本地语言,还是在 HTTP 服务器检索远程语言?

标签: ios device http-accept-language


【解决方案1】:

如果您询问如何接收设备语言,您可以这样做:

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
}

对于其他语言代码,您可以前往this website。 iOS 的代码是最后一列中的 ISO 639-1 代码。

【讨论】:

    【解决方案2】:

    上面的答案对我不起作用,因为[[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
    }
    

    【讨论】:

      【解决方案3】:

      斯威夫特

      获取设备的当前语言

      NSLocale.preferredLanguages()[0] as String
      

      输出:

      zh-CN

      获取应用的语言

      NSBundle.mainBundle().preferredLocalizations[0] as NSString
      

      注意:

      它获取您在 info.plist 的 CFBundleDevelopmentRegion 中给出的语言

      如果 CFBundleAllowMixedLocalizations 在 info.plist 中为真,则返回 info.plist 中 CFBundleLocalizations 的第一项

      Source

      PHP

      浏览器通常会发送一个 HTTP 标头,名称为 Accept-Language,指示用户愿意获得哪些语言

      $_SERVER['HTTP_ACCEPT_LANGUAGE']
      

      【讨论】:

        【解决方案4】:
          '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,但是浏览器有可能不会报告语言,具体取决于存在的浏览器。您将需要一个默认值。

        【讨论】:

        • 这个问题没有提到任何关于 PHP 的内容,为什么会这样假设?
        • 我可能会离开。我以前做PHP,“$_”表示PHP中的全局变量。 $_Server 是一个 PHP 变量。就像我说的那样,可能是错误的,因为我在其他任何地方都没有看到过这样的访问。
        • 你说得对,我应该看看。一点谷歌没有显示任何将 $_session 作为 xcode 一部分的内容。如果你发现什么我真的很好奇他们是否使用相同的语法,请告诉我。
        • 我很确定 OP 想知道如何根据 iPhone 发送的 HTTP 标头在服务器端检索 iPhone 的语言。
        【解决方案5】:

        我知道这是一篇旧帖子,但今天我需要按照 Monk 的要求去做,而 qegal 发布的解决方案对我不起作用,所以我发布了我的答案。但它确实让我走上了正轨,所以我为 qegal 投票 +1。

        在我的应用程序中,当手机设置为瑞典语时,我需要执行一些操作,因此启动应用程序时会检查语言是否设置为瑞典语,如果是,请调用适当的方法。代码嵌套在 viewDidLoad: 方法中。记得把手机设置里的Region格式设置成对应的语言。

        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
        
        }
        

        【讨论】:

          【解决方案6】:

          Swift:通过原生 API 获取设备语言

          let language = NSLocale.preferredLanguages()[0] as String
          

          【讨论】:

            猜你喜欢
            • 2019-11-09
            • 2021-01-31
            • 2017-03-08
            • 1970-01-01
            • 1970-01-01
            • 2013-06-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多