【问题标题】:How to get language locale of the user in Objective-C?如何在 Objective-C 中获取用户的语言环境?
【发布时间】:2010-11-08 07:14:48
【问题描述】:

我正在为 Mac OS X 开发应用程序。我想通过应用程序用户的语言区域(英语、西班牙语等)更改指示内容,我如何获取使用哪种语言的信息?

【问题讨论】:

    标签: objective-c macos localization


    【解决方案1】:
    NSLog(@"localeIdentifier: %@", [[NSLocale currentLocale] localeIdentifier]);
    

    【讨论】:

    • [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale currentLocale] localeIdentifier]] 可用于获取 localeIdentifier 的纯英文版本
    【解决方案2】:

    您可以使用 NSLocale API 来获取该信息,但不必做您想做的事情。 OS X 在操作系统中内置了support for localization——您需要做的就是提供适当的语言文件,用户可以选择他想要的语言。

    【讨论】:

    • 非常感谢!我很高兴,如果你能给我一些示例代码
    • 这并不完全是您可以提供示例代码的事情,因为 Mac 用户界面通常存储在 nib 中,因此实际上没有任何代码负责。基本上,您的应用程序的资源需要遵循一个目录结构,操作系统将为您处理其余的。阅读我给你的链接中的本地化文档,你会看到它是如何工作的。对于以编程方式呈现文本的情况,通常会使用 NSLocalizedString() 函数。
    【解决方案3】:

    代码sn-p

     NSLocale *locale = [NSLocale currentLocale]; 
     [locale objectForKey:NSLocaleLanguageCode]
    

    【讨论】:

      【解决方案4】:

      您可以使用以下两种方式中的任何一种方式:

      NSString *language = [[NSLocale currentLocale] localeIdentifier];
      NSLog(@"Language: %@", language);
      

      输出:语言:en_US

      或者这个:

      NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
      NSLog(@"Language: %@", language);
      

      输出:语言:en

      【讨论】:

        【解决方案5】:

        您希望“本地化”您的应用程序。要开始使用,请在此处查看 Apple 文档:Internationalization - Apple Developer Docs。如果不了解您的特定应用程序的更多信息,很难在这里提出更多建议!

        【讨论】:

          【解决方案6】:

          确切地说,iOS 9 和更高版本有一个变化,现在 [NSLocale preferredLanguages] 返回 - 而不是 only 。所以最好这样做:

          NSString *languageOS = [[NSLocale preferredLanguages] objectAtIndex:0];
          
          if([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
              languageOS = [[languageOS componentsSeparatedByString:@"-"] objectAtIndex:0];
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-08-14
            • 1970-01-01
            • 2023-03-08
            • 1970-01-01
            • 1970-01-01
            • 2020-10-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多