【问题标题】:How to localize specific phrasing on iPhone?如何在 iPhone 上本地化特定的短语?
【发布时间】:2011-12-22 13:47:25
【问题描述】:

我在 iPhone 上有一些短语可以翻译成某些语言的不同逻辑块。 例如,在英语中它将是:

You have 5 camels in the Paris store

在法语中的位置

Vous avez 5 chameaux dans le magasin de Paris

我不太明白如何解决这个问题,考虑到元素的数量、元素的类型(在这个例子中是骆驼)和位置是可变的。我故意在这个例子中选择骆驼,因为你不能简单地在末尾添加一个“S”来标记多重性,如英语或其他单词。如果是我们所说的瓶子:

Vous avez 5 bouteilles dans le magasin de Paris

有人有想法吗?我真的不认为我应该实现一个语法系统来决定是否添加 X、S 或其他任何表示所用语言的多样性的标志......

我应该明确指出,NSLocalizedString 目前在 @"%@ %d %@ %@ %@" 形式的 NSStringWithFormat 中使用,第二个和最后一个 %@ 是从适当的语言数据库动态构建的,第一个和第三个 @ 987654326@ 从本地化字符串文件中获取。此外,为了详细说明@rckoenes 的答案,他的建议已经实施,但正如我解释的那样,这不是我遇到的问题:D

【问题讨论】:

    标签: iphone nslocalizedstring


    【解决方案1】:

    我要做的是在Localizable.strings 文件中创建字符串格式的翻译。

    in 代码执行如下操作:

    NSString *camelStringFormat = nil;
    
    if (numberOFCamels > 1) {
        camelStringFormat = NSLocalizedString(@"OnCamel", @"Translation for one camel");
    } else {
        camelStringFormat = NSLocalizedString(@"MultipleCamels", @"Translation for multiple camels");
    }
    
    NSString *camelString = [NSString stringWithFormat:camelStringFormat, numberOFCamels, city];
    

    Localizable.strings 的英文格式如下:

    "OnCamel" = "You have %d camel in the %@ store"
    "MultipleCamels" = "You have %d camels in the %@ store"
    

    法国的Localizable.strings 看起来像这样:

    "OnCamel" = "Vous avez %d chameau dans le magasin de %@"
    "MultipleCamels" = "Vous avez %d chameaux dans le magasin de %@"
    

    【讨论】:

    • 不,这不起作用。它解决了多重性的标准问题,但正如我在示例中所解释的那样,它不能解决偶尔出现的特定语言形式,例如 1 chameau、2 chameaux。有一个应用程序正确地说 1 chien,2 chiens,错误地说 1 chameau,2 chameaus 是相当丑陋的:D
    • 您想更新您的网站,“正式”应拼写为“以前”:D Goeiemiddag!
    • 但是我需要与每种语言的规则一样多的切换案例。它将最终成为自己的小型 LEX/YACC 分析仪......
    • 你能举一个例子,其中 2、3 或更多会给出动物名称的其他拼写吗? Zo 不只是 1 个 chameau 或 2 个 chameaux,3 个 chameaux。
    • 其实我做了这个例子是为了简化一个更复杂的问题,比如使用形容词(这是我需要的),还有其他规则(比如nose,在法语中,不采用复数形式)形式,无论如何都是NEZ)。此外,虽然这里大多无关紧要,但根据上下文(un aïeul、des aïeux/aïeuls),有些单词可能有多个终止符......这只是法语,所以我希望有一个 API:D
    【解决方案2】:

    其实,经过仔细考虑,将这个问题图标化更简单,我的意思是,使用图形元素而不是文本。这种方式避免了语言中多个语法规则的问题。如果有人知道处理语法本地化的 iPhone API,我仍然对知识感兴趣。除其他外,因为虽然我从未预料到会如此,但 iPhone 4S 的广告显示 视力受损的人使用 iPhone 并且图标不太适合他们 :D

    它还允许我转换一个变得杂乱的屏幕并简化体验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      相关资源
      最近更新 更多