0

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

4

2 回答 2

0

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

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

于 2011-12-22T15:12:53.403 回答
0

我要做的是在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 %@"
于 2011-12-22T13:54:05.670 回答