Xcode4.5中本地化问题

忽然发现在xcode4。5里不会添加本地化字符串了,Localication的加号点开必须选择资源文件(首次添加是空的,无功而返),随后搜索到好文(http://blog.csdn.net/freshforiphone/article/details/8239865),转而告知:

名称本地化

参考

[1]http://developer.apple.com/library/ios/#documentation/MacOSX/Conceptual/BPInternational/Articles/LocalizingPathnames.html#//apple_ref/doc/uid/20002141-BBCFJBFB

app如果会在不同的国家发行,那么就需要为app做本地化或者叫国际化,根据device的语言类型来选择对应的资源,显示正确的图标,文字等。另外,网上搜了下本地化,发现由于Xcode升级的关系,很多操作都不一样了,所以本文是以最新的xcode4.5为例。

1.app显示名称的本地化

1)选中工程,在Info中的Localizations按+号,为InfoPlist.strings和storyboard创建本地化。



2)

在InfoPlist.strings(English)添加 "CFBundleDisplayName" = "TestLocalization";

在InfoPlist.strings(Chinese)添加 "CFBundleDisplayName" = "本地化测试";


3)运行后结果如下

device为英文环境时



device为中文环境时



说明:

参考[1]中苹果文档中Info.plist的 LSHasLocalizedDisplayName要设置为YES,但是测试发现不设置也可以。


字符串&xib&图片资源的本地化

参考

[1]http://www.raywenderlich.com/2876/how-to-localize-an-iphone-app-tutorial

app的本地化,除了app名称的本地化,还包括程序中使用文字的本地化、xib资源的本地化(按钮等)、图片资源的本地化,本文分别介绍这三者的本地化

1.使用文字的本地化

1)在工程文件中右击,”new file“,选择string File,创建 Localizable.strings 文件。

1.1)如果用NSLocalizedString 那么一定要使用Localizable.strings  文件名,

因为#define NSLocalizedString(key, comment) \

    [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

其中table传的值为nil,就是默认table,而系统默认table就是Localizable.strings 此文件。

如果修改为其他文件名,比如xxx.strings,那么应该使用  NSLocalizedStringFromTable(@"KEY",@"xxx",nil);来本地化。xxx没有后缀.strings

1.2)如果需要使用其他目录的本地化文件,有可能你不想根据手机的语言来判断使用哪种本地化,而希望自己用开关控制。

此时,可以使用NSLocalizedStringFromTableInBundle  ,这时你需要根据目标目录创建NSBundle,另外bundle其实就是一个目录。

 #define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \

    [bundle localizedStringForKey:(key) value:@"" table:(tbl)]

[cpp]  view plain copy
  1. NSString* result = key;  
  2. static NSBundle* bundle = nil;  
  3. static dispatch_once_t onceToken;  
  4. dispatch_once(&onceToken, ^  
  5. {  
  6.         bundle = [[NSBundle bundleWithPath:bundlePath(<span style="color:#ff0000;">path只是个目录</span>)] retain];  
  7. });  
  8. if ([key length]>0&&bundle)  
  9. {  
  10.     result =  NSLocalizedStringFromTableInBundle(key,xxx(<span style="color:#ff0000;">没有后缀.strings</span>), bundle, nil);  
  11. }  



2)为 Localizable.strings 创建中文的本地化








3)在Localizable.strings(chinese)中修改TITLE 和KEY字段,修改设备的语言为”中文“,运行后结果如下



2.xib资源的本地化




3图片资源的本地化


然后在en.lproj和zh-Hans.lproj使用同名但不同内容的图片即可。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值