Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Cocoa了解我的iPhone应用程序不是';你不会用英语吗?_Iphone_Ios_Cocoa Touch_Localization - Fatal编程技术网

如何让Cocoa了解我的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

我使用的是一款纯瑞典语的iPhone应用程序,它永远不会被本地化为任何其他语言。应用程序中的所有字符串都是瑞典语,因此我们甚至没有
本地化的.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;