iOS 本地化

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];

   


你可能感兴趣的:(ios,xcode,File,语言,Path,localization)