0

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

结果是(就像在通话应用程序中一样)“昨天”以英语显示(因为我无法本地化特定区域,比如 kamba-Kenya),但日期名称被翻译得很好。除了硬编码,还有什么办法吗?

4

1 回答 1

2

我怀疑你必须为 iOS 支持的语言环境硬编码这些数据。完全避免对任何语言环境进行硬编码需要付出一些额外的努力。

iOS 大量使用来自CLDR的区域敏感数据,并且支持您的区域设置,您不必本地化这些字符串,因为这些相对日期名称的翻译(这是 CLDR 术语中的类别,涵盖诸如“今天”、“昨天”之类的词, 和“明天”)计划成为语言环境数据的一部分。一个显示德语与英语数据对比的示例:

<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 开发人员,所以我不能肯定地说。

虽然 CLDR 中提供了数据ka-KE,但由于 iOS 尚不支持此语言环境,因此您必须经过一些步骤才能使其工作;例如,为 iOS 构建ICU,这在此答案中有详细介绍,或者使用此处提供的静态构建。

于 2013-04-19T06:18:37.207 回答