吐槽一下:国际化-我想说学习的这个工程好痛苦。
或许是百度的原因,总是不能找到自己想要东西。找到的内容不是不详细就是时间有点久了。让我这种小白很头痛。
下面记录一下整个过程。
国际化是什么 ?
说白了就是在不同的语言上APP上显示不同的文字,也就是说如果你是美国人系统语言是英语,那么APP就显示英语,如果你是中国人,那么APP就显示汉语。
我们首先来做国际化准备。
为了方便我们下面的演示,只添加一个简体中文就行了。
跳出下面界面
点击finish就行了,至于我们上面选对号的两个文件我们下面说。
我们可以选也可以不选,但是如果全不选刚才添加语言会没有添加上。
好了 ,下面一类一类的说明如何来国际化。
1、APP名称国际化
我们新建的工程让其在中文环境下的名称叫做”中文”,在英文环境下显示”English”
在Supporting Files 文件中新建(其他地方也行,无所谓)
这个文件的命名一定要用InfoPlist。
点击新建的InfoPlish.strings
选择要需要兼容的语言
选择好后
在InfoPlist.strings(Chinese(Simplified))文件中添加
CFBundleDisplayName = “中文”;
在InfoPlist.strings(English)文件中添加
CFBundleDisplayName = “English”;
好了,完成了。
运行一下试试
2.文本信息国际化
按照上面的方法再来添加一个Strings File文件,这次我们叫做Localizable(必须叫这个名)。
按照上面的方法添加上语言。最后为这样
我们我看看应该怎么操作。
我们想在页面上添加一个UILabel 在中文环境下text为“中文”,英文环境下为“英文”。
我们再ViewController.m 的viewDidLoad方法中添加下面代码
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
label.text = NSLocalizedString(@"Title", @"1");
[self.view addSubview:label];
代码中出现了一个新的方法NSLocalizedString,这个方法就是关键,第一个方法是key,第二个方法是默认值。我们需要这个key。这个方法会去Localizable.strings 文件中查找对应的值。
现在这个key 是“Title”所以我们要向Localizable.strings 中添加值。
在Localizable.strings 下的中文文件中添加:
"Title" = "中文";
在英文文件中添加:
"Title" = "英文";
这里的两个key一定要对应,不然找不到。
跑一下试试。
3.xib和故事板文件国际化
我们在国际化过程中会遇到这样的情况,就是我们拖到xib 和故事板中的很多控件,上面的文字都写好了,我们怎么办。
还记得上面我们刚添加语言的时候选择的两个文件吗?我说下面再说。就是这
我们现在来说它。
如果你当初都选上了,现在会是这样的。
我们拖一个UILabel控件到页面上,设置text。我们想再不同的语言环境下显示不同的文字。
点击控件
看到Object ID了吗?我们现在就用它。
在对应的xib或故事版的.strings(语言)文件下添加相应的内容。
在中文文件下添加
"aLA-Na-IKQ.text"="中文";
这样控件在中文下就会显示“中文”。
在英文下添加
"aLA-Na-IKQ.text"="English";
英文环境下会显示“English”
好了跑一下试试。
4.图片的的国际化。
在不同的环境下,可能会显示不同的图片。
好下面我们拖一张图片到工程,然后点击
还是如上面一样,选择好语言。
完成后会是这样。
如果想中文图片不用这张,换一张,那么我们点击图片的中文版右键,选择Show in Finder 将文件夹中对用的图片删除然后将要变的图片添加进去,注意名称要和原来的一样。
好了 运行一下试试。
5声音的国际化
和图片的国际化一样处理,我们来看下是如何取值的就行了。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSBundle *thisBundle = [NSBundle mainBundle];
NSString *path = [thisBundle pathForResource:@"蓝莲花" ofType:@".mp3"];
NSLog(@"path=%@",path);
return YES;
}
会取出对应语言文件中的文件。
path=/Users/darknesswz/Library/Developer/CoreSimulator/Devices/20C6C60B-35BC-4C3E-B7E9-6D931EBA2C0F/data/Containers/Bundle/Application/9E28AFA6-5B32-4C65-AA39-883DD3DFFD08/YY.app/zh-Hans.lproj/蓝莲花.mp3
虽然名字还是“蓝莲花”但是我在文件内容已经替换成许巍的“故乡”了。
好了 ,不容易啊。有用点个咱。
版权声明:本文为博主原创文章,未经博主允许不得转载。