xcode 3.2.5
(1)本地化字符串:
1、建立本地化字符串文件:
Add--New file--Mac os X--Resoure--选择Strings file:名称命名为:Localizable.strings
2、建立对应的语言化文件:选中Localizable.strings--鼠标右键Get Info--选择General标签下的Make File Localizable--然后再切换到Generat标签下:可以看到列表下有个English,这个就默认的英文化文件。
我们再建立一个简体中文化文件:Add Localizable--弹出的下拉框里面有日语德语和法语的语言化文件,没有中文,可以自己输入zh_CN,选择add添加即可。
3、本地化语言:例如你想在中文下显示“您好”,在英文下显示“Hello”,
打开Localizable.strings下的English:添加这个键值对:"HELLO" = "Hello";//左边是你调用的变量,右边是输出的结果
打开Localizable.strings下的zh_CN:添加这个键值对:"HELLO" = "您好";
4、调用方法:
UILabel *lable = .....
label.text = NSLocalizedString(@"HELLO", nil);(注 :不能给nsstring 类型赋值 )
这样在中文环境下就显示您好,英文下显示为hello。(注:环境配置 在手机或模拟器上 通过设置 来设置语言环境)
如果找不到对应的语言包则显示英文,除了这种情况:如果你调用label.text = NSLocalizedString(@"HELLO", @“hello not found”);//当找不到对应语言包时候,会显示默认你输入的字符串@“hello not found“
5、如果你建立的不是默认的Localizable.strings,比如MyLanguage.strings,调用的时候用NSLocalizedStringFromTable(@"HELLO", @"MyLanguage",nil);
(2)本地化程序名称
1、建立InfoPlist.strings
2、按照上述方法同样添加对应的语言包
3、在你的语言包添加键值对:
English:CFBundleDisplayName = "HelloWorld";
zh_CN:CFBundleDisplayName = "世界你好";
//这样在中文环境下你的程序图标显示“世界你好”,英文下显示“HelloWorld”,如果找不到对应的语言包,则显示你Info.plist下的CFBundleDisplayName对应的名称
xcode 4.2
1 xcode4.2,如果是简体中文,把国际化的文件放到zh-Hans.lproj中就显示正常了。如果放到zh.lproj中就不可以
2 字符串
1)在项目的“supporting files”目录中右键“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,新建的文件名要写成“Localizable.strings” 必须是
2)点击刚才创建的这个文件,选择的菜单中的“view”-》“utilities”-》“file inspect” 右侧会看到一些属性的信息
3)找到Localization这项,现在应该是空的,点“+”进行国际化的添加。因为我只制作了中文和英文,所以我加了“English”和“Chinese”,这里要注意的是“Chinese”要选择“zh_Hans”,这个是简体中文。
4)添加好后就可以看到你项目目录下会生成对应的目录,zh-Hans.lproj和en.lproj 目录里面就是Localizable.strings的文件
5)在项目中可以看到原先创建的Localizable.strings文件的左侧会多出一个三角图标,点击后会扩展出2个文件,一个中文,一个英文的。点击每个文件进行编辑就可以了。
6)文件中的格式是“Key”=“value”;(注意 一定要填上分号) 等号 分号都必须是英文状态。
7)在程序中需要使用国际化字符串的时候,调用NSLocalizedString(@"Key", nil)就可以进行字符串的显示。其中第一个字符串就是文件中的key,第二个字符串可以使用nil代替也可以写一些注释。
3应用程序名称
1)创建一个空文件,取名为InfoPlist.strings 一般程序可以会自动生产 这个文件。
2)对InfoPlist.strings进行。 单击 InfoPlist.strings 。选择 “view”-》“utilities”-》“file inspect” 。 在Localization 选项下 点击+加号
添加chinese (zh-Hans) 类型的 为简体中文 。 english 应该会自动添加上 。 然后在 InfoPlish.strings 下会多两个 english chinese 版本的文件。
3)在这 english chinese 版本的文件。 编辑不同的InfoPlist.strings文件,设置显示名字
CFBundleDisplayName = "名字";
4)编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为选中状态
4 nib 文件 和 图片
首先说明一下 图片是不能直接本地化 的。 先把nib文件本地化后 在把相应的图片本地化 过程类似。
本地化nib文件 。 1) 单击 nib文件 然后选择“view”-》“utilities”-》“file inspect” 右侧会看到一些属性的信息。 或者快捷键 command + option+ 1.
在Localization 选项下 点击+加号 添加chinese (zh-Hans) 类型的 为简体中文 。 english 应该会自动添加上 。
本地化图片。 必须先本地化好nib 文件 后 才能本地化相关的图片。 2) 单击图片 。
然后选择“view”-》“utilities”-》“file inspect” 右侧会看到一些属性的信息。 或者快捷键 command + option+ 1.
在Localization 选项下 点击+加号 添加chinese (zh-Hans) 类型的 为简体中文 。 english 应该会自动添加上 。
2011-10-11 15:59:29.305 trueNameSimpler[6238:b303] zh-Hans
2011-10-11 15:59:29.305 trueNameSimpler[6238:b303] en
2011-10-11 15:59:29.306 trueNameSimpler[6238:b303] de
2011-10-11 15:59:29.306 trueNameSimpler[6238:b303] fr
2011-10-11 15:59:29.306 trueNameSimpler[6238:b303] ja
2011-10-11 15:59:29.307 trueNameSimpler[6238:b303] nl
2011-10-11 15:59:29.307 trueNameSimpler[6238:b303] it
2011-10-11 15:59:29.307 trueNameSimpler[6238:b303] es
2011-10-11 15:59:29.308 trueNameSimpler[6238:b303] pt
2011-10-11 15:59:29.308 trueNameSimpler[6238:b303] pt-PT
2011-10-11 15:59:29.308 trueNameSimpler[6238:b303] da
2011-10-11 15:59:29.309 trueNameSimpler[6238:b303] fi
2011-10-11 15:59:29.309 trueNameSimpler[6238:b303] nb
2011-10-11 15:59:29.310 trueNameSimpler[6238:b303] sv
2011-10-11 15:59:29.310 trueNameSimpler[6238:b303] ko
2011-10-11 15:59:29.310 trueNameSimpler[6238:b303] zh-Hant
2011-10-11 15:59:29.311 trueNameSimpler[6238:b303] ru
2011-10-11 15:59:29.311 trueNameSimpler[6238:b303] pl
2011-10-11 15:59:29.311 trueNameSimpler[6238:b303] tr
2011-10-11 15:59:29.312 trueNameSimpler[6238:b303] uk
2011-10-11 15:59:29.312 trueNameSimpler[6238:b303] ar
2011-10-11 15:59:29.313 trueNameSimpler[6238:b303] hr
2011-10-11 15:59:29.313 trueNameSimpler[6238:b303] cs
2011-10-11 15:59:29.314 trueNameSimpler[6238:b303] el
2011-10-11 15:59:29.314 trueNameSimpler[6238:b303] he
2011-10-11 15:59:29.321 trueNameSimpler[6238:b303] ro
2011-10-11 15:59:29.321 trueNameSimpler[6238:b303] sk
2011-10-11 15:59:29.322 trueNameSimpler[6238:b303] th
2011-10-11 15:59:29.322 trueNameSimpler[6238:b303] id
2011-10-11 15:59:29.323 trueNameSimpler[6238:b303] en-GB
2011-10-11 15:59:29.323 trueNameSimpler[6238:b303] ca
2011-10-11 15:59:29.323 trueNameSimpler[6238:b303] hu
2011-10-11 15:59:29.324 trueNameSimpler[6238:b303] vi
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [languages objectAtIndex:0];
for (int i = 0; i<[languages count];i++) {
NSLog(@"%@", [languages objectAtIndex:i]);
}
if ([currentLanguage isEqualToString:@"zh-Hans"]) {
dataRecorder.languagePack_path = [[NSBundle mainBundle] pathForResource:@"zh-Hans" ofType:@"lproj"];
}else if([currentLanguage isEqualToString:@"en"])
{
dataRecorder.languagePack_path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
}else if([currentLanguage isEqualToString:@"de"])
{
dataRecorder.languagePack_path = [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];
}else if([currentLanguage isEqualToString:@"ru"])
{
dataRecorder.languagePack_path = [[NSBundle mainBundle] pathForResource:@"ru" ofType:@"lproj"];
}else
{
dataRecorder.languagePack_path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
}
dataRecorder.languageBundle = [NSBundle bundleWithPath:dataRecorder.languagePack_path];
//end of init...............
self.window.rootViewController = self.tabbarController;
[self.tabbarController setSelectedIndex:1];
NSString* str1=[dataRecorder.languageBundle localizedStringForKey:@"segmental_preset" value:@"preset" table:nil];
[(UITabBarItem *)[self.tabbarController.tabBar.items objectAtIndex:0] setTitle:str1];