如何让Cocoa了解我的iPhone应用程序不是';你不会用英语吗?
我使用的是一款纯瑞典语的iPhone应用程序,它永远不会被本地化为任何其他语言。应用程序中的所有字符串都是瑞典语,因此我们甚至没有如何让Cocoa了解我的iPhone应用程序不是';你不会用英语吗?,iphone,ios,cocoa-touch,localization,Iphone,Ios,Cocoa Touch,Localization,我使用的是一款纯瑞典语的iPhone应用程序,它永远不会被本地化为任何其他语言。应用程序中的所有字符串都是瑞典语,因此我们甚至没有本地化的.strings 问题是Cocoa生成的字符串(如Done和Edit)是英文的。我曾尝试将Info.plist中的Localization native development region设置为Swedish,但没有任何改变。告诉Cocoa我的应用程序是瑞典语的应该不会比这更难,但显然是这样 我也试过很多其他的东西,但运气不好。那么,我需要做什么才能使Coc
本地化的.strings
问题是Cocoa生成的字符串(如Done和Edit)是英文的。我曾尝试将Info.plist
中的Localization native development region
设置为Swedish
,但没有任何改变。告诉Cocoa我的应用程序是瑞典语的应该不会比这更难,但显然是这样
我也试过很多其他的东西,但运气不好。那么,我需要做什么才能使Cocoa将其字符串本地化为瑞典语?来自Cbundle文档: KCFBundleDevelopmentRegion键的开发语言的名称 包裹。当Cbundle查找资源时,回退是查找 在lproj中,其名称由kCFBundleDevelopmentRegionKey提供 在Info.plist文件中。因此,您必须确保 包含一个lproj,其确切名称包含每个 本地化资源,否则Cbundle无法保证回退 这一机制将起作用。在iOS 2.0及更高版本中提供。声明于 CFBundle.h 我会说:你应该启用本地化,准备瑞典语.lproj,或许删除英语
顺便说一句,完成和编辑应自动调整为当前活动语言。不是吗???您可能必须使用从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生成的字符串(如Done和Edit)是英文的,因为您的iPhone语言设置设置为英文(在设置->常规->国际->语言中)。如果您将语言设置设置为瑞典语,您将看到瑞典语文本
默认情况下,iPhone就是这样工作的,如果你想更改某些按钮的文本以强制使用瑞典语,你必须创建一个按钮出口并手动更改文本。例如,像这样的uibarbuttonite(默认文本已完成(英语)):
我希望这可以帮助您……。。如果你读了这个解决方案,我想你会对如何处理这个问题有一个相当不错的想法problem@ksn这个问题是关于语言优先级的。这不是我要问的。我仍然试着回答,但没有成功。我甚至没有
English.lproj
目录。@ksn我有一个en.lproj
文件夹,但删除它并没有什么不同。它不是,手机设置为瑞典语,但“完成”和“编辑”仍然是英语。你是说添加一个空的Swedish.lproj
文件夹就可以了吗?我复制了en.lproj
并将其重命名为sv.lproj
。我甚至在构建阶段尝试删除en.lproj
,但没有成功。有什么建议吗?我从项目中删除了en.lproj
,现在构建失败了,因为它找不到InfoPlist.strings
和MainWindow.xib
。为什么不在sv.lproj
中查找?要添加瑞典本地化,应该使用Xcode创建所需的本地化。重命名副本不起作用。假设您使用Xcode4,请选择该文件并确保utilities视图(右侧的侧栏)可见,然后查找名为Localization的部分,您可以在其中添加其他部分并删除英语。这样,xcode就知道添加和删除了什么,这样构建就不会失败。很抱歉,这个答案是错误的。如果你想要一个纯瑞典语(或任何其他语言)的应用程序,下面是如何做到的:回答是正确的。在说它不正确之前,你可能想尝试一下。“这是iPhone默认的工作方式,如果你想更改某些按钮的文本以强制将其转换为瑞典语,你必须创建一个按钮的出口并手动更改文本。”这是不正确的。如果你尝试我链接的回复,你就会知道这个回复是错误的。我从来没有说过你的回复是错误的。但是,正如您所说,默认情况下,语言环境设置为英语,并且在创建对象后手动更改文本也可以做到这一点。尽管如此,我还是会编辑我的回复,添加一个指向YourWay的链接,在我看来,这有点难以实现,但到目前为止,更具可扩展性。
UIBarButtonItem *doneButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneContact)] autorelease];
doneButton.title =@"Whatever";
self.navigationItem.rightBarButtonItem = doneButton;