我在网上搜索,但我找不到答案,也许这个问题太简单了。
在我开发的app中,如何显示那些默认项目,如后面的BarButtonItem,ImagePicker按钮,或者在UITextView中,弹出菜单有复制,粘贴,剪切,替换和全部选择,我不能弄清楚如何用其他语言显示这些项目,例如中文,日文等。
感谢。
答案 0 :(得分:3)
* -Info.plist中的属性“本地化本机开发区域”负责另一件事。
CFBundleDevelopmentRegion(String - iOS,Mac OS X)指定捆绑包的本机区域。此键包含一个字符串值,该值通常对应于编写该包的人的本地语言。如果无法为用户的首选区域或语言找到资源,则此值指定的语言将用作默认语言。 (Source)
解决方案:
在我的应用程序中,我有自定义本地化(不是* .lproj的标准机制)。并且说我可以使用某些语言手动处理本地化的系统,我设置CFBundleLocalizations(在Xcode“Localizations”中)。它是数组属性,您可以在其中指定处理语言。在Xcode中可能存在将Localizations属性设置为'array'类型solution here。
的问题CFBundleLocalizations(Array - iOS,Mac OS X)标识应用程序手动处理的本地化。如果您的可执行文件是非捆绑的或不使用现有的捆绑软件本地化机制,则可以包含此密钥以指定应用程序确实处理的本地化。 此属性的数组中的每个条目都是一个字符串,用于标识支持的本地化的语言名称或ISO语言指示符。 (Source)
UIKit是一个框架并具有本地化资源(例如uitextfield的弹出菜单)。在Bundle设置(* - Info.plist)中,您可以设置CFBundleAllowMixedLocalizations(设置为YES)以检索这些资源。
CFBundleAllowMixedLocalizations(Boolean - iOS,Mac OS X)指定捆绑包是否支持从框架中检索本地化字符串。此密钥主要由基础工具使用,该工具链接到其他系统框架并希望从这些框架中检索本地化资源。 (Source)
答案 1 :(得分:2)
阅读国际化技术:
http://developer.apple.com/internationalization/
特别是,你所谈论的事情被称为“本地化”。
我刚刚通过谷歌发现了这个教程:
http://www.switchonthecode.com/tutorials/a-simple-localization-example-for-the-iphone
N.B。 “国际化”有时被写成“I18N”,因为它是如此长的一句话! (奇怪的缩写词,但这是因为这个词是'我'后跟18个字母,然后是'N')
答案 2 :(得分:1)
我写了一个关于这个的教程,我介绍了如何做到这一点(基于我用六种语言本地化的应用程序):
Developing localized iPhone applications
http://www.pushplay.net/2009/08/developing-localized-iphone-applications/
我还描述了我正在处理的一些语言/习语问题,这些问题可能有用。存在如何实现多种语言的技术问题,但是当直接翻译出上下文时,还存在使事情变得荒谬的通信问题......
编辑:为了回应你的评论,我仍然会以相同的方式做到这一点(本地化所有内容)。如果没有,请将其设置为本地化,但只能翻译您想要的特定字符串(并将其余部分保留为英语)。如果你真的想自己做所有事情,你可以这样做:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [languages objectAtIndex:0];
然后你可以比较currentLanguage变量并在if / then / else if / etc代码块中显示正确的文本。我可能会建议在代码块的末尾加上“英文显示”,以防返回的语言与您期望的语言不同。
编辑:我只是重新阅读您的要求,并意识到您的意思是本地化系统功能。这不是你可以控制的东西 - 当用户进入他们的设置并更改他们的语言时,所有这些系统界面(如“剪切/复制/粘贴”)将自动进行本地化。只要他们在他们的设置中设置了正确的语言,它就应该自动运行。