我有一个有一些意见的iPhone故事板。 例如,一个导航项目标题被命名为News ,应该翻译为其他语言。 当我为故事板添加一个新的本地化时,它为我的当前新语言的故事板创build了一个副本。 在这里,我可以改变导航项目的标题,但对我来说似乎不是很有用。 如果我的故事板包含100个视图,并且需要支持10种语言,该怎么办? 如果我需要改变原始故事板中的某些内容,则必须对所有语言进行相同的更改。 这似乎很奇怪。 在哪些情况下这可能有用? 我能做些什么呢? 我应该只有英文故事板,并使用NSLocalizedString手动翻译ViewController中的每个元素?
我曾尝试使用一个variables作为input参数到NSLocalizedString,但我回来的是input参数。 我究竟做错了什么? 是否有可能使用一个可变的string值作为NSLocalizedstring的索引? 例如,我有一些我希望显示本地化版本的string。 但是,我想使用一个variables作为NSLocalizedString的参数,而不是一个常量string。 同样,我想在NSLocalizedString的参数中包含格式化元素,所以我将能够使用相同的格式参数来检索string的本地化版本。 我可以做以下事情: 情况1:variablesNSLocalizedstring: NSString *varStr = @"Index1"; NSString *string1 = NSLocalizedString(varStr,@""); 情况2:格式化的NSLocalizedString: NSString *string1 = [NSString stringWithFormat:NSLocalizedString(@"This is an %@",@""),@"Apple"]; (请注意,variables可以包含任何内容,而不仅仅是一组固定的string。) 谢谢!
TL; DR: 似乎本地化不适用于xCode 6.1和8.1模拟器。 解决方法: 进入“编辑scheme”>>“运行”(侧栏)>>“选项”标签>>“应用程序语言” select您希望在模拟器上运行应用程序的语言。 很长的故事: 我已经更新xCode 6.1。 该更新删除了iOS 7.x模拟器,只留下了8.x模拟器。 我已经完成了以下步骤: 我已经安装了7.x模拟器 清理了这个项目 从模拟器中删除应用程序 删除我的项目的派生文件夹 该项目支持英文和日文。 在7.1模拟器(5s)上,本地化工作正常。 在8.1模拟器(5s)它不起作用。 我猜苹果打破了模拟器的东西,因为它在真实的设备上工作。 任何人都会遇到类似的问题吗? 编辑 这似乎是一个模拟器中的错误,参考: 苹果开发者论坛
我(像所有其他人)使用NSLocalizedString本地化我的应用程序。 不幸的是,有几个“缺陷”(不一定是NSLocalizedString本身的错误),包括 Xcode中的string没有自动完成。 这使得工作不仅容易出错,而且令人厌烦。 你可能最终会重新定义一个string,因为你不知道一个等价的string已经存在(即“请input密码”与“先input密码”) 与自动完成问题类似,您需要“记住”/ copypaste注释string,否则genstring最终会以一个string的多个注释 如果您想要在使用genstring之后已经对某些string进行了本地化,则必须小心谨慎,以免丢失旧的本地化版本。 相同的string分散在整个项目中。 例如,您在任何地方都使用了NSLocalizedString(@"Abort", @"Cancel action") ,然后Code Review会要求您将该string重命名为NSLocalizedString(@"Cancel", @"Cancel action")以使代码更一致。 我所做的(在做了一些search之后,我觉得很多人都这样做)是有一个单独的strings.h文件,我定义了所有的本地化代码。 例如 // In strings.h #define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil) // Somewhere else NSLog(@"%@", NSLS_COMMON_CANCEL); 这基本上提供了代码完成,一个地方改变variables名称(所以不再需要的genstring),和一个唯一的关键字自动重构。 然而,这是以一大堆没有内在结构的(即像LocString.Common.Cancel或类似的东西)结束的代价为代价的。 所以,虽然这工作得很好,但我想知道你们是如何在你的项目中做到的。 有没有其他的方法来简化使用NSLocalizedString? 有没有可能封装它的框架?
有没有一个Swift等效的NSLocalizedString(…) ? 在Objective-C ,我们通常使用: NSString *string = NSLocalizedString(@"key", @"comment"); 我怎样才能在Swift中实现相同? 我find了一个函数: func NSLocalizedString( key: String, tableName: String? = default, bundle: NSBundle = default, value: String = default, #comment: String) -> String 但是,这很长,不方便。
我试图使用NSLocalizedString本地化我的应用程序。 当我导入XLIFF文件时,大多数工作像一个魅力,但一些不这样做,一些string没有本地化。 我注意到,问题是从NSLocalizedString里面包含一些variables,如: NSLocalizedString(" – \(count) Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare") 要么 NSLocalizedString("Notifica per \(medicina!) della prescrizione \(prescription!)\nMemo: \(memoTextView.text)", comment: "Messaggio della Local Notification") 也许这不是这种东西的正确语法。 有人可以解释我如何迅速做到这一点? 非常感谢你。