原文链接:http://www.cocoachina.com/appstore/20160310/15632.html

前言

App的名字设置方式有很多种,如果在App打包上线时不做修改,最终App的名字就是Xcode在建立工程时的名字。好的习惯是工程建立时使用英文(pinyin),那么App也就是“英文”名字了,虽然Xcode也支持直接用中文命名工程(甚至是方法名……),但有时也会因此产生一些不必要的麻烦甚至莫名其妙的bug。
本文主要介绍两种设置App名称的方法,第一种较为简单,第二种涉及简单的版本国际化与本地化(Localization)的问题。笔者对于两个方法的认知也是较为基础的,如有不妥之处,还望斧正。

1.Bundle display name

先看此方法的具体设置步骤:

  • 建立工程如下,如果不设置App名,默认的App名就是工程名了。

  • 点击工程-TARGETS-Info,添加“Bundle display name”,string值填写要设置的App名称。

  • 再次编译,效果如下,这个方法就是这么简单了。

具体也没太多好说的,检索App名称设置时,大部分答案也是这个,因为比较简单。

这里提一下Bundle name和Bundle display name:

Bundle name - is folder name, where your app (including executable file and all resources) will be stored (Cool Program.app)。建议不要修改bundle name
Bundle display name - is what will be shown on iPhone screen,即当你安装该app到iPhone上显示的name。
注意:Bundle Display name must correspond to Bundle name,即bundle display name和bundle name不能相差太远。例如bundle name设置为 TheApplication, 而 bundle display name设置为“金****瓶*****梅”,则apple会拒绝你的app。

2.InfoPlist.strings->CFBundleDisplayName

这种方法较为繁琐,但是可以支持多语言版本名称的设置,即Localization,也先看具体步骤:

  • 新建一个Strings File,命名应该不一定非得是InfoPlist.strings,应该是沿用习惯。

  • 点击工程-PROJECT-Info-Localizations,添加简体中文支持,如果想支持繁体,也可继续添加,其他语言亦然。

  • 点击之前创建的InfoPlist.strings - 点击右边的“Localizion”- 添加简体中文

  可以选择支持英文

  • 分别设置中英文名字

    "CFBundleDisplayName" = "中文名字";

    "CFBundleDisplayName" = "EnglishName";

    名字字符串自己填写就好,这里只是示范

  • 编译工程

可能需要在plist文件中添加Application has localized display name键,设置为YES

分别切换模拟器的设置中的语言至中英文模式,分别查看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)];

分别设置系统的语言环境至中英文模式,效果如下:

上面的写法看起来比习惯上直接写string去设置标题要麻烦许多,但是常用的标题可以进行二次宏定义管理,那样不仅使用方便,还便于统一管理。
看一下环信Demo中的示范:

本文只是简单介绍相关的用法,至于详细的说明,可以参考文章最后列出的参考文章,里面有不少不错的详细讲义。

参考文章:

iOS: 设置App的国际化和本地化的更多相关文章

  1. iOS设置app应用程序文件共享

    1.iOSapp应用程序文件共享 当我们用itnues连接到设备时,在应用程序栏目下面,文件共享下,点击 对应的程序,即可以在程序右边栏目里面看到应用程序共享的数据, 此时,我们可以通过右下角的 添加 ...

  2. iOS 设置app语言中文,比如 copy中文,拍照按钮cancel 中文

    iOS 设置app语言中文,比如 copy中文,拍照按钮cancel 中文 一:如何设置项目中文环境 targets--->Locatization native development reg ...

  3. 【转】iOS 设置APP的名称(浅述APP版本国际化与本地化)

    原文网址:http://www.jianshu.com/p/a3a70f0398c4 前言 App的名字设置方式有很多种,如果在App打包上线时不做修改,最终App的名字就是Xcode在建立工程时的名 ...

  4. IOS软件国际化(本地化Localizable)

    IOS软件国际化(本地化Localizable) iPhone是支持语言最多的手机,它支持各国语言及中国少数名族如蒙古等语言,这也是好多少数名族都用苹果的原因.在这一点上我们自主品牌还是要多学习学习. ...

  5. ios安装app提示【未受信任的企业级开发者】。在设置中信任此开发者

     最近在测试app,ios安装app后点击提示如下图: 解决方法: 1 点击 [设置] >[通用] >[设备管理]   2 点击企业级应用 > 信任该开发者 > 信任.设置之后 ...

  6. iOS Storyboard创建APP 的国际化操作

    Storyboard创建APP 的国际化操作 最近在看<X-code江湖录>这本书,看到了APP 国际化这点,刚刚也简单的实践了一下.现在和大家分享分享! 写的这个简单的Demo全都是用 ...

  7. iOS开发(1):设置APP的图标与启动图 | iOS图标的尺寸 | LaunchScreen的使用

    每个APP都应该有自己的图标跟启动图. 这里介绍怎么设置iOS的APP的图标跟启动图. (1)图标 小程的xcode是10.0版本,设置图标的入口如下: 点击入口后,进到设置页面,如下: 可以看到有很 ...

  8. iOS 国际化 (国际化文字内容不改变,app名字国际化,一键切换语言)

    首先我们要分三个步骤讲解怎么一步步实现app名字国际化.内容国际化.一键切换国际化的: 一.app设置内容或者可以说是app名字或者可以说Info.Plist中的东西国际化  app名字国际化  1. ...

  9. Flask 教程 第十三章:国际化和本地化

    本文翻译自The Flask Mega-Tutorial Part XIII: I18n and L10n 这是Flask Mega-Tutorial系列的第十三部分,我将告诉你如何扩展Microbl ...

随机推荐

  1. leetcode 之Single Number(14)

    这题并不难,但需要注意细节. ListNode* addTwo(ListNode *l1, ListNode *l2) { ListNode dummy(-); ; ListNode *prev = ...

  2. pdf2htmlEX安装和配置

    1.下载 安装的依赖: sudo yum install cmake gcc gnu-getopt java-1.8.0-openjdk libpng-devel fontforge-devel ca ...

  3. django使用用户名或手机号码登录

    django有自己的认证系统,会自动根据用户名和密码进行验证.如果需要使用用户名或手机登录的话,需要重写django的认证后台,并且设置到配置文件中. 重写django的认证后台 class User ...

  4. mac pro 安装mysql并且配置my.cnf(添加默认字符集utf8,数据存放路径,修改已经建好的表的默认字符集等)、mac mysql my.cnf路径

    如果你是还没有下载安装文件,请到官网下载http://dev.mysql.com/downloads/mysql/ 下载好mysql的mac版本的安装文件后解压后将文件放到目录 /usr/local/ ...

  5. xshell 如何连接服务器

    https://jingyan.baidu.com/article/ab69b270b0ca3d2ca7189fdc.html 点击“新建”之后就会出现下面这样一个界面,“名称”根据自己的需求填写,“ ...

  6. 辨析各类web服务器:Apache/Tomcat/Jboss/Nginx/等,还有Nodejs

    先说一下各类服务器能干啥,特点是啥,然后在区分他们的类别. (1)Apache: Apache是指Apache软件基金会的Apache HTTP Server, 它能够接收http请求,然后返回各类资 ...

  7. <<持续交付>>终点的精彩

    1,向敏捷转变的过程是一个很容易出乱子的过程, 尤其对项目的领导力来说.在实施敏捷的过程中,会突然释放出一些有用的信息,将原来隐蔽起来的真相推倒聚光灯下. 2,假如执行者忽略了技术实践(比如测试驱动开 ...

  8. 洛谷P2713 罗马游戏

    题目传送门 分析: 好吧,其实没什么好分析的,左偏树裸题. Code: #include<cstdio> #include<cstring> #include<cstdl ...

  9. 如何去除windows下文本的^M

    使用vi编辑,输入命令: :%s/^M/\r/g 用来把^M换成回车 注意的是^M要使用CTRL-V CTRL-M生成,而不是直接键入^M

  10. python基础之单例模式

    单例模式: 什么是单例模式? 基于某种方法实例化多次得到实例是同一个 实现方法: ip = '1.1.1.1' port = 3306 # 假装来自配置文件 #方法一:定义类方法进行判断 class ...