Xcode4.5中app字符串&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. }  


Xcode4.5中app字符串&xib&图片资源的本地化_第1张图片


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

Xcode4.5中app字符串&xib&图片资源的本地化_第2张图片


Xcode4.5中app字符串&xib&图片资源的本地化_第3张图片

Xcode4.5中app字符串&xib&图片资源的本地化_第4张图片





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

Xcode4.5中app字符串&xib&图片资源的本地化_第5张图片


2.xib资源的本地化

Xcode4.5中app字符串&xib&图片资源的本地化_第6张图片


Xcode4.5中app字符串&xib&图片资源的本地化_第7张图片


3图片资源的本地化

Xcode4.5中app字符串&xib&图片资源的本地化_第8张图片

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

Xcode4.5中app字符串&xib&图片资源的本地化_第9张图片

你可能感兴趣的:(Xcode4.5中app字符串&xib&图片资源的本地化)