【问题标题】:How to localize country names in phrases?如何在短语中本地化国家名称?
【发布时间】:2019-05-21 12:09:39
【问题描述】:

我想本地化诸如“{国家名称}中的地点”之类的短语,其中国家名称是动态获取的(例如,通过-[NSLocale localizedStringForCountryCode:])。

问题在于,对于某些国家/地区名称,必须在前面加上冠词:

  • 美国的地点 (en)

有时是复数形式,男性或女性,是否大写:

  • Lugares en los estados unidos (es)
  • Lugares en las 马尔代夫 (es)

根据短语中国家名称的原因(主格、与格等),文章甚至可能不得不被拒绝:

  • Orte in der Schweiz (de)
  • Wir fahren in die Schweiz(de 代表“我们去瑞士”)

或者我们甚至可以使用不同的介词:

  • Orte auf den Malediven(de,使用“auf”而不是“in”,因为马尔代夫是岛屿)

是否有一个库或一组好的规则(例如基于正则表达式)可以用来完成此任务?

虽然我主要在寻找 iOS 解决方案,但我愿意从其他平台移植任何解决方案。

【问题讨论】:

    标签: cocoa cocoa-touch localization nslocalizedstring nslocale


    【解决方案1】:

    解决这个问题的最佳方法是完全避免它:本地化整个短语,并使用 ISO 国家/地区代码作为关键字。 原因是规则很复杂,不一定有规律,而且因语言而异。以俄语为例,国家名称本身(而不仅仅是介词)必须根据单词在句子中出现的原因进行修改——我假设其他各种斯拉夫语言也是如此。

    【讨论】:

    • 数百个国家 × 本地化数量 = 数千个可本地化的字符串。这种方法无法扩展。
    • 我从来没有声称它会。我只是说你在玩一场失败的游戏。任何对此的“库”解决方案——如果它想要正确的话——都必须包含一大堆字典,随着时间的推移,你会通过错误报告找到所有例外情况??‍♂️
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多