Tag: 本地化

本地化和CocoaPods

我有一个使用CocoaPods的项目。 因此,我有一个包含两个项目的工作区:mine和Pods。 豆荚包含我想本地化的代码,并且我在豆荚中创build了.strings文件。 但是, NSLocalizedString无法加载这些string。 我怀疑会发生这种情况,因为.strings文件不在主包中,但没有Pod包,因为它被编译到静态库中。 有没有比在我的主要项目中更好地本地化CocoaPods项目中的代码?

Xcode本地化让我疯狂! 不加载Storyboard

这个问题已经过去了2天,这让我很吃惊。 我试图本地化我的iOS应用程序,但对于我的生活,我无法得到它的工作。 当我尝试一个空白的项目,但不是我当前的项目时,它的工作很容易。 我已经使用“+”在本地化中添加了语言,我已经本地化故事板,但是当我在模拟器或设备上查看时,我仍然可以看到英文版本。 事实上,它甚至不是英文的,因为如果我改变Maintoryboard(英文),我没有看到设备的变化…我仍然看到最初的文本。 我试过重新设置模拟器,删除了应用程序等,没有运气。 我已经恢复到备份尝试再次添加一切。 没有运气。 有人可以帮忙吗? 我知道这还不算什么,但我不知道该怎么解释才能帮助你。 所以请让我知道如果我错过了一些信息。 仅供参考,当我查看应用程序在开发人员的文件夹,我最初没有一个en.lproj时,似乎我应该有一个默认?

增量本地化如何工作?

我正在尝试构build我的第一个本地化应用程序。 我使用NSLocalizedString转换代码中的所有string(用于使用genstrings工具)。 现在我碰到了ibtool 。 增量本地化如何工作? 关于手册页,我应该写这样的东西: $ ibtool –previous-file path/to/prev.xib \ –incremental-file path/to/inc.xib –localize-incremental \ –write path/to/new.xib mod.xib 我在哪里得到增量文件? 为了我的理解,如果我使用版本控制(git / svn),“旧”文件是在几个提交前,增量文件是差异和path/到/ new.xib是新生产的xib文件。 mod.nib对我来说是一个谜。 任何人都可以解释我是如何工作的? 另外 – 如果没有以前的版本可用(即不增量,但初始本地化),我如何开始xib的本地化?

一个iOS应用程序中的多个Localizable.strings文件

是否有可能有多个组件在应用程序中具有单独的本地化? 例如,我想本地化我的应用程序中的string,但也使用本地化的ShareKit(所以我的包将包含2个Localizable.strings在不同的位置)。 因此,ShareKit包含像en.lproj和de.lproj这样的包含Localizable.strings文件的文件夹,我想为我的项目的其余部分创build相同的文件夹,但是保持它们分开。 我试图把他们分开,导致我的应用程序的string不被使用。 有任何想法吗?

将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本地化 – 使用新string更新Localizable.strings

我已经search谷歌和StackOverflow,并仍然没有明确的答案,一个简单的自动化的方式做到这一点,但这里的情况是: 我有一个应用程序1000本地化到en,fr,de,es,它的string。 我构build了一个新的function,使10个明显新的NSLocalizedString()键。 我只想把这10个新的string添加到文件的末尾: en.lproj / Localizable.strings fr.lproj / Localizable.strings es.lproj / Localizable.strings de.lproj / Localizable.strings it.lproj / Localizable.strings genstrings将检索所有1010个不同的string。 这是一个痛苦,因为我需要“大海捞针”每次更新时find这10个string。 更新19-SEP-2014 – XCode 6 – 苹果终于发布了对XLIFF导出和导入.strings文件的支持XCode 6有什么新function? 本土化 Linguan(v1.1.3)虽然它是一个可爱的工具,但大多数时候它已经开始成为另一种意义上的工具。 它合并了更改,但某些string在合并时不能正确匹配,所以每次扫描源时,都会创build100个新的重复键以及10个string,因此它正在进行更多的工作。 FileMerge如下build议尝试在新旧版本的genstrings输出文件之间进行区别。 输出的string按字母顺序sorting,所以在1000个string中分散的10个string意味着需要查看200个不同的string。 它始终与/*…*/和"…" = "…"匹配,并说…已经更新。 它没有更新,只是转移到文件中的新位置。 越来越多,它看起来像我将不得不写一个自定义工具。 MacHG + FileMerge在一个侧面说明,由于一些奇怪的原因,不喜欢使用Localizable.strings的工作副本做出差异。 左窗格和右窗格都显示为空。 更新:在一些变化集被保存为UTF-16和一些UTF-8正在拧它能够做一个适当的差异的变化。 Bash脚本+ FileMerge我已经写了下面的脚本,以帮助维护我的英文参考文件后每次添加新的NSLocalizedString条目: #LOCALISATION UPDATE SCRIPT # #This will create a temporary copy […]

使用Objective-C在iPhone上本地化dynamic复数名词消息(例如,“处理5个项目”)

在我目前的应用程序中,我有显示消息的代码,例如“已处理的5个项目”。 要保持语法正确,即是否应该是“5 Item”或“5 Items”,我使用下面的代码: int numItems = 5; NSString *myString = [[NSString alloc] initWithFormat:@"%d Item%@ Processed", numItems, (numItems == 1 ? @"" : @"s")]; 这现在工作正常。 但是我正在本地化我的应用程序,并且希望确保文本在我正在翻译应用程序的所有语言的文法上是正确的。 我可以做这样的事情: int numItems = 5; NSString *myString = (numItems == 1 ? NSLocalizedStringWithTable(@"%d Item Processed", @"myApp", @"singular version") : NSLocalizedStringWithTable(@"%d Items Processed", @"myApp", @"plural version")); 但是,并不是所有的语言对于复数操作都有相同的规则! 例如(在这里原谅我非常具体的例子),用最后一位数字1(即21,31,但不是 11)的数字进行修饰的名词采用主格,以2-4结尾的数字采用所有格的单数,并且5+采用属格复数的情况。 这将需要更严肃的逻辑来处理如何以语法正确的方式复数化一个特定的名词,而这个逻辑与英语逻辑不相符合。 […]

无法本地化iOS应用包显示名称

我已经跟着一些SO问题的答案来本地化我的应用程序的名称。 InfoPlist.strings(Base): CFBundleDisplayName = "Name In English"; CFBundleName = "Name In English"; InfoPlist.strings(阿拉伯文(沙特阿拉伯)): CFBundleDisplayName = "Name In Arabic"; CFBundleName = "Name In Arabic"; 我也试着在CFBundleDisplayName和CFBundleName周围加引号 InfoPlist.strings文件位于我的app.next的Info.plist文件的根目录中,但在本地化后,它被移到Base.lproj dir和ar-SA.lproj目录。 但是,我的应用程序没有使用iPhone主屏幕图标下的本地化名称。

iOS应用程序的本地化应用程序图标

我可以通过将它们放在.lproj目录中来本地化图像,但应用程序图标不能通过相同的方法进行本地化。 有什么方法来本地化应用程序图标? 谢谢。