ios8+swift app多语言——国际化和本土化

iOS初学者可以关注我的iOS开发相关的视频课程。

开发一款国际化的iOS App,则必须考虑支持多国家语言,如何实现呢?

第一、国际化——多国家语言;第二、本土化——数据、时间、货币格式等。

DEMO环境:mac osx 10.10+/ios8+/xcode6.1+

一、新建工程MultiLanguage

ios8+swift app多语言——国际化和本土化_第1张图片

二、Main.storyboard设计界面

ios8+swift app多语言——国际化和本土化_第2张图片

如上图所示,默认语言是中文。为了国际化设计,要求不同国家的用户所见界面是适合当地文化(本土化),图片表示用户所在国家的不同,商品名称描述、数据格式、金额币种、日期时间。

三、增加多语言。(中、英文)

1、点击工程名-->右侧选中project名称-->点击左下角localizations下面的“+”,选择语言chinese(简体中文)

ios8+swift app多语言——国际化和本土化_第3张图片

2.弹窗口中勾选main.storyboard和luanchscreen,该操作的目的是实现界面设计时(非程序运行)相对固定的描述性文字的多语言,如“商品:”、“销量:”,等等。

ios8+swift app多语言——国际化和本土化_第4张图片

3.点击finish完成后,点击main.storyboard,Xcode右侧的属性监视窗口即可看到增加了chinese语言,同时我们把english语言也勾选。对launchscreen.xib执行同样操作。

ios8+swift app多语言——国际化和本土化_第5张图片ios8+swift app多语言——国际化和本土化_第6张图片

4.接下来,用main.storyboard界面举例,launchscreen.xib是类似操作。

三、设置界面标签描述文字的多语言

1.点击main.storyboard下的main.strings(中文),ios8+swift app多语言——国际化和本土化_第7张图片

右侧文件的内容是xcode自动生成的,“=”等号左侧的是对应界面元素的ID,右侧是对应的文本值,我们只需要修改=右侧内容,这里我们只需要设计标签文本的中文,“商品”、“销量”、“利润”、“时间”,其对应的右侧值稍后在代码中动态修改后显示。为了简单起见,可删除该部分内容,完成后如下图所示:

ios8+swift app多语言——国际化和本土化_第8张图片

2.点击main.storyboard下的main.strings(english),设置标签文字的英文,并删除多余部分,如下图所示:

ios8+swift app多语言——国际化和本土化_第9张图片

3.标签文字多语言设置完成,我们看看界面效果,点击main.storyboard-->右侧点击-->再点击如下图所示:

ios8+swift app多语言——国际化和本土化_第10张图片


然后点击视图右下加的语言,切换成english,在界面设计时(程序未运行)即可看见多语言效果:

ios8+swift app多语言——国际化和本土化_第11张图片


四、设计标签右侧对应值的多语言,这个在程序运行时动态设置。

1.界面上的值标签与viewcontroller代码关联,即对象抽象定义

ios8+swift app多语言——国际化和本土化_第12张图片

2.向工程中添加新文件——多语言字符串文件,并命名文件为Localizable.strings

ios8+swift app多语言——国际化和本土化_第13张图片

ios8+swift app多语言——国际化和本土化_第14张图片

3.设置Localizable.strings文件支持多语言中、英文,点击该文件,在xcode右侧属性监视窗口,点击localize...按钮

ios8+swift app多语言——国际化和本土化_第15张图片

同时勾选english和chinese,

ios8+swift app多语言——国际化和本土化_第16张图片

完成后,工程目录中的localizable.strings文件下面包含中英文的文件

ios8+swift app多语言——国际化和本土化_第17张图片

4.分别在localizable.strings(chinese)和localizable.strings(english)文件中设置商品值标签“苹果手机”的多语言文本:key=value

ios8+swift app多语言——国际化和本土化_第18张图片

ios8+swift app多语言——国际化和本土化_第19张图片

5.在viewcontroller代码文件中,视图加载完时设置商品名称,使用

NSLocalizedString方法

ios8+swift app多语言——国际化和本土化_第20张图片


6.设置数据,货币,日期时间格式本土化,不同地区数字格式不同,币种不同,日期时间格式不一样。我们分别自定义数字格式器、货币格式器和日期时间格式器:

    // 数字格式

   var numberFormatter:NSNumberFormatter{

       let formatter=NSNumberFormatter()

        formatter.numberStyle=NSNumberFormatterStyle.DecimalStyle

       return formatter

    }

    // 货币格式

   var currencyFormatter:NSNumberFormatter{

       let formatter=NSNumberFormatter()

        formatter.numberStyle=NSNumberFormatterStyle.CurrencyStyle

       return formatter

    }

    

    // 日期时间格式

   var dateFormatter:NSDateFormatter{

       let formatter=NSDateFormatter()

        formatter.dateStyle=NSDateFormatterStyle.MediumStyle

        formatter.timeStyle=NSDateFormatterStyle.MediumStyle

       return formatter

    }

7.在viewcontroller代码文件中

viewDidLoad()方法体内给相应的标签赋值,代码如下:

    overridefunc viewDidLoad() {

       super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        

        // 标签初始化值

       //商品

       lblProduct.text=NSLocalizedString("PRODUCT_NAME",comment:"商品名称");

       //销量

        lblSales.text=numberFormatter.stringFromNumber(99999);

       //利润

        lblProfit.text=currencyFormatter.stringFromNumber(2347898)

       //日期

        lblDateTime.text=dateFormatter.stringFromDate(NSDate())

    }

8.设置 模拟器语言为英文,运行后界面显示如下:

ios8+swift app多语言——国际化和本土化_第21张图片

设置模拟器语言为中文,运行后界面显示如下:

ios8+swift app多语言——国际化和本土化_第22张图片


五、设置图片适应多语言。

不同语言时,图片需相应显示不同国家的国旗。比如,中文时,显示中国国旗;英文时显示美国国旗。

点击工程目录中的图片flag.png文件,再在右侧属性监视窗口点击localiza...同时勾选english/chinese,完成后,如下图所示:

ios8+swift app多语言——国际化和本土化_第23张图片

在磁盘finder中打开flag图片所在的目录,打开en.lproj目录和zh-Hans.lproj目录,可见同时存在相同的flag图片,

ios8+swift app多语言——国际化和本土化_第24张图片

此时用相同命名的美国国旗flag替换en.lproj目录中的同名图片文件(已存在的中国国旗flag)。

六、设置xcode调试环境或切换iOS模拟器语言(中文、英文),运行app后可见效果。

ios8+swift app多语言——国际化和本土化_第25张图片



*大家可关注我的CSDN学院的iOS开发视频课程。






你可能感兴趣的:(iOS开发)