原文网址:http://www.jianshu.com/p/a3a70f0398c4
前言
App的名字设置方式有很多种,如果在App打包上线时不做修改,最终App的名字就是Xcode在建立工程时的名字。好的习惯是工程建立时使用英文(pinyin),那么App也就是“英文”名字了,虽然Xcode也支持直接用中文命名工程(甚至是方法名……),但有时也会因此产生一些不必要的麻烦甚至莫名其妙的bug。
本文主要介绍两种设置App名称的方法,第一种较为简单,第二种涉及简单的版本国际化与本地化(Localization)的问题。笔者对于两个方法的认知也是较为基础的,如有不妥之处,还望斧正。
1.Bundle display name
先看此方法的具体设置步骤:
- 1.建立工程如下,如果不设置App名,默认的App名就是工程名了。
![](http://upload-images.jianshu.io/upload_images/1468630-75d919797be1c6ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1468630-20793e19cc90e296.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 2.点击工程-TARGETS-Info,添加“Bundle display name”,string值填写要设置的App名称。
![](http://upload-images.jianshu.io/upload_images/1468630-109936af6c9ce4f4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1468630-b937f8a6bad24e7a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 3.再次编译,效果如下,这个方法就是这么简单了。
具体也没太多好说的,检索App名称设置时,大部分答案也是这个,因为比较简单。
这里提一下Bundle name和Bundle display name:
2.InfoPlist.strings->CFBundleDisplayName
这种方法较为繁琐,但是可以支持多语言版本名称的设置,即Localization,也先看具体步骤:
- 1.新建一个Strings File,命名为InfoPlist.strings(命名必须固定,感谢nyh1006同学纠正)。
![](http://upload-images.jianshu.io/upload_images/1468630-97643c5067620a1b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1468630-be1655557758628e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1468630-59f1920b569b5bd8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 2.点击工程-PROJECT-Info-Localizations,添加简体中文支持,如果想支持繁体,也可继续添加,其他语言亦然。
![](http://upload-images.jianshu.io/upload_images/1468630-0a2fa2224fc82228.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1468630-7cd29d4db1a2389f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 3.点击之前创建的InfoPlist.strings - 点击右边的“Localizion”- 添加简体中文
![](http://upload-images.jianshu.io/upload_images/1468630-d4b52eb0f01a6ad1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
可以选择支持英文
![](http://upload-images.jianshu.io/upload_images/1468630-a885a69c4cf737ca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1468630-648db801aa4ca7e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 4.分别设置中英文名字
"CFBundleDisplayName" = "中文名字";
"CFBundleDisplayName" = "EnglishName";
名字字符串自己填写就好,这里只是示范
![](http://upload-images.jianshu.io/upload_images/1468630-f04e58b97650342d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1468630-c7459dadf41b5bbd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 5.编译工程
分别切换模拟器的设置中的语言至中英文模式,分别查看appiocn下面的名字的变化:
3.关于默认语言的设置:Localization native development region
Xcode建立工程时,默认语言环境是英文,所以在调用一些系统空间时(例如相机相册),其控制按键的标题都是英文显示的状态,快速的设置方法就是设置Localization native development region的值,具体步骤可以参考此文:Localization native development region 更改语言无效 中的第一段内容。
4. Localizations版本国际化
这个就是为了让APP支持多国语言环境,最好的Demo应该是环信的官方Demo,这里只是介绍一下简单的用法:
- 1.同添加InfoPlist.strings的做法相同,添加一个Localizable.strings文件(名字固定)
-
2.对应中英文(其他语言自行添加),分别添加下列语句:
"alertTitle" = "标题"; "alertMessage" = "信息"; "alertOk" = "确认"; "alertOther" = "其他"; "alertTitle" = "title"; "alertMessage" = "message"; "alertOk" = "confirm"; "alertOther" = "other";
关于上述的key和value,只是示范,可自行定义,调用这些key-value需要利用NSLocalizedString(<#key#>, <#comment#>)
系统宏,例如:NSLocalizedString(@"alertTitle", @"这是一句注解,根据情况写")
,第一个参数即在strings文件中自定义的key,根据不同的语言环境,系统会自动检测这个key对应的value(中文还是英文),第二个参数是注释,为了便于理解,可以为nil。
实际用例:
- (void)createAlertViewWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancel:(NSString *)cancel andOther:(NSString *)other
{
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:delegate cancelButtonTitle:cancel otherButtonTitles:other, nil];
[alert show];
}
//调用
[self createAlertViewWithTitle:NSLocalizedString(@"alertTitle", @"这是一句注解,根据情况写") message:NSLocalizedString(@"alertMessage", @"") delegate:nil cancel:NSLocalizedString(@"alertOk", nil) andOther:NSLocalizedString(@"alertOther", nil)];
分别设置系统的语言环境至中英文模式,效果如下:
![](http://upload-images.jianshu.io/upload_images/1468630-d9f838726761701a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1468630-476744743ffe89b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
上面的写法看起来比习惯上直接写string去设置标题要麻烦许多,但是常用的标题可以进行二次宏定义管理,那样不仅使用方便,还便于统一管理。
看一下环信Demo中的示范:
![](http://upload-images.jianshu.io/upload_images/1468630-1b6e905c3d91a528.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
本文只是简单介绍相关的用法,至于详细的说明,可以参考文章最后列出的参考文章,里面有不少不错的详细讲义。
参考文章:
1.Localization native development region 更改语言无效
2.在iOS中如何设置默认语言
3.Xcode 6 关于 iOS App 国际化问题
4.iOS学习之iOS程序名称及内容国际化(本地化)
5.如何修改已完成的工程的app名?
6.如何修改iOS APP的项目名称
7.iOS修改app名称
8.ios xcode如何修改应用的名称
9.请问如何修改app显示的名字?
10.Bundle Name and Bundle Display Name
11.iOS应用国际化教程(2014版)
·转载请声明出处·
原文链接:http://www.jianshu.com/p/a3a70f0398c4
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。