ios 国际化(项目名和内容)

http://zhangmingwei.iteye.com/blog/1782613

第一步:在Supporting Files 中新建一个文件Localizable.strings .方法:在Supporting Files 上右键选择New File 选择Resource ----》Strings File 。

第二步:现在有InfoPlist.strings 和Localizable.strings 两个文件。这两个文件前一个用于改变项目在手机总图片的名字,后面一个用于改变里面的内容。现在点击项目名字---》PROJECT---》Info  进入这里下面有个Localizations 默认有个Chinese 点击下面的‘+’号,选择你要国际化的语言一般是English .注意这时会让你选择几个文件,你只要选择InfoPlist.strings 和Localizable.strings 就行了。其他的都取消选择。

第三步:这时再回来看看项目中的那两个文件点击发现分别包含了两个子文件了。后面加个(English)(Chinese)。只需要在里面写内容就行了。

第四步:举例说明:在InfoPlist.strings(English)中写CFBundleDisplayName="China";  在Info.Plist.strings (Chinese)中写CFBundleDisplayName="中国";这时候如果你的手机语言环境是中文,你的项目名会显示,中国。如果你手机语言环境是英文,你的项目明会显示China。

第五步:在Localizable.strings(English)中写 “name”="name"; 在Localizable.strings (Chinese)中写“name"=
"名称";这时候,在程序中用的时候比如:UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 100)];
    label.text=NSLocalizedString(@"name", nil);
    [self.view addSubview:label];

如果手机语言环境是中文,则label上的文字就是名称两个字,如果手机语言环境是英文则显示是name.

到此就结束了。下面截几个图:截图在附件中,添加这里没有填上。还有个测试项目,

 

 

国际化

http://my.oschina.net/u/1049180/blog/215695

http://stackoverflow.com/questions/30808192/allowsbackgroundlocationupdates-in-cllocationmanager-in-ios9

首先,我们使用字符串,必须用NSLocalizedString(key,comment),这样我们在不同的Localizable.strings对key指定不同的值,系统会根据当前系统语言,去不同的lproj找不同的字符串。用个图显示吧:

 

我们应用只支持中文,英文,所以只建了zh-Hans.lproj和en.lproj,然后在Localizable.strings指定了不同的值。举例如下:

 这样程序就能根据系统语言,去选择“登录”还是“Log In”。

 

但是如果每次加了一个本地化字符串,就得手动去Localizable.strings添加对应的key,那就太麻烦了,幸好苹果提供了快捷生成本地化key的命令。下面以en.lproj的生成为例:

首先,我们进入程序工程所在的目录,用命令建立en.lproj 

  mkdir en.lproj

然后我们遍历所有的子目录文件,去生成Localizable.strings,命令如下:

  find ./ -name *.m -print0 | xargs -0 genstrings -o en.lproj

基本都说genstrings -o en.lproj *.m就可以生成Localizable.strings,但是这个命令只能生成当前目录的,并没有遍历子目录,所以基本没用

这样系统就会把子目录用到NSLocalizedString函数的key值都写到文件里。

 

需要注意的是,NSLocalizedString(key,comment),用这个函数时,key不能是宏定义或者一些动态字符串,否则用上面的命令会报错。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值