【问题标题】:supporting internationalization for NSString's支持 NSString 的国际化
【发布时间】:2012-06-18 19:01:06
【问题描述】:

我有一堆下面的代码:

[NSString stringWithFormat:@"%@ and %@", subject.title, secondsubject.title];

 [NSString stringWithFormat:@"%@ and %d others", subject.title, [newsfeeditem count] - 1];

以及应用程序中的更多内容。基本上我正在构建一个像 facebook 这样的新闻提要风格,它有字符串常量。废话喜欢废话。我应该在哪里/如何做这些字符串常量,以便轻松实现国际化?我应该有一个文件只用于存储字符串常量吗?

【问题讨论】:

标签: iphone objective-c ios ipad internationalization


【解决方案1】:

请参阅资源编程指南的String Resources 部分。这个特定问题的关键部分是“格式化字符串资源”。

你会有类似的东西:

[NSString stringWithFormat:NSLocalizedString(@"%1$@ and %2$@", @"two nouns combined by 'and'"),
                           subject.title, secondsubject.title];

%1$@ 是第一个替换的位置。这使您可以重新排列文本。然后你会有字符串资源文件,如:

英语:

/* two nouns combined by 'and' */
"%1$@ and %2$@" = "%1$@ and %2$@";

西班牙语:

/* two nouns combined by 'and' */
"%1$@ and %2$@" = "%1$@ y %2$@";

您需要对这些类型的组合深思熟虑。首先,您永远无法以可翻译的方式从部分句子中构建句子。您几乎总是需要一口气翻译整个消息。我的意思是,你不能有一个写着@"I'm going to delete" 的字符串和另一个写着@"%@ and %@" 的字符串并将它们粘合在一起。语言之间的词序变化太大。

同样,由于各种协议规则,复杂的事物列表可能会导致各种令人头疼的问题。一些语言有特殊的复数规则、性别协议和类似问题。尽可能让您的信息保持简单、简短和静态。

但上述工具对于解决您正在讨论的问题非常有用。有关详细信息,请参阅文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2013-10-14
    • 2012-06-06
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多