2013-04-18 36 views
0

我正在编写一个应用程序,该应用程序应该支持不在设备上可用(40?)语言列表中的语言,但区域格式为。我想本地化以及“昨天...”的日子名称。问题在于,使用NSLocale取得日期(星期一,...),因此可以在任何设备上工作,但像“昨天”这样的词必须本地化为40种左右的语言。即使XCode允许我为想要的区域进行本地化,该设备也使用标准语言,在我的情况下是丹麦语。为非标准区域设置本地化应用程序

结果(就像在通话应用程序中)“昨天”以英语显示(因为我无法对特定区域进行本地化,比如kamba-Kenya),但日期名称翻译得很好。有没有解决方法,除了硬编码?

回答

2

我怀疑你必须对iOS支持的语言环境中的任何这些数据进行硬编码。需要额外的努力才能避免对任何语言环境进行硬编码。

的iOS巨资从CLDR利用语言环境敏感数据,并支持您的语言环境,你没有,因为翻译这些相对日期名本地化这些字符串(这是在CLDR术语涵盖的词语,如类别“今天“,”昨天“和”明天“)是planned是区域设置数据的一部分。一个example显示此数据为德国相比,英语:

<fields> 
    ... 
    <field type='day'> 
    <displayName>Day</displayName> 
    <relative type='-1'>Yesterday</relative> 
    <relative type='0'>Today</relative> 
    <relative type='1'>Tomorrow</relative> 
    </field> 
    ... 
    </fields> 
    <fields> 
    ... 
    <field type='day'> 
    <displayName>Tag</displayName> 
    <relative type='-2'>Vorgestern</relative> 
    <relative type='-1'>Gestern</relative> 
    <relative type='0'>Heute</relative> 
    <relative type='1'>Morgen</relative> 
    <relative type='2'>Übermorgen</relative> 
    </field> 
    ... 
    </fields> 

而且,我发现NSDateFormatter有两个属性称为setDoesRelativeDateFormattingdoesRelativeDateFormatting其中最有可能给你你需要什么,那些支持的语言环境。我不是iOS开发人员,所以我不能肯定地说。

尽管data for ka-KE在CLDR中可用,但由于此语言环境尚未得到iOS支持,您必须经过努力才能使其工作;例如为iOS构建ICU,详情请参阅this answer或使用静态构建版here

+1

嗨,谢谢,我应该将静态构建添加到ICU常见问题。 –

相关问题