如何让 Cocoa 明白我的 iPhone 应用程序不是英文的?

Posted

技术标签:

【中文标题】如何让 Cocoa 明白我的 iPhone 应用程序不是英文的?【英文标题】:How to make Cocoa understand that my iPhone app isn't in English? 【发布时间】:2011-08-24 12:08:58 【问题描述】:

我正在开发一个纯瑞典语的 iPhone 应用程序,它永远不会被本地化为任何其他语言。应用程序中的所有字符串都是瑞典语,所以我们甚至没有Localizable.strings

问题是Cocoa生成的字符串(如Done和Edit)都是英文的。我尝试将Info.plist 中的Localization native development region 设置为Swedish,但这并没有改变。告诉 Cocoa 我的应用程序是瑞典语应该不会比这更难,但显然它是。

我还尝试了很多其他的东西,但都没有运气。那么我需要做什么才能让 Cocoa 将其字符串本地化为瑞典语?

【问题讨论】:

***.com/questions/4072349/… ... @ksn 这个问题是关于语言优先级的。这不是我要问的。我仍然尝试了答案,但没有奏效。我什至没有English.lproj 目录。 @ksn 我有一个en.lproj 文件夹,但删除它并没有什么不同。 【参考方案1】:

Cocoa 生成的字符串(例如 Done 和 Edit)是英文的,因为您的 iPhone 语言设置设置为英文(在 Settings -> General -> International -> Language 中)。如果您将语言设置设置为瑞典语,您应该会看到瑞典语文本。

这就是 iPhone 默认的工作方式,如果您想更改某些按钮的文本以强制它们使用瑞典语,您将必须创建它们的出口并手动更改文本。例如像这样的 UIBarButtonItem(带有默认文本 Done(英文)):

UIBarButtonItem *doneButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneContact)] autorelease];
doneButton.title =@"Whatever";
self.navigationItem.rightBarButtonItem = doneButton;

希望对你有帮助……

【讨论】:

对不起,这个答案不正确。如果您想要一个纯瑞典语(或任何其他语言)的应用程序,请按以下步骤操作:***.com/a/7204674/310121 响应正确。在说它不正确之前,您可能想尝试一下。 "这是 iPhone 默认的工作方式,如果您想更改某些按钮的文本以强制它们使用瑞典语,您将必须创建它们的出口并手动更改文本。"是不正确的。如果您尝试我链接的回复,您就会知道此回复不正确。 我从未说过您的回复不正确。但是,正如您所说,默认情况下,语言环境设置为英语,并且在创建对象后手动更改文本也可以解决问题。不过,我将编辑我的回复,以包含指向您的方式的链接,在我看来,这有点难以实现,但到目前为止,更具可扩展性。【参考方案2】:

来自 CFBundle 文档:

kCFBundleDevelopmentRegionKey 开发语言的名称 捆绑。当 CFBundle 查找资源时,回退是查找 在名称由 kCFBundleDevelopmentRegionKey 给出的 lproj 中 在 Info.plist 文件中。因此,您必须确保捆绑 包含一个具有该确切名称的 lproj,其中包含每个 本地化资源,否则 CFBundle 无法保证回退 机制将起作用。在 ios 2.0 及更高版本中可用。宣布于 CFBundle.h.

我会说:您应该启用本地化,准备 swedish.lproj 并删除英语?

顺便说一句,完成和编辑将自动调整为当前活动的语言。不是吗??

【讨论】:

不是,电话设置为瑞典语,但完成和编辑仍然是英语。你是说添加一个空的Swedish.lproj 文件夹就可以解决问题吗? 我复制了en.lproj并将其重命名为sv.lproj。我什至尝试在构建阶段删除en.lproj,但没有运气。有什么建议吗? 我从项目中删除了en.lproj,现在构建失败了,因为它没有找到InfoPlist.stringsMainWindow.xib。为什么在sv.lproj 中看不到? 要添加瑞典语本地化,您应该使用 Xcode 创建所需的本地化。重命名副本将不起作用。假设您使用 Xcode4,选择文件并确保实用程序视图(右侧的侧栏)可见,然后查找名为 Localization 的部分,您可以在其中添加其他内容并删除英语。这样,xcode 就知道添加和删除了什么,因此构建不会失败。【参考方案3】:

您可能必须使用从 XIB 中提取所有字符串并对其进行翻译(至少这是一个一次性过程),然后重新更新 XIB。以下命令行可以帮助您做到这一点。

ibtool --generate-strings-file out.strings yourWindow.xib

// Update the out.strings with your language translation

ibtool --strings-file out.strings yourWindow.xib --write yourWindow.xib

【讨论】:

以上是关于如何让 Cocoa 明白我的 iPhone 应用程序不是英文的?的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa/iPhone:如何防止凳子在 xib 文件中输出不可本地化的字符串?

如何让 Cocoa 应用程序从终端运行一个动作,然后返回结果

Cocoa Touch:iPad 表格网格布局

如何在 Cocoa 应用程序中切换视图?

如何让我的应用在 iPhone 上后台运行?

iPhone 上的 Facebook 登录出现错误