昨天晚上在查资料的时候,发现这个博客,上面的四篇文章不错,我一一转过来先。
来源:http://hi.baidu.com/tangly888/blog/item/9c85cfaaae68e9e71f17a249.html
地址:翻译:tangly
本地格式字符串
你可以用两种方式来显示本地提示信息,通知服务器的本地化文本;要做到这一点,它必须发现当前设备的语言偏好,或者客户端应用程序可以存储器绑定的提示消息字符串并支持将其翻译成本地化语言。供应商再通知负载的aps字典里面指定了loc-key和loc-args属性,当设备接收到通知(应用程序没有运行)
他使用这些APS字典的属性来查找和使用本地化字符串来格式化当前消息,然后再显示给用户
这里介绍第二种
一个IOS应用可以支持国际化资源,如图像,声音,文字的每一种语言的表示,国际通用化这些资源,然后将其分成两部分捆绑再一个子目录中:语言代码和.lproj后缀格式的扩展(如fr.lpor),编程显示本地化的字符串放在一个文件名为Localizable.strings的文件中,在这个文件中的每个条目有一个键和一个本地化的字符串值在这个文件中的每个条目有一个键和一个本地化的字符串值,
字符串值可以有格式说明符来进行替代。当一个应用程序要求一个特定资源,说一个本地化的字符串,它得到的是当前用户选择的语言本地化的资源
例如,首选语言是法语,相应的提升消息字符串值将到应用程序目录的fr.lproj中获取Localizable.strings(IOS通过NSLocalizedString的宏来实现这种要求)
注意:当action-loc-key属性是个字符串,一般都是如此,这个字符串是一个本地化目录Localizable.strings当前选定的语言的关键,ios使用这个键来获得提示消息按钮中右边按钮的标题(“action”按钮)
为了更清楚,我们来举个例子,供应商指定了以下指定了以下字典作为alert属性的值
"alert" : { "loc-key" : "GAME_PLAY_REQUEST_FORMAT", "loc-args" : [ "Jenna", "Frank"] }
当用户收到通知消息,它使用"GAME_PLAY_REQUEST_FORMAT"作为键在Localizable.strings文件的.lproj字典中查找相关的字符串值作为当前语言的值,
假设当前本地中有个Localizable.strings,如下:
"GAME_PLAY_REQUEST_FORMAT" = "%@ and %@ have invited you to play Monopoly";
设备会显示这样一条提示信息:“Jenna and Frank have inveited you to play Monopoly”
除了使用格式符号%@,你可以再字符变量值的位置用“%n$@"代替,n代表了loc-args的下标(从1开始)(这也可以用两个%%符号来表示一个百分号标记(%))
所有如果在localizable.strings条目如下:
"GAME_PLAY_REQUEST_FORMAT" = "%2$@ and %1$@ have invited you to play Monopoly";
设备就回显示这样一条提示信息:”Frank and Jenna have invited you to play monopoly“
对于通知消息负载使用的loc-key和loc-arg属性的完整列子,请看下一个列子“Examples of JSON payloads”,为了学习更多关于ios国际通用化的知识,请看““Build-Time Configuration Details”” in iOS Application Programming Guide,对于国际通用化的一般信息,请看 Internationalization Programming Topics
JSON例子
下面通知有效负载内容的例子说明了表3-1中的属性再实际应用中的使用
带有“acm”属性的键是用户自定的负载内容。这些例子包含了空格和换行来提高可读性,为了更好的执行,供应商应该删除这些空格和换行
例子自己看去
膘叔:骗子啊,最后一段哪有例子。。。