iOS 读书笔记-国际化

吐槽一下:国际化-我想说学习的这个project好痛苦。
也许是百度的原因,总是不能找到自己想要东西。

找到的内容不是不具体就是时间有点久了。让我这种小白非常头痛。

以下记录一下整个过程。

国际化是什么 ?
说白了就是在不同的语言上APP上显示不同的文字,也就是说假设你是美国人系统语言是英语。那么APP就显示英语。假设你是中国人,那么APP就显示汉语。

我们首先来做国际化准备。


这里写图片描写叙述
为了方便我们以下的演示,仅仅加入一个中文简体即可了。
跳出以下界面
这里写图片描写叙述

点击finish即可了。至于我们上面选对号的两个文件我们以下说。
我们能够选也能够不选,可是假设全不选刚才加入语言会没有加入上。

好了 ,以下一类一类的说明怎样来国际化。

1、APP名称国际化
我们新建的project让其在中文环境下的名称叫做”中文”。在英文环境下显示”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.图片的的国际化。


在不同的环境下,可能会显示不同的图片。
好以下我们拖一张图片到project,然后点击
这里写图片描写叙述

还是如上面一样。选择好语言。


这里写图片描写叙述
完毕后会是这样。这里写图片描写叙述
假设想中文图片不用这张。换一张,那么我们点击图片的中文版右键。选择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

尽管名字还是“蓝莲花”可是我在文件内容已经替换成许巍的“故乡”了。

好了 。不easy啊。

实用点个咱。

原文地址:https://www.cnblogs.com/zsychanpin/p/7325360.html