IOS国际化(xcode6)

来源:互联网 发布:转基因 知乎 编辑:程序博客网 时间:2024/06/06 02:27


XCode6中实现国际化

xcode5不同,xcode6初始是没有.string文件的,Show inFinder后可以看到也只有一个Iproj文件,Base.Iproj,里面是默认保存了Main.storyboardLaunchScreen.xib文件,可以作为所有语言、国家环境下的界面文件和启动文件。

 

 

.创建国际化文件

国际化文件主要有界面设计文件,和.string文件,具体步骤如下:

1、建立strings文件,命名为Localization.strings,因为xcode6没有了InfoPlist.string,我们也需要手动去添加一个,这一步添加两个string文件,其中InfoPlist负责应用程序名称的国际化,而Localization负责国际化文本操作。


2
、点击刚刚创建的.strings文件,在右侧栏中我们可以看见Localization栏。 


           


    

 

3、当我们点击Localization下的Localize会出现选择语言的界面,但是系统默认的只有BaseEnglish,如果需要本地化其他的语言,我们首先要添加语言。

 

4、添加语言,点击项目名称,选择project下的info选项,如下图所示点击+号选择要添加的语言。

 

 

5、点击要选择的语言后,弹出如下的窗口,选择需要采用本地化的文件以及文件类型。这里我们第一项选择第一个,第二项选择第二个,这里是实现界面的国际化。

 

 

 

6、这样我们在进行本地化的时候就可以选择我们添加的语言了。

7、本地化后,本来Localization栏变成了下面的复选框形式,默认选中了进行本地化是选择的语言。这里我们再选择一个English,之后系统会重新建立一个属于.string文件。我们这里分别对stroryboardlaunchscreen以及string文件进行国际化,操作都是一样的。

 

 

 

 

8、我们来看一下这项目的文件系统。我们可以看到有三个Iproj文件夹,分别对应英语,简体中文,以及默认语言的国际化文件。然后打开简体中文的Iproj文件夹,我们可以看到有四个文件,其中文件14string文件,这是我们创建string文件后,本地化后的结果。而文件34是在我们添加语言是选择界面的国际化文件,具体产生的文件类型与我们所设置的选项有关。

 


 

 

 

 

.国际化应用程序的显示名称

info.plist文件中,我们可以看到应用程序的名称,初始的就是应用程序的“产品名”。但是我们并没有看到应用程序的显示名称Bundel Display namexcode5有)。所以我们需要去手动添加。

 

但是程序名称真正的key并不是BundleDisplay name,我们在空白处右键,然后选择相应选项,会发现,原来的key变成了CFBundleDisplayName,这才是真正的key,接下来只要在相应语言的.string文件中添加一行,记住因为xcode6已经没有了默认的InfoPlist.string,所以我们在第一步创建文件时以及手动添加了,之后我们在相应语言的string文件中,添加如下的代码就可以了,不同的语言采用不同的名称。

 

 

.国际化图片

国际化图片比较简单,选择两张不同的图片,然后对图片进行国际化,之后将其名称设为相同(image1.jpg),那么在程序中调用该名称的图片时,对于不同的语言环境就可以呈现不同的图片内容了。对于没有本地化的图片在同一个文件夹中是不允许同名的,但是国际化后的图片时可以的。左边是中文环境下的,右边是英文环境下的。

 

 

 

 

 

.国际化文本

因为在之前的设置中,英文和中文模式下有各自的storyboard,所以我们也可以使用不同的布局来显示页面。对于国际化文本,我们需要借助于NSLoaclizedStringNSString *keyNSStiring *comment函数,假设在页面上有一个textView,那么我们可以使用下面的语句来使用国际化消息:

 

textView.text= NSLoaclizedString@”locale”@”内容;

 

//这句代码其实就是给控件的text赋值,但是因为要实现国际化,所以与常规的赋值方式不同,通过NSLoaclizedString函数,我们可以利用设置的key来在不同语言的string文件中,为控件的text设置不同的文件,下面我们在不同语言的Localization.string文件中加入如下代码即可:

 

“locale”=”中文环境”;

 

注意:这样设置完毕后,在相应语言环境下还是不能起到效果,那是因为我们之前创建的string文件名是:InfoPlistLocalization,其中前者我们用来实现应用程序名称的国际化没有问题,在实现内容的国际化的时候,xcode要求string文件名必须为Localizable,否则只会显示key,所以我们需要将本来的Localizztion文件删除掉,然后重新添加Localizable文件。

   

 

 

 

 

 

五.国际化中常用的对象和方法

 

NSLoaclizedStringNSString*keyNSStiring *comment函数使用国际化消息,在不同语言环境的string文件中为key设置不同的值。

 

NSLocale:用于封装特定的国家/区域、语言环境。例如:

NSArray *locale=[NSLcale availableLocaleIdentifiers];//返回系统所支持的全部国家和语言的集合。

NSLocale * curLocale=[NSLocalecurrentLocale];//获取系统的当前Locale,属性localeIdentifier就是当前的语言。

 

NSUserDefaults *defs=[NSUserDefaultsstandardUserDefaults];

NSArray *languages=[defs objectForKey:@”AppleLanguages”];//所有语言

[languages objectAtIndex:0];//第一个就是用户的首选语言

Xcode6下,获取程序名字(app name)的方法为:  

NSString *proName =[[[NSBundle mainBundle]infoDictionary]

objectForKey:@"CFBundleName"];

 

 


0 0
原创粉丝点击