如何让 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.strings
和MainWindow.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 文件中输出不可本地化的字符串?