Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为非标准地区本地化应用程序_Ios_Localization_Internationalization_Locale_Icu - Fatal编程技术网

Ios 为非标准地区本地化应用程序

Ios 为非标准地区本地化应用程序,ios,localization,internationalization,locale,icu,Ios,Localization,Internationalization,Locale,Icu,我正在编写一个应用程序,它应该支持一种不在设备上可用语言列表(40?)中的语言,但区域格式是。我想本地化天的名称以及“昨天…”。问题是,天(星期一,…)是用NSLocale获取的,因此可以在任何设备上工作,但像“昨天”这样的词必须本地化为40种左右的语言。尽管XCode允许我对想要的区域进行本地化,但设备使用标准语言,在我的例子中是丹麦语 结果是(就像在Call应用程序中一样)“昨天”出现在英语中(因为我不能本地化特定的地区,比如说肯尼亚坎巴),但日期名称的翻译很好。除了硬编码之外,还有其他解决

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


结果是(就像在Call应用程序中一样)“昨天”出现在英语中(因为我不能本地化特定的地区,比如说肯尼亚坎巴),但日期名称的翻译很好。除了硬编码之外,还有其他解决方法吗?

我怀疑您必须为iOS支持的地区硬编码这些数据。要想避免对任何地区进行硬编码,需要付出额外的努力

iOS大量使用来自的区域设置敏感数据,并且支持您的区域设置,您不必本地化这些字符串,因为这些相对日期名称(这是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>

...
白天
昨天
今天
明天
...
...
标签
旋涡器
手势
今日
摩根
Übermorgen
...
此外,我还发现,
NSDateFormatter
有两个属性,它们很可能为您提供所需的支持区域设置。我不是iOS开发者,所以我不能肯定地说

虽然在CLDR中可以使用,但是由于iOS还不支持此区域设置,因此您必须经历各种困难才能使其正常工作;e、 g.针对iOS的构建,在静态构建中有详细介绍,或使用了可用的静态构建