Tag: 国际化

如何使用Xcode 5本地化我的应用程序?

这是关于如何使用Xcode 4本地化我的应用程序的后续问题(和答案) ? 题。 如何使用Xcode 5.x本地化我的应用程序?

检测国际键盘的出现和消失

当出现键盘时,是否有办法检测到它是一个国际键盘(在普通键盘的顶部带有一个额外的色带以显示国际字符),并获取它的帧大小? 我需要使用该信息向上移动(如果需要)键盘上方的视图。

iPhone应用程序本地化通过为不同市场发布单独的应用

我有一个应用程序在瑞典的应用程序商店,我打算适应其他一些市场。 在这种情况下,本地化最重要的部分是改变应用程序在不同市场(国家)如何工作的一些方面,所以这不是主要关于语言适应。 可能,我不会使用正常的本地化内置机制。 相反,我考虑为不同的市场构build单独的版本,并将它们作为App Store上的独立应用程序(具有相同的图标和类似名称)发布,并且每个应用程序仅在一个国家/地区提供。 我的主要观点是: 1)由于App Store支持的语言less于iOS,因此苹果将App Store语言定义为英国英语(如丹麦,挪威)的国家有几个。 那么,除非我为这些国家发布完全独立的应用程序,否则我无法用自己的语言创造一个良好的销售业绩。 2)我认为在本例中,通过在源代码中插入编译器指令,为不同的市场制定不同的Xcode目标,实现本地化将会更快。 (这可能是由于我的应用程序的第一个版本不太聪明的架构造成的,不过,这是目前的状态。) 现在,我的问题: 除了显而易见的会有更多的pipe理之外,是否有针对不同市场发布单独应用程序的缺点? (例如,不太有利于在App Store上取得好的排名,被拒绝的风险等等)

如何确定区域设置的date格式是月/日还是日/月?

在我的iPhone应用程序中,我希望能够确定用户的语言环境的date格式是月/日(即1月5日的1/5)还是日/月(即1月5日的5/1)。 我有一个自定义的NSDateFormatter不使用NSDateFormatterShortStyle (11/23/37)等基本格式之一。 在一个理想的世界中,我想使用NSDateFormatterShortStyle,但不显示年份(只有月份和date#)。 什么是完成这个最好的方法?

将iOS应用翻译为不支持的/非标准的语言

我正在扩展现有的iPhone应用程序(4.x以上),支持更多的语言:爱沙尼亚语,拉脱维亚语和立陶宛语。 在我的iPhone和模拟器中,不支持这些语言,我很确定没有特殊的固件可以在这些领域使用。 我怎样才能最好地使一个支持他们的应用程序? 我想出了两个我不太喜欢的解决scheme。 它们都不允许我在应用程序中使用多种语言,因为用户无法从Settings.app列表中select捆绑的语言。 这意味着必须为每种语言提交一个版本。 选项1:滥用en.lproj目录 对于每种目标语言(lt,lv,et),我将该语言的string文件放到一个en.lproj目录中。 优点:使用一个众所周知的机制。 该应用程序只是认为它正在运行英语。 缺点:破坏我的本地化工具。 它混淆未来的维护人员,因此容易出错。 需要一个奇怪的构build设置。 选项2:滥用NSUserDefaults [AppleLanguages] AppleLanguages中的AppleLanguages对象包含要使用的应用程序的语言列表。 通过像这样设置,我可以从lt.lproj目录下载应用程序,例如立陶宛语: [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"lt", nil] forKey:@"AppleLanguages"]; (由于历史原因,我已经做了一个稍微更复杂的版本,以删除在某些版本的应用程序中被弃用的翻译,否则较旧的安装将拿起lproj目录,即使我不再捆绑与应用程序。 优点:使用正确命名的lproj目录。 与本地化工具很好地集成。 简单的设置。 只需要main.m一行来执行。 缺点:即使AppleLanguages键被许多人使用,该解决scheme使用它来加载不支持的语言,所以我担心我可能会在冰天雪地上滑冰。 乐问题 其他应用程序通常如何支持这些“不支持”的语言? 有没有办法与通常支持的语言一起支持它们? 你如何看待AppleLanguages黑客?

在Xcode中改变开发语言

我需要将西class牙语设置为iOS应用程序的开发语言。 我已经在使用Xcode 6,并且将应用程序的Info.plist ( CFBundleDevelopmentRegion )中的Localization native development region条目从“en”更改为“es”。 但是,在“项目”>“信息”>“本地化”中,英语仍然是“开发语言”。 如在信息属性列表中的关键参考所述 , CFBundleDevelopmentRegion指定默认语言。 我需要将西class牙语设置为默认语言,我错过了什么? 谢谢

如何将英语以外的语言设置为开发语言和基本本地化?

当iOS应用程序的Xcode项目是新创build的,在项目(不是目标)设置中,我们可以看到它默认启用了Use Base internationalization ,并且有2个文件被本地化为默认的English Development Language (一个用于Main.storyboard和LaunchScreen.storyboard ,两者都驻留在Base.lproj目录中)。 看下面的截图: (为了简单起见,我从现在开始只会提到Main.storyboard 。) 而在Main.storyboard的右侧面板的本地化部分,我们可以看到默认情况下已经检查了Base本地化,还有一个默认未选中的English本地化。 看下面的截图: 在目标的Info.plist ,有一个名为Localization native development region (即CFBundleDevelopmentRegion )的键,其默认值为en 。 看下面的屏幕截图: 如果我理解正确,使用这些默认设置,开发人员可以在Main.storyboard的Base本地化中编写英文,并且不要选中English本地化。 如果应用程序需要适应其他语言,开发人员可以在项目本地化设置中添加本地化,​​并在popup的对话框中selectMain.storyboard 。 看下面的截图: 以Chinese (Simplified)为例,这将产生一个新创build的zh-Hans.lproj目录,其中包含Main.strings文件。 (为简单起见,我将其称为Chinese而不是Chinese (Simplified) 。开发人员只需将该文件中的英文string翻译成中文(默认情况下zh-Hans.lproj目录中新创build的Main.strings从Main.storyboard中的Base.lproj复制所有英文文本)。 通过这些设置,AppStore上这个应用程序的描述中的Language字段将列出英语(来自Base本地化,因为英语是development language )和中文(来自Chinese本地化)。 在最终用户的设备上,如果系统语言为英文/中文(或英文/中文为首选语言),则应用程序将使用相应的语言资源(对于英文,使用Base本地化;对于中文,使用Chinese本地化)。 对于所有其他语言偏好,英语将作为后备语言,因为CFBundleDevelopmentRegion是en ,所以使用Base本地化。 所以我的第一个问题是,上述的理解是否正确? 总而言之, development language是英语,我们不需要为故事板文件启用English本地化。 只需使用Base本地化,并直接在故事板文件中写入英文。 我们只需要添加英文以外的其他语言的本地化。 (实际上如果启用English本地化似乎很麻烦,如果启用English本地化,那么我们需要在Base.lproj/Main.storyboard和en.lproj/Main.strings保留这两个文本。) 如果上述的理解是正确的,那么我的第二个问题就是,如何以相反的方式实现国际化? 也就是说,如果我想用Chinese作为development language ,在Base本地化中写中文,只添加中文以外的其他语言的本地化,那么在Xcode中可能和如何做到这一点? 我找不到在项目设置中改变development language的方法,以声称项目中的Base本地化是Chinese而不是English 。

程序化语言本地化,无需重启

我想用英语和阿拉伯语创build一个iPhone应用程序。 我检查了语言切换器的国际化文件,但是要实现这一点,我必须手动去改变iPhone的设置。 我不想这样做。 所以我正在计划在主屏幕上,我将有两个button,如英语和阿拉伯语。 如果用户点击阿拉伯文,我会有阿拉伯文字,如果用户select英文,应用程序将是英文的。 任何想法/build议如何做到这一点? 注意:我不想手动去改变语言。 编辑1 根据@Jano,我在下面做了。 创build新项目。 在本地化中添加阿拉伯语。 现在我有两个故事板和两个InfoPlist.strings文件。 添加Localization.h和.m文件,如答案中所示。 目录结构是MyProject-ar.lproj & MyProject-en.lproj Plist的内容是"myButton01" = "Back"; & "myButton01" = "ظهر"; First View Controller有两个button,分别是英文和阿拉伯文。 在这些button上调用操作。 – (IBAction)pressedEnglish:(id)sender { [Localization sharedInstance].fallbackLanguage = @"ar"; [Localization sharedInstance].preferredLanguage = @"en"; NSLog(@"pressed english"); } – (IBAction)pressedArabic:(id)sender { [Localization sharedInstance].fallbackLanguage = @"en"; [Localization sharedInstance].preferredLanguage = @"ar"; NSLog(@"pressed arabic"); } […]

基地国际化和多故事板不能正常工作

我正在玩多个故事板,并在xCode 4.6上进行本地化。 其实我 我做了: 1)编辑我的项目信息本地化:选中“使用基地国际化”,并添加语言:英语,中文 2)创build一个名为“anotherstoryboard.storyboard”的新故事板 3)使用Base国际化本地化我的新故事板(File Inspector / Localize – Localize)。 4)在我的应用程序委托,我dynamic加载我的本地化故事板,就像这样: UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"anotherstoryboard" bundle:nil]; 情况1: =>有效 对于我的新故事板(步骤3),我select本地化中文界面生成器cocoa触摸故事板 它的工作,但现在我必须保持本地化故事板,用IB编辑它们。 我不想要这样的行为,我只想使用base国际化和本地化.strings文件。 情况2: =>崩溃 对于我的新故事板(步骤3),我select本地化中文 – 可本地化的string 该应用程序崩溃,说它找不到我的故事板 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'anotherstoryboard' in bundle NSBundle </Users/me/Library/Application Support/iPhone Simulator/6.1/Applications/8E036C84-6058-4420-94B4-1726E1F686AD/HelloWorld.app> (loaded)' 我做错了什么? 为什么iOS没有在情况2中find正确的故事板?

为iPhone创build自定义国际键盘

是否有可能利用iPhone的国际键盘function,并创build一个自定义的键盘,可以在整个手机上使用,而不仅仅是在一个特定的应用程序? 类似于表情符号键盘,但我的印象是不知为什么原生iOS,只是默认禁用? 我已经看了很多这方面的问题,我只想得到一个明确的答案。