• iOS本地化


    最近开发了一个项目要实现本地化功能,从网上找了一些资料,参考了一些别人的方法。

    现将本地化的全过程做一下记录,以更经后能快速的使用。开发工具Xcode4.6
    一、我们的工程文件中都是包含一个InfoPlist.strings文件,如果没有可自己新建一个,新建的方法如下:
    1、选择New File创建一个新的文件,然后按照下图步骤。
    IOS <wbr>本地化
    选中后点击Next,输入文件名称如下图
    IOS <wbr>本地化
    这样就创建好了本地化文件,如果程序中有好的InfoPlist.strings本地化文件,可直接省去上面的步骤,直接进入下面的步骤。
    2、选中创建好的strings文件,打开属性栏,如图
    IOS <wbr>本地化
    选择Localizable后将出现语言选择框,现在只能选择英文。
    IOS <wbr>本地化
    点击Localize后,就可以看到Localization中有一个English本地语言了。

    3、经过上面的操作我们就建好了本地化文件,现在让我们开始添加本地化语言。选择文件根目录,打到info选项,如图
    IOS <wbr>本地化
    选择添加项后将出现语言选择框,选择Chinese(zh-Hant)简体中文。
    IOS <wbr>本地化
    如果程序中用到了XIB可创建对应版本的XIB文件,如果不需要,可不用选择。后面会对XIB进行讲解。如下图
    IOS <wbr>本地化

    添加其它语言重复上面第3步既可。
     
    二、本地化程序名称。
    1、展开InfoPlish.strings或你自己创建的本地化文件,将看到已添加的语言版本
    IOS <wbr>本地化

    (1)、在InfoPlish.strings(english)文件中加入;

    CFBundleDisplayName ="localizable";

    其中“ localizable”为英文应用程序名称.

    (2)、同理在InfoPlish.strings(chinese)文件中加入:

    CFBundleDisplayName ="本地化";

    其中“本地化”为中文名称,

    注意:CFBundleDisplayName加不加双引号都行

    (3)、编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为BOOL,并将其value设置为YES即可
    2.运行结果如图:
    IOS <wbr>本地化         IOS <wbr>本地化

    三、可视内容本地化
    1.本地化XIB,如果本地化语言选择了XIB将会出现对应的XIB文件。如图
    IOS <wbr>本地化

    你可以创建不同风格的布局,建议不要这样做,后期维护比较难。
     
    IOS <wbr>本地化     IOS <wbr>本地化
     
     
    2.给内容控件进行本地化赋值

    (1)、在InfoPlish.strings(english)文件中加入本地化内容;

    CFBundleDisplayName ="localizable"; //这个是应用名称

     

    "label"="qingfeng zhang";

     

    "buttonTitle" = "this is a button";

    "buttonBg" = "buttonBg_01";

     

    "imageName" = "1004.jpg"; //这个是将图片名称进行本地化

    (2)、同理在InfoPlish.strings(chinese)文件中加入对应的本地化内容: 

    CFBundleDisplayName ="本地化"; //这个是应用名称

     

    "label"="张清锋";

     

    "buttonTitle" = "这是个按扭";

    "buttonBg" = "buttonBg_02";

     

    "imageName" = "1005.jpg"; //这个是将图片名称进行本地化

     

    (3)、读取本地化字符串有两种方法分别为:

    NSLocalizedString(<#key#>, <#comment#>)

    NSLocalizedStringFromTable(<#key#>, <#comment#>)

    如果你的strings文件名称不是“Localizable.strings”而是自定义的话,如infoPlist.strings,那么你就得使用NSLocalizedStringFromTable(<#key#>, <#comment#>)来读取本地化字符串:取值方法如下:

    NSLocalizedString(@"label",  nil);

    NSLocalizedStringFromTable(@"label", @"InfoPlist", nil);

    (4)、给控件进行赋值,这里用的取值方法是

    NSLocalizedStringFromTable(<#key#>, <#comment#>):

     

        self.label.text = NSLocalizedStringFromTable(@"label", @"InfoPlist", nil);

        

        [self.button setTitle:NSLocalizedStringFromTable(@"buttonTitle",@"InfoPlist", nil)

                     forState:UIControlStateNormal];

        

        [self.button setBackgroundImage:[UIImage imageNamed:NSLocalizedStringFromTable(@"buttonBg", @"InfoPlist", nil)]

                               forState:UIControlStateNormal];

    运行结果如下图

    IOS <wbr>本地化    IOS <wbr>本地化

    3、本地化图片,通过上面的方法可以看出,我们是通过本地化图片的名称进行取值,而实现显示不同的图片。下面讲解下图片的本地化操作。

    (1)、选中你要本地化的图片,打开属性栏,如下图:

    IOS <wbr>本地化

    (2)、选择Localizable后将出现语言选择框,现在只能选择英文。
    IOS <wbr>本地化
    (3)、点击Localize后,就可以看到Localization中有一个English和Chinese本地语言了,但只选中了English。
    IOS <wbr>本地化

    (4)、这时你可以打开您的工程文件,里面有两个目录en.lproj文件和zh-Hans.lproj文件。在en.lproj你可以看到你刚才本地化的图片和其他本地化的文件,在zh-Hans.lproj文件中则没有这张图片。

    IOS <wbr>本地化

    IOS <wbr>本地化
    (5)、现在将对应的图片添加到zh-Hans.lproj文件中,图片名称需一样才行。

    IOS <wbr>本地化

    (6)、回到Xcode,选中你刚才本地化的图片,打开属性栏。选中本地化的语言就行了

    IOS <wbr>本地化

    (7)、我们再看下刚才的图片会发现里面有两张图片。
    IOS <wbr>本地化

    (8)、在程序中取值按正常方法取值就行了。

     self.imageVIew.image = [UIImage imageNamed:@"1004.jpg"];

    (9)、运行结果可下图

    IOS <wbr>本地化     IOS <wbr>本地化

    4.本地化其他文件

    本地化其他文件和本地化图片第二种方法类似,先在Localization中添加语言,然后把对应版本拷贝到en.lproj和zh-Hans.lproj文件夹中,最后引用就行了。

    洛阳亲友如相问,就说我在敲代码
  • 相关阅读:
    scrapy框架持久化存储 以及响应参数
    scrapy框架
    12306 模拟登陆
    Python第三库---requests库详解
    批处理-----4.for循环中的变量
    批处理-----3. for循环详解
    批处理-----2.常用特殊符号
    批处理-----1.内部命令简介
    Python第三方库---requests库
    Python 自带标准库
  • 原文地址:https://www.cnblogs.com/Ice-snowPride/p/4980932.html
Copyright © 2020-2023  润新知