如何在iPhone上本地化特定的措辞?

时间:2011-12-22 13:47:26

标签: iphone nslocalizedstring

我在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中使用,其中第二个和最后一个%@是从适当的语言数据库动态构建的,第一个是以及第三个%@来自本地化字符串文件。另外,要详细说明@ rckoenes的答案,他所建议的内容已经实施,但正如我所解释的那样,这不是我遇到的问题:D

2 个答案:

答案 0 :(得分:0)

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

代码中的内容如下:

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];

englis的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 :(得分:0)

实际上,在仔细考虑后,将这个问题图标化更简单,我的意思是,使用图形元素而不是文本。这样可以避免语言中出现多个语法规则的问题。如果有人知道iPhone API处理语法本地化,我仍然在智力上感兴趣。除此之外,因为虽然我从未如此期望,但iPhone 4S的广告显示视障人士使用iPhone并且图标不太适合他们:D

它还允许我转换混乱的屏幕并简化体验。