概述
国际化,Internationalization(I18N)
本地化,localization(L10N)
国际化和本地化描述的是同一个概念,是指应用程序运行时,可根据客户端请求来自的国家/地区、语言的不同而显示不同的界面
国际化原理
要实现国际化(本地化),就需要提供多份资源,app通过特殊的文件夹名来识别要获取的那一份资源,这些特殊的文件夹被称为本地化文件夹,本地化文件夹有固定的命名方式,有下面两种命名格式:
- language-country.lproj
- language.lproj
简体中文环境,本地化文件夹为:
- zh-Hans-CN.lproj
- zh-Hans.lproj
美式英文环境,本地化文件夹为:
- en-us.lproj
- en.lproj
繁体中文环境,本地化文件夹为:
- zh-Hant.lproj
Base.lproj,不属于特定的国家/地区、语言环境,是默认本地化文件夹,当app找不到对应的language-country.lproj或language.lproj,最后会去找Base.lproj,如果当前国家/地区为*,则在国际化时,搜索的本地化文件夹顺序为:zh-Hans-CN.lproj->zh-Hans.lproj->Base.lproj
NSLocale
NSLocale封装特定的国家/区域、语言环境
NSArray *locales = [NSLocale availableLocaleIdentifiers];
NSLog(@"support locale: %ld", locales.count);
NSLocale *currentLocale = [NSLocale currentLocale];
NSLog(@"current locale: %@", currentLocale.localeIdentifier);
output:
support locale: 731
current locale: en_US