内容简介:开发中设计多语言内容的部分总是很让人头疼。 本文也是在摸索中找到了几种可以获取当前系统语言的方法。注意区分app 内的当前语言,和系统的当前语言;
开发中设计多语言内容的部分总是很让人头疼。 本文也是在摸索中找到了几种可以获取当前系统语言的方法。
注意区分app 内的当前语言,和系统的当前语言
Swift
let userLanguage = UserDefaults.standard.object(forKey: "AppleLanguages") //返回的也是数组 let appLanguages = Locale.preferredLanguages // 返回一个数组 let deviceLanguage = Locale.current.languageCode let bundleLanguages = Bundle.main.preferredLocalizations // 返回一个数组 let availableLanguages = Localize.availableLanguages() // 必须引入第三方库 import Localize_Swift, 获取当前 app 所有支持的语言列表 let currentLanguage = Localize.currentLanguage() // 引入第三方库,表示当前 App 使用的语言 复制代码
Objective C
NSString *userLanguage = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] NSString *appLanguages = [NSLocale preferredLanguages]; NSString *deviceLanguage = [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]; NSString *bundleLanguages = [[NSBundle mainBundle] preferredLocalizations] 复制代码
表格说明
userLanguage | appLanguages | deviceLanguage | bundleLanguages | availableLanguages | |
---|---|---|---|---|---|
返回类型 | ["zh-Hans-CN", “en"] | ["zh-Hans-CN", “en"] | “zh" | ["zh-Hans"] | [“zh-Hans","zh-Hant”,”en"] |
说明 | 从 userDefault 中获取到的,返回的是一个数组. 表示在当前 app 下使用过的 |
用户在手机系统设置里设置的语言。可以通过 设置 -> 一般 -> 语言与地区
看到,不是程序正在显示的语言。 |
似乎是当前使用语言的大类。不带地区码 | 带语言的二级分类,但不带地区码 | (第三方库支持) 当前 App 设置的支持切换的语言数组 |
;
说明
-
由此可以看到这几个获取系统语言的方法准确性(或者说颗粒度)是不一样的,前两种
userLanguage
和appLanguages
获取的会将国家地区的代码加上,而deviceLanguage
只是显示是中文(大类),并不能区分是繁体中文还是简体中文,而最后这个方法带二级分类的语言类型 -
表示用户在当前 app 下使用过的语言。因此返回的是一个数组。这个值返回的会带上
zh-Hans-CN
地区和分类zh-Hant-HK
- 我查阅了一些资料,然而并未找到具体的这几个分类的文档说明。后续有找到的话再继续补充吧。
设置当前默认的语言
import Localize_Swift let bundleLanguage = Bundle.main.preferredLocalizations[0] let availableLanguages = Localize.availableLanguages() var language = "en" // 如果找不到当前匹配的语言,默认使用英语 for availableLanguage in availableLanguages { if let _ = availableLanguage.range(of: bundleLanguage) { language = appLanguage break } } 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Go语言:获取图片文件的类型
- go语言 从命令行获取参数解析
- Go语言-执行系统命令以及获取命令行参数
- 使用C语言获取DNS nameserver并进行域名解析
- C语言获取当前时间(Linux环境下,VC6.0,Codeblock环境下通用)
- ADO.NET获取数据(DataSet)同时获取表的架构实例
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。