www.pagelift.ru

People Norine s webcam

It means we are moving forward and that things are changing, even if at times change feels intolerably slow and with seemingly obscure results.
Our Sex Chat Room which provides live webcam video chat room and more!

Autoupdatingcurrentlocale

Rated 4.84/5 based on 930 customer reviews
Chat cam sexybest Add to favorites

Online today

I look at text, numbers, date and time, images and other resources, using correct plural forms and more. 更新只能放慢进度) 重写NSDate及其方法描述,更全更详细。 V1.0.1 - 第二次更新 (就是这么快) 更新:日历的demo、农历处理方法 (NSDate Lunar Calendar.h .m) V1.0.0 - 第一次更新 项目中日期处理使用的越来越多,自己写的方法不够用了。开始使用Date Tools(据说是最好用的日期处理库),在研究源码的时候,决定记录下来。我只是重新造轮子。(会陆续更新简单日历的demo、农历处理方法) 1.In practice this currently does not work with date formatters.

When you need a date or number formatter in a view controller it is often a good idea to cache the resulting object once you have created it.

主要有以下类: NSDate -- 表示一个绝对的时间点NSTime Zone -- 时区信息NSLocale -- 本地化信息NSDate Components -- 一个封装了具体年月日、时秒分、周、季度等的类NSCalendar -- 日历类,它提供了大部分的日期计算接口,并且允许您在NSDate和NSDate Components之间转换NSDate Formatter -- 用来在日期和字符串之间转换 (id)current Locale / (id)autoupdating Current Locale 这两个类方法都将返回当前客户端的本地化信息,区别在于:current Locale取得的值会一直保持在cache中,第一次用此方法实例化对象后,即使修改了本地化设定,这个对象也不会改变。而使用autoupdating Current Locale,当每次修改本地化设定,其实例化的对象也会随之改变。 下面的代码演示了区别所在,假设初始本地化信息为en_US,先用这两个函数分别初始化两个对象,然后修改本地化设定语言为台湾繁体中文,再重新打印这两个对象的信息: 有几点需要注意: ① 得到的NSDate Components对象可能会包含负数。例如:当to Date比from Date晚10秒,second部分返回10;当to Date比from Date早10秒,second部分返回-10 ② 当指定unit Flags返回多个部分时,相隔的时间由多个部分共同组成(而不是独立去表示)。例如:上面的例子时间相差5小时1分15秒,如果指定只返回second部分,将得到18075秒;如果指定返回minute和second部分,将得到301分15秒;如果指定返回hour、minute和second,将得到5小时1分15秒。 3.

I’m continually fascinated by how Swift compiler inferencing enables you to omit code details.

The getter method for the date formatter which will show just the month and year could be written as follows: If the formatter does not already exist it will be created and stored in the ivar otherwise the existing object is returned.

更复杂的操作比如在需要本地化的字符串中插入格式化占位符等,我们将在稍后谈到。 另外,字符串文件现在可以保存成 UTF-8 格式了,因为 Xcode 在构建过程中能够将它们转换成所需的 UTF-16 格式。 一般而言,所有你想以某种形式展现在用户眼前的字符串都需要本地化,包括标签和按钮上的文本,或者在运行时通过格式化字符串和数据动态生成的字符串。 在本地化字符串时,根据语法规则为每一种类型的语句定义一个可本地化的字符串是非常重要的。假设你在应用中需要显示「Paul invited you」和「You invited Paul」,那么只本地化格式化字符串「%@ invited %@」看起来是个不错的选择,这样在合适的时候把「you」本地化之后插入进去就可以完成任务。 在英语中这种做法没什么问题,但是请谨记,当把这种小伎俩应用到其他语言中时基本都会以失败而告终。以德语为例,「Paul invited you」译为「Paul hat dich eingeladen」,而「You invited Paul」则译为「Du hast Paul eingeladen」。 正确的做法是定义两个可本地化字符串「%@ invited you」和「You invited %@」,只有这样翻译器才能正确处理其他语言的特殊语法规则。 永远不要将句子分解为几个部分,而要将它们作为一个完整的可本地化字符串。如果一个句子与另一个句子的语法规则并不完全一致,那么即使它们在你的母语中看起来极为相像,也要创建两个可本地化字符串。 使用 宏的时候,第一个参数就是为每个特殊字符串指定的键值(key)。程序员经常使用母语中的单词作为键值,这样乍一看是个便利的方案,但是实际上相当糟糕,会引发非常严重的错误。 在一个字符串文件中,键值需要具有唯一性,因此任何母语中字面上具有唯一性的单词在翻译为其他语言的时候也必须具有唯一性。这一点是无法满足的,因为一个单词翻译为其他语言时经常会有多种意思,需要对应到多种文字表示。 以英文单词「run」为例,作为名词表示「跑步」,作为动词表示「奔跑」,在翻译的时候要加以区别。而且根据上下文的不同,每种具体的译法在文字上可能还会有细微变化。 一个健身应用在不同的地方用到这个单词的不同意思是很正常的,但是如果你使用下面的方法来进行本地化: 无论第二个参数指定了注释内容还是留空,你在字符串文件中都只有一个「run」的条目。而在德语中,「run」作名词时应该译为「Lauf」,作动词时则应该译为「laufen」,或者在特定情况下译为完全不同的形式比如「loslaufen」和「Los geht’s」。 好的键值应该满足两个条件:首先键值必须在每个具体的上下文中保持唯一性,其次如果我们没有翻译特定的那个上下文,那么它们不会被其他情况覆盖到而被翻译。 本文推荐使用如下的命名空间方法: NSString *localized String = NSLocalized String(@"activity-profile.%lu out of %lu completed", nil); self.= [NSString localized String With Format:localized String, completed Runs, total Runs]; ,会在本文后面讲到。 在 OS X 10.9 和 i OS 7 中,本地化字符串的时候可以使用比替换格式化字符串中的占位符更酷的特性:苹果官方想处理不同语言中对于名词复数和不同性别采取的不同变化。 让我们再看一下之前的例子:@”%lu out of %lu runs completed.” 这个翻译在「跑多次」的时候才是对的(译者注:即第二个 %lu 代表的数字大于 1),所以我们不得不定义两个不同的字符串来处理单次和多次的情况: 这种做法在英语中是对的,但是在其他很多语言中会出错。比如希伯来语中名词有三种形式:第一种是单数和十的倍数,第二种是 2,第三种是其他的复数。克罗地亚语中,个位数为 1 的数字有单独的表示方法:「31 od 32 staze završene」,与之相对的是「5 od 8 staza završene」(注意其中「staze」和「staza」的差别)。很多语言针对非整型数也有不同的表达方式。 想全面了解这个问题可以参见基于 Unicode 的语言复数规则。其中涵盖的变化之博大精深令人叹为观止。 为了在 10.9 和 i OS 7 平台上正确处理这个问题,我们需要如下构造可本地化字符串: 表明这是一个处理名词复数的规则,指定了值的类型(在本例中是 lu,即无符号长整数),还定义了针对不同复数形式的不同输出(可以从「zero」、「one」、「few」、「many」和「others」中选择,上例中仅制定了「one」和「other」)。 这是一个非常强大的特性,不但可以处理其他语言中多种复数形式的问题,还可以为不同的数字定制不同的字面表示。 我们还可以更进一步定义递归的规则。为了让上面例子的输出更友好,我们需要覆盖如下几种自定义的字符串用例: Completed runs Total Runs Output ------------------------------------------------------------------ 0 0 No runs completed yet 1 1 One run completed 1 2 One of x runs completed 2 2 x of y runs completed NSURL *url = [NSURL file URLWith Path:@"/Applications/System Preferences.app"]; NSString *name; [url get Resource Value:&name for Key: NSURLLocalized Type Description Key error: NULL]; NSLog(@"localized name: %@", name); // output: System 来从中获得。 本地化之后的文件名仅供显示使用,不能用来访问实际的文件资源,可以参考 Daniel 关于常见字符串模式的文章 以获取更多关于路径的细节。 在不同的语言中,数字和日期被表现为各种形式。幸好苹果官方已经提供了处理这些问题的方法,所以我们只需要使用 NSNumber Formatter or NSDate Formatter 类来显示用户界面中的数字和日期即可。 请记住数字和日期的格式器是可变对象,因此并不线程安全。 数字格式器对象有很多配置选项,但大多数情况下你只要使用一种定义好的数字格式就好。毕竟使用数字格式器的原因就是不必再担心其他语言中特定的数字格式。 对于数字 数字类型 德语结果 阿拉伯语结果 ------------------------------------------------------------------------------------------------------ NSNumber Formatter No Style 2 ٢ NSNumber Formatter Decimal Style 2,5 ٢٫٥ NSNumber Formatter Currency Style 2,50 € ٢٫٥٠٠ د.أ.