- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我曾经通过自定义函数使用 NSLocalizedString
。
例如,要访问Profile.strings
,我定义了这个函数:
func LocalizedProfile(key: String, comment: String?) {
NSLocalizedString(key, tableName: "Profile", comment: comment ?? "")
}
然后,像这样调用:
let localized = LocalizedProfile("提交", comment: "注册")
除了导出 XLIFF 外,此方法工作正常。
在 Xcode 6.3.2 上,执行 Export for localization
抛出错误:
为了获取错误信息,我通过命令行执行:
xcodebuild -exportLocalizations -localizationPath ./xliff -project MyApp.xcodeproj -exportLanguage ja
而且,我得到了这个错误:
文件/Users/mono/Documents/Git/MyApp/Localization.swift(第 29 行)中的错误条目:参数不是文字字符串。
定义自定义本地化方法对我来说非常有用,但我也想使用导出 XLIFF 功能。
有什么方法可以解决这个需求吗?
最佳答案
Export For Localization
和 xcodebuild -exportLocalizations
都通过查找 NSLocalizedString(_:tableName:bundle:value:comment:)
在代码中并使用传递给参数的静态值来创建适当的字符串文件。
这意味着您可以传递给 key
、comment
、value
和 tableName
的唯一值是字符串文字。
由于您在 NSLocalizedString(_:comment:)
周围使用包装函数来本地化您的字符串,因此 Xcode 唯一一次看到您调用 NSLocalizedString(_:comment:)
是在那个带有非字符串文字值的包装函数中,这是无效的。
你真正想做的是直接调用 NSLocalizedString(_:tableName:comment:)
。
或者,您可以在包装函数中调用 Bundle.localizedString(forKey:value:table:)
,但您必须为这些键值对手动创建自己的字符串文件。
/// - parameter comment: This value is ignored, but should be provided for
/// context at the call site about the requested localized string.
func LocalizedProfile(key: String, comment: String?) -> String {
return Bundle.main.localizedString(forKey: key, value: nil, table: "Profile")
}
关于xcode - NSLocalizedString 应该直接用于导出 XLIFF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084240/
我正在尝试本地化我的应用程序,但应用程序在遇到我使用 localizedStringWithFormat 的本地化字符串时崩溃了。这是一个例子: cell.productRangeLabel.text
是否可以将 NSLocalizedString 基础结构(基于 localized.strings)与自定义定义的“本地化”结合使用? 问题是,有些语言对男性和女性有不同的措辞。我想在首次启动时询问用
有没有办法在界面生成器中插入 NSLocalizedString。例如,将标签文本设置为本地化字符串而不是静态字符串? 我真的很讨厌为每个需要本地化字符串的项目创建一个属性。 最佳答案 这篇文章可能会
我遇到了一个问题,即 NSLocalizedString 总是返回大写的字符串,而不管其输入如何。本地化工作 我假设我做了一些导致这种情况的事情,但我似乎无法 弄清楚到底发生了什么变化。 这是我的代码
我正在学习翻译我的申请,但我有一个问题。 如果设备语言尚未放入 Localized.string 中,会发生什么情况?例如我想在英文文件中使用单词“Hello”我在西类牙语文件中添加 HELLO =
我是 Objective-C 的新手。这是我的问题: 在我的两个字符串文件中有以下两个条目: (德语字符串文件) /* Class = "IBUILabel"; text = "Import to D
有人知道为什么我的本地化字符串被忽略吗? 谢谢。 最佳答案 文件Settings.bundle/XX.lproj/Root.strings仅在Settings.bundle中使用。 如果您想使用 NS
我想知道是否有人知道如何连接我的应用程序语言和 NSLocalizeStrings,例如:我的应用程序在 fr、ru、ro 上,但用户设备在 en 上,当用户打开应用程序时,它在 en 上,但在应用程
我需要在点击按钮时使用本地化来切换语言。 我试过了,错误是元素不刷新。 -它们设置如下: self.lblSectionMyPictures.text=NSLocalizedString(@"lblS
我在 Prefix.pch 中像这样为 NSLocalizedString 构建了一个宏: #undef NSLocalizedString #define NSLocalizedString(key
我正在尝试以编程方式本地化我的项目,因为基础国际化不会自动在 Storyboard上选取我的菜单项。我想本地化数组中的字符串。我遇到的具体问题是这段代码: - (void)viewDidLo
我有 2 个本地化字符串文件,一个用于罗马尼亚语,一个用于英语。在这两个文件中我都有这一行: 英语: "invalidSum" = "Invalid amount" 罗马尼亚语: "invalidSu
我正在开发我的第一个 Swift 应用程序。现在我想使用 NSLocalizedString 翻译 BUTTON 中的文本,但我不知道如何快速编写它。 这是我的 else-if 函数: overrid
我想给标签一个包含多种字体的文本。这可以通过创建一个 NSMutableAttributedString 来完成。但是,我不确定如何格式化以下情况: String(format: NSLocalize
我的项目基本语言是英语。我的模拟器/电话是英文的。这些项目支持英语、法语、荷兰语。 当应用程序首次启动时,即使手机是英文的,应用程序始终是法语。 当我调试并打印出这一行时: [NSLocale pre
我误解了 NSLocalizedString。 我有一个包含法语和英语 .strings 文件的项目。在项目目标 - 本地化中,我有 6 个法语和英语文件。 在 english.strings 文件中
好吧,我正式大吃一惊。前段时间我开始了一个 IOS 项目,一开始在本地化方面有点杂乱无章,因为我还不知道如何正确地做到这一点。 现在我决定从头开始进行本地化,因此丢弃了所有 .strings 文件,并
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我在调试我的 NSLocalizedString 实现时遇到了一些问题。应该很简单,但无论我做什么,函数只返回 KEY 字符串。 我正在使用 XCode 4.5 和 iOS6,所以我: 添加了一个名为
我有英文、日文、韩文的 Localizable.strings 文件。我无法从韩国文件中加载一些单词。我也检查了拼写、大写字母或小写字母。它是正确的。我还清理了项目,重置了模拟器并删除了设备上的应用程
我是一名优秀的程序员,十分优秀!