# Localization **Repository Path**: MelissaHan/Localization ## Basic Information - **Project Name**: Localization - **Description**: 国际化设置 - **Primary Language**: Objective-C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-01-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Localization 国际化设置 #### 1. APP名称国际化 1. 创建InfoPlist.string 2. 选择国际化语言 Target -> 选择Project->Info -> Locations 3. InfoPlist.string 选择Localization的语言 4. 分别设置APP名称:CFBundleDisplayName = "国际化"; #### 2. 图片文字国际化 1. 步骤同上:创建Localizable.string 2. 设置不同语言的文字:"main title" = "main title"; 3. 用NSLocalizedString(@"main title", nil)调用 #### 3. 强制默认使用某种语言 * 注意: 如果系统为无对应string文件的语言时,删除App重装后会跟随设定的开发语言显示;直接修改系统语言时会跟随上一次有对应string文件时的语言显示。 如果想要默认语言为英文,只有中文状态下显示中文。 ``` // 可以每次读取的时候采用MJ的格式,自定义一个localizedStringForKey // appdelegate.m 中 NSArray *languages = [NSLocale preferredLanguages]; NSString *language = [languages objectAtIndex:0]; if ([language hasPrefix:@"zh"]) {//检测开头匹配,是否为中文 [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];//App语言设置为中文 }else{//其他语言 [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];//App语言设置为英文 //宏 #define Localized(key)  [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Localizable"] ``` #### 4. launchScreen.storyboard国际化 创建多个launchScreen,通过InfoPlist.strings设置不同语言的开屏。(用storyboard的方式失败了,不知道为什么) #### 5. storyboard 直接给storyboard创建localize.根据控件的Object ID,设置控件的text title normalTitle placeholder 等 #### 6. bundle内创建国际化文件 直接在项目中创建后,打开finder中文件,拖入到bundle内. 获取国际化资源时,通过当前语言获取到对应的.lproj文件,(参考MJRefresh)。