第五篇 本地化

背景介绍

        目前,软件一般以标准英文交互开发。然后针对不同国家和地区进行本地化处理。本地化一般包含以下几方面:

        1、语言本地化

        2、货币、时间和数字等描述形式本地化

        这两个方面都涉及到很多内容。所以,在开发之初,就确定了本地化范围:

        1、语言上只支持英文和简体中文

        2、书写习惯上、只支持从左向右

        3、对货币和时间进行本地化支持


storyboard文件本地化

        先在项目属性的Info标签上的Localizations中添加需要支持的语言,然后在storyboard资源对应的Show the File Inspector面板的下边Localization中添加语言。最后编辑对应的strings文件就可以啦。


代码中字符串的本地化

        新建一个strings文件,并用上述方法添加对应的语言。

        扩展String类型,代码如下:

        extension String {

            func localized() ->String{

                return NSLocalizedString(self, tableName:"Localizable", bundle:Bundle.main, value:"?", comment:"")

            }

        }

        备注:tableName的值为新建strings文件的文件名

        使用方式举例:

        1、新建的Localizable.strings的文件

        2、在对应的Localizable.strings(English)中添加一行 "TEST_ITEM" = "test";

        3、在对应的Localizable.strings(Chinese,Simplified)中添加一行 "TEST_ITEM" = "测试";

        4、在代码中使用"TEST_ITEM".localized()就可以了

        备注:strings文件每行元素结尾有分号


数字和货币等本地化

        使用类NumberFormatter和DateFormatter等,用法比较简单。

        举一个NumberFormatter用法的例子,内购相关的本地化信息是在Apple的服务器上填写的,下边代码实现商品价格的本地化(主要是格式,服务上可以为不同地区定制金额):

            extension SKProduct {

                var regularPrice: String {

                    let formatter =NumberFormatter()

                    formatter.numberStyle= .currency

                    formatter.locale=self.priceLocale

                    return formatter.string(from:self.price) ??""

                }

            }

        备注:DateFormatter的本地化只是表达格式的转化,并不会更改时区。



关联文档

        第一篇 开发构想

        第二篇 编辑器控件

        第三篇 导入导出功能

        第四篇 App的内购功能

你可能感兴趣的:(第五篇 本地化)