使用 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】:

NSLocalizedStringwas 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

强制NSLocalizedString使用特定语言

变量 NSString anos 与 NSLocalizedString Xcode 一起使用

NSLocalizedString - 强制国家特定的字符串文件

UILocalNotification NSLocalizedString 使用设备的语言

NSLocalizedString 问题