使用 NSLocalizedString 或 .xib 进行本地化
Posted
技术标签:
【中文标题】使用 NSLocalizedString 或 .xib 进行本地化【英文标题】:Localization with NSLocalizedString or in .xib 【发布时间】:2015-07-02 14:45:58 【问题描述】:我正在寻找我在 Internet 上找不到的信息。我想知道 NSLocalizedString 出现在哪个 ios 版本中? (也许从 iOS 的第一个版本就已经存在了?)
我也想知道在什么情况下在 .xib 中使用本地化,在什么情况下使用 NSLocalizedString?
我问这个问题是因为我正在开发一个在 .xib 文件和 NSLocalizedString 中使用本地化的 iOS 项目,我真的不知道为什么要使用这两种方法......(这是一个旧项目,这就是为什么我要问第一个问题^^)
最后一个问题,对于一个新项目,这两种方法中的哪一种是你的首选?
抱歉所有这些问题,感谢您的回答! =)
【问题讨论】:
【参考方案1】:当我们想要本地化 UI 上的元素时,使用 xib 文件进行本地化,例如,当您想要显示具有特定 UIButton 的本地化文本的不同图像时。 您可以使用本地化的 xib 文件来实现此目的。 每种语言都有单独的 xib 文件。 当您从控制器 NSLocalizedString 在 UI 上设置任何文本时。 我希望这会有所帮助。
【讨论】:
【参考方案2】:NSLocalizedString
was first available in 10.0
所以我使用NSLocalizedString
以编程方式进行本地化,因为这样我可以将所有字符串放在一个位置。
而不是通过 .xib
本地化生成,因为这样您将拥有每个 xib 的字符串文件。
但是,如果您有一个 .xib
并且您没有以编程方式修改(即您没有将自定义类设置为 file's owner
),那么您将不会能够以编程方式设置NSLocalizedStrings
。在这种情况下,您将不得不通过.xib
生成字符串文件。
此外,访问与.xib
关联的字符串文件稍微困难一些,因为它与.xib
直接连接
【讨论】:
【参考方案3】:NSLocalizedString 从 iOS 1 开始就存在。
基本上,所有动态创建的字符串都需要 NSLocalizedString。
在一个新项目中,我建议使用 AutoLayout 和 Base Localization。 有一个 .xib 文件,所有本地化和布局调整都在运行时通过 .strings 文件执行
【讨论】:
【参考方案4】:可能这个问题已经死了,但我跳到这里寻找一种本地化 xib 字符串的方法,这个页面是第一个结果。
您可以同时使用 NSLocalizedString 和 xib。看看这个答案:https://***.com/a/21443515/907720在这里详细讨论:https://medium.com/zendesk-engineering/ios-how-to-add-adaptive-constraints-to-support-a-universal-app-273663475b12
【讨论】:
以上是关于使用 NSLocalizedString 或 .xib 进行本地化的主要内容,如果未能解决你的问题,请参考以下文章
Objective C 中的 NSLocalizedString
变量 NSString anos 与 NSLocalizedString Xcode 一起使用
NSLocalizedString - 强制国家特定的字符串文件