美文网首页iOS Developer
iOS App国际化/本地化的实现过程

iOS App国际化/本地化的实现过程

作者: 小码码 | 来源:发表于2017-03-30 19:53 被阅读554次

    公司原本有一款仅支持中文的app,随着国际化发展,产品经理要求添加相关设置,让app在支持中文的同时,可以支持英文。简书搜索,发现以下两篇文章可以参考:
    文章一: http://www.jianshu.com/p/88c1b65e3ddb
    文章二:http://www.jianshu.com/p/782aaf3bf7da

    文章一写得非常详细,没有任何经验的小白,只要按照作者分享的步骤一步步操作,很快就可以学会。遗憾的是作者还没有补上xib和storyBoard的国际化过程。

    文章二写得相对简单,但是添加了xib和storyBoard的国际化过程。

    本文综合两篇文章的精华和自己的实现过程,基于xcode8.1,简要描述一下实现国际化的核心步骤,方便自己今后查阅。

    1 配置需要国际化的语言

    选中project->Info->Localizations,然后点击"+",添加需要国际化/本地化的语言,如下图(默认需要勾选Use Base Internationalization):

    2 应用名称本地化/国际化

    比如,微信在简体中文环境下App名称显示为“微信”,在英语环境下显示为“weChat”。下面就开始进行应用名称本地化。


    文件名字命名为InfoPlist,且必须是这个名字(因每个人电脑设置差异,此处本人电脑没有显示strings后缀名):


    点击create后,Xcode左侧导航列表就会出现名为InfoPlist.strings的文件,如下图:



    选中InfoPlist.strings,在Xcode的File inspection(Xcode右侧文件检查器)中点击Localize,目的是选择我们需要本地化的语言,如下图:



    弹框:

    选中语言后:

    勾选这需要支持的语言。

    此时,Xcode左侧的InfoPlist.stirings左侧多了一个箭头,点击箭头可以展开,如下图所示:


    语言配置完成了,接下来,我们分别用不同的语言给InfoPlist.strings下的文件设置对应的名字。

    (1)在InfoPlist.strings(english)中加入如下代码:
    // Localizable App Name是App在英语环境环境下显示的名称
    CFBundleDisplayName = "Localizable App Name";
    
    (2)在InfoPlist.strings(Chinese(Simplified))中加入如下代码
    CFBundleDisplayName = "国际化App";
    

    app名称国际化完成,语言设置为中文时,显示中文;语言设置英文时,显示英文

    3 代码中字符串的本地化

    3.1 创建Localizable.strings文件

    字符本地化和App名称本地化过程如出一辙,只是创建的文件名成不一样(连同后缀一起,文件名必须是Localizable.strings),其他步骤完全相同。

    3.2 字符串赋值

    xcode左侧项目列表中出现不同语言下的Localizable.strings文件后,
    在对应的文件中,分别以Key-Value的形式,为代码中每一个需要本地化的字符串赋值。

    //  Localizable.strings(English)
    "content" = "line";
    
    //  Localizable.strings(chinese(Simplified))
    "content" = "行";
    
    // 代码中本地化
    UITableViewCell *cell = [[UITableViewCell alloc] init];
        NSString *str = NSLocalizedString(@"content", nil);
        cell.textLabel.text = str;
    备注:NSLocalizedString(key, comment)是Foundation框架自带的宏,程序运行时根据Key获取对应的字符串,然后赋值给代码中的字符串。
    

    4 图片本地化

    测试表明,如果图片名称为英文,无论中文还是英文环境下,图片都能正常显示,所以暂时没有对图片做任何配置

    5 XIB和storyBoard本地化

    5.1 Localize

    选择要本地化的Storyboard或XIB,在File inspection中点击Localize,然后勾选需要支持的本地化语言。

    5.1 修改对应的Key-Value

    Xcode会自动为你生成对应的Key-Value,对应修改即可:

    经过以上操作,app的名称、代码中的字符串、xib和storyBoard已经国际化完毕了,不同的环境下就会显示不同的语言。

    相关文章

      网友评论

        本文标题:iOS App国际化/本地化的实现过程

        本文链接:https://www.haomeiwen.com/subject/blppottx.html