• 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啊。

    实用点个咱。

  • 相关阅读:
    8天学通MongoDB——第一天 基础入门
    Struts2属性驱动与模型驱动
    前端传递参数,由于控制器层类实现了struts2的ModelDriven而产生的一个异常
    struts2之ModelDriven的用法
    JavaScript Array reverse 方法:颠倒数组中元素的顺序
    ibatis传入list对象
    ibatis中使用List作为传入参数的使用方法及 CDATA使用
    javascript 正则表达式判断只能是中文、英文或者中文加英文
    zclip结合easyui实现复制datagrid每行特定单元格数据的功能
    【Nodejs】使用put方式向后端查询数据并在页面显示
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7325360.html
Copyright © 2020-2023  润新知