现在的位置: 首页 > 综合 > 正文

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

2013年08月25日 ⁄ 综合 ⁄ 共 1230字 ⁄ 字号 评论关闭

参考

[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)]

	NSString* result = key;
	static NSBundle* bundle = nil;
	static dispatch_once_t onceToken;
	dispatch_once(&onceToken, ^
	{
			bundle = [[NSBundle bundleWithPath:bundlePath(path只是个目录)] retain];
	});
	if ([key length]>0&&bundle)
	{
		result =  NSLocalizedStringFromTableInBundle(key,xxx(没有后缀.strings), bundle, nil);
	}

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

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

2.xib资源的本地化




3图片资源的本地化


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


抱歉!评论已关闭.